Build a Rabbit Population Simulation
Model rabbit population dynamics using stocks, flows, and feedback loops.
Introduction
30 Second Summary
Have you ever wondered what would happen to a population of rabbits if you just let them loose in a field with limited food? Would they grow forever, crash, or find a balance?
In this project, you will build a visual population simulation that models how rabbits grow, decline, and stabilize over time. You will drag and drop building blocks to define the rules of your system, then press play and watch what happens.
What You'll Build
A browser-based population simulation built with Insight Maker that uses stocks, flows, and variables to model rabbit population dynamics over time.
By the end of this project, you'll have:
- A working Insight Maker model with stocks (Rabbits), flows (Births, Deaths), and variables (Birth Rate, Death Rate, Carrying Capacity).
- Time series charts showing population dynamics across different growth patterns.
- Interactive sliders that let you run "what if" scenarios and see results update in real time.
- Secret Mission: Add wolves as a predator and watch both populations oscillate in a classic predator-prey cycle.
Are there any prerequisites?
None. You just need a web browser. Insight Maker is free and runs entirely in your browser with no downloads or plugins required.
Set Up Your Insight Maker Account
Before you can build your rabbit population simulation, you need a workspace to build it in.
Insight Maker is a free, browser-based simulation tool. It runs entirely in your web browser with no downloads or plugins needed.
In this step, get ready to:
- Create your free Insight Maker account.
- Create a new empty model.
- Learn the key parts of the interface (toolbar, canvas, sidebar).
Create your free account
- Open your web browser and go to the Insight Maker sign-up page:
- https://insightmaker.com/user/register
- Sign up with Google, or enter your email address, password, and display name in the registration form.
- Click the sign-up button to create your account.
Why Insight Maker?
Insight Maker is purpose-built for simulation modeling. It teaches the actual concepts that professional simulation tools use (stocks, flows, feedback loops) through a visual drag-and-drop interface.
It is completely free and runs in your browser, so there is nothing to install.
Create a new model
Once you have signed up, you will land on the Insight Maker dashboard.
- Click to create a new Insight (this is what Insight Maker calls a model).
You should see a blank canvas with a toolbar at the top. The toolbar contains options like Add Primitive and Time Settings.
Don't see the toolbar?
If the top toolbar is hidden, press Ctrl+L (Windows) to open Time Settings directly. The toolbar should appear once you interact with the canvas.
If you are stuck on the dashboard and cannot find where to create a new model, look for a prominent button or link that says something like "New Insight" or "Create". Help me find the create button on the Insight Maker dashboard.
Familiarize yourself with the interface
Your empty canvas has three main areas you will use throughout this project.
- The toolbar at the top contains buttons for adding primitives (Stocks, Flows, Variables, Links) and running simulations.
- The canvas is the large open area where you drag and drop your building blocks.
- Try right-clicking anywhere on the canvas. A context menu will open that lets you select a primitive to insert into the model.
- The sidebar appears when you click on a primitive. This is where you edit its properties (name, initial value, equations).
What are primitives?
Primitives are the basic building blocks of any Insight Maker model. The ones you will use in this project are Stocks (things that accumulate), Flows (things that move material in or out of stocks), Variables (constants or calculated values), and Links (connections that let primitives reference each other).
Your workspace is ready. Next up, you will start placing building blocks on this canvas to model how a rabbit population grows over time.
Build the Basic Rabbit Population
Your Insight Maker account is ready and you have a blank model canvas open. Now it is time to bring your first simulation to life.
In this step, you will create the building blocks of a rabbit population model. You will add a stock to hold the rabbit count and a flow to represent births, then press play and watch what happens when rabbits reproduce without any limits.
In this step, get ready to:
- Create a stock and a flow to model rabbit reproduction.
- Run your first simulation and observe exponential growth.
- Reflect on why unlimited growth is unrealistic.
Create the Rabbits stock and Births flow
A stock is a container that holds a quantity over time. In your simulation, the stock will hold the number of rabbits at any given moment.
- Click Add Primitive in the toolbar at the top of your canvas.
- Select Stock from the menu.
- A stock primitive appears on your canvas. Click on it to open the sidebar on the right.
- Change its name to Rabbits.
- Set the Initial Value to 10.
What is a stock?
A stock stores a material. It could be water, money, or in this case, rabbits. The initial value of 10 means your simulation starts with 10 rabbits in the population.
You can reference a stock's value in equations using bracket notation like [Rabbits]. You will use this in the next step.
A flow moves material into or out of a stock. The Births flow will add new rabbits to your population each time period.
- Click Add Primitive in the toolbar again.
- Select Flow.
- Create a flow going from empty space into the Rabbits stock. Click on an empty area of the canvas first, then drag to the Rabbits stock and release.
- Click on the new flow to open its sidebar. Change its name to Births.
- Set the Flow Rate to 0.5*[Rabbits].
What does this flow rate mean?
The equation 0.5*[Rabbits] means: every time period, half the current rabbit population produces new rabbits. If there are 10 rabbits, 5 new ones are born. If there are 100 rabbits, 50 new ones are born.
The more rabbits there are, the faster new rabbits appear. This is the recipe for exponential growth.
Why does the flow already know about Rabbits?
A flow is automatically aware of the stock it connects to. Because Births flows into the Rabbits stock, it can reference [Rabbits] in its equation without needing an explicit link.
You should now see a stock labeled Rabbits with an arrow (the Births flow) pointing into it on your canvas.
Don't see the flow connected to your stock?
Make sure the arrow's endpoint touches the Rabbits stock directly. If the flow is floating disconnected, delete it (click on it and press Delete), then try again. Start your click in empty space and drag until the endpoint snaps onto the Rabbits stock.
help me connect my flow to my stock in Insight Maker
Run the simulation and observe exponential growth
Your model has rules now, but rules alone do not produce results. You need to tell the simulation engine how long to run and then press play.
- Click the Time Settings button in the toolbar.
- Set Simulation Length to 20.
- Set Time Units to Years.
- Close the Time Settings window.
- Click the Run Simulation button in the toolbar.
What do these time settings do?
Simulation Length tells the engine how many time units to simulate. Time Units defines what each unit represents. With these settings, the engine will apply your flow rate equation 20 times (once per year) and plot the results.
A results window appears with a time series chart. You should see the rabbit population explode upward in a classic exponential curve, starting from 10 rabbits and growing faster and faster with no limit.
Seeing an error instead of a chart?
Double-check that the Flow Rate field for Births is exactly 0.5*[Rabbits] with square brackets around Rabbits. The name inside the brackets must match your stock's name exactly, including capitalization.
Also confirm that the Births flow is connected to the Rabbits stock (the arrow endpoint touches the stock).
help me fix my Insight Maker simulation error
Understand what just happened
What did you just build?
You defined a single rule: rabbits reproduce at a rate proportional to how many there are. The simulation engine applied that rule repeatedly over 20 time steps.
The result is unchecked exponential growth. Starting from 10 rabbits, the population doubles roughly every 1.4 years. By year 20, the number is enormous.
This is unrealistic because no real environment has unlimited food or space. In the next step, you will add deaths and a carrying capacity to fix this.
Your simulation proves that a single birth rule with no limits produces runaway growth. In the next step, you will add deaths and a carrying capacity so the population levels off at a realistic number.
Add Environmental Limits
In the last step, you watched your rabbit population explode with unchecked exponential growth. That's an interesting result, but no real environment has unlimited resources.
In the real world, food runs out and animals die. In this step, you'll add deaths and a carrying capacity limit to your model so the population behaves more like a real ecosystem.
In this step, get ready to:
- Add a Deaths flow to model rabbits dying over time.
- Add a Carrying Capacity variable to limit population growth.
- Observe the S-curve as the population stabilizes at equilibrium.
Add a Deaths flow
Right now, rabbits in your model live forever. That's why the population grows without limit. You need a way for rabbits to die.
- Select Add Primitive in the toolbar and choose Flow.
- Create the flow going from the Rabbits stock to empty space (click and drag from Rabbits outward, leaving the end unconnected).
- Name the flow Deaths.
- Click on the Deaths flow and set its Flow Rate to 0.1*[Rabbits] in the sidebar.
What does this flow rate mean?
The equation 0.1*[Rabbits] means 10% of the current rabbit population dies each time period. The more rabbits there are, the more die in absolute numbers.
- Click Run Simulation in the toolbar.
The population still grows because births outpace deaths, but the curve rises more slowly than before.
Seeing an error about missing connections?
Make sure your Deaths flow starts from the Rabbits stock. A flow is automatically aware of its start stock (called Alpha) and end stock (called Omega), so it can reference [Rabbits] in its equation without a separate link.
If you still see an error, double-check the spelling in your equation matches the stock name exactly, including capitalization. Help me fix my Deaths flow equation
Add carrying capacity
Even with deaths, the population still grows forever. In reality, an environment can only support a limited number of animals. This limit is called the carrying capacity.
- Select Add Primitive in the toolbar and choose Variable.
- Name it Carrying Capacity.
- Click on the Carrying Capacity variable and set its Equation to 500 in the sidebar.
What is carrying capacity?
Carrying capacity represents the maximum population an environment can sustain. Think of it as the limit on how many rabbits can survive given the available food, water, and space.
Setting it to 500 means your simulated environment can support about 500 rabbits at most.
Now you need to connect the Carrying Capacity variable to the Births flow so the equation can reference it.
- Make sure Links is selected in the toolbar.
- Hover over the Carrying Capacity primitive until a blue arrow appears.
- Click and drag the blue arrow to the Births flow, then release.
Why do I need a link?
In Insight Maker, a link makes two primitives aware of each other. Without a link connecting Carrying Capacity to Births, the Births equation cannot reference [Carrying Capacity] and will produce an error.
Flows are automatically aware of their start and end stocks, but external variables always need an explicit link.
- Click on the Births flow.
- Update its Flow Rate to the following equation:
0.5*[Rabbits]*(1-[Rabbits]/[Carrying Capacity])
What is the logistic growth equation?
This is the logistic growth equation. The key part is (1-[Rabbits]/[Carrying Capacity]).
When the population is small (say 10 rabbits out of 500), this factor is close to 1, so growth is nearly unrestricted. As the population approaches 500, this factor drops toward 0, slowing growth to a crawl. At exactly 500, growth stops completely.
Getting an error when you run the simulation?
The most common cause is a missing link. Make sure you see a visible arrow from Carrying Capacity to the Births flow on your canvas.
Also check that [Carrying Capacity] in your equation matches the variable name exactly, including the space between the two words. Help me fix my Births flow equation
Run and observe the S-curve
- Click Run Simulation in the toolbar.
You should now see an S-shaped curve in your results window. The population grows rapidly at first, slows down as it approaches 500, then levels off at equilibrium.
Why is this more realistic?
The S-curve (also called logistic growth) is how most real populations behave. Early on, resources are abundant and growth is fast. As the population fills its environment, competition for food increases and growth slows.
The flat top of the curve is the equilibrium point. Births and deaths balance each other out, and the population stays steady around 500.
✔️ I see the S-curve leveling off around 500
Your model is working correctly. The population stabilizes at the carrying capacity you defined.
ⓧ My population still grows without limit
- Check that the link from Carrying Capacity to Births is visible on the canvas (a line with an arrow).
- Click on the Births flow and verify the Flow Rate reads exactly 0.5*[Rabbits]*(1-[Rabbits]/[Carrying Capacity]).
- Make sure your Carrying Capacity variable has its Equation set to 500, not a blank field.
After fixing, click Run Simulation again.
Your population model now behaves realistically. Next up, you'll add interactive sliders so you can ask "what if" questions and watch the simulation respond in real time.
Experiment with Sliders
Your simulation now tells a realistic story. The S-curve shows how rabbits grow quickly at first, then slow down as they approach the environment's limit.
But what if the environment could support 2000 rabbits instead of 500? What if the birth rate dropped? Right now, answering those questions means manually editing equations and rerunning the simulation each time. Sliders let you answer them instantly.
In this step, get ready to:
- Enable interactive sliders on your model's parameters.
- Run "what if" scenarios by adjusting slider values in real time.
- Observe how small parameter changes create dramatically different population outcomes.
Add sliders to your model
Sliders give you a dial for each parameter so you can adjust values and instantly see the effect on your simulation results.
- Click on the Carrying Capacity variable (the oval) on your canvas.
- In the sidebar on the right, select Enable value slider.
- Set the minimum to 100 and the maximum to 2000.
- Click on the Births flow on your canvas.
- In the sidebar, select Enable value slider for Births as well.
- Click on an empty area of the canvas so nothing is selected.
You should now see sliders for both Carrying Capacity and Births in the sidebar.
What are sliders in Insight Maker?
Sliders are interactive controls that let you adjust a primitive's value without editing its equation. When you move a slider, Insight Maker immediately reruns the simulation and updates the results.
The min and max values you set define the range you can explore. For Carrying Capacity, the range of 100 to 2000 lets you test environments from very small to very large.
Don't see sliders in the sidebar?
Make sure you clicked on an empty area of the canvas. Sliders only appear in the sidebar when no primitive is selected.
If you still don't see them, click on the primitive again and confirm that Enable value slider is checked in the sidebar.
Help me find the sliders in my Insight Maker sidebar.
Run experiments with your sliders
Now that you have sliders, every adjustment becomes a "what if" question that the simulation answers instantly.
- Click the Run Simulation button in the toolbar.
- A results window appears with your familiar S-curve chart. The sliders in the sidebar are now automatically linked to this results window.
- Move the Carrying Capacity slider down to 100.
- Watch the chart update immediately. The population now levels off at 100 instead of 500.
- Move the Carrying Capacity slider up to 2000.
- The population takes longer to level off but eventually stabilizes at 2000.
- Try different combinations. What happens with a high birth rate but low carrying capacity? What about a low birth rate and high carrying capacity?
What should I see?
Every time you move a slider, the simulation reruns immediately and the results window updates with a new chart. You should see the population curve change shape and stabilize at different levels depending on your slider positions.
With a low carrying capacity and high birth rate, the population shoots up quickly but hits its ceiling fast. With a high carrying capacity and low birth rate, growth is slow but the population eventually reaches a much higher level.
Chart not updating when you move sliders?
Make sure you ran the simulation AFTER enabling the sliders. The sliders are automatically linked to the most recent results window. If you enabled sliders after running, close the results window and click Run Simulation again.
Help me get my sliders to update the simulation results.
Reflect on the power of simulation
Why does this matter?
Every time you moved a slider, you asked a "what if" question and the simulation answered it instantly. You did not need to rebuild anything or wait for real-world results.
This is the core power of simulation. You can safely experiment with a system without real-world consequences. No actual rabbits were harmed.
Real scientists, engineers, and policymakers use this exact technique to test decisions before implementing them. Climate models, disease spread models, and economic forecasts all work the same way.
Secret mission
Add a Predator
Your rabbit population stabilizes nicely with carrying capacity. But what happens when you introduce a predator? Add wolves to your model and watch both populations oscillate in a never-ending cycle of boom and bust.
Clean Up Your Resources
Clean Up Your Resources
This project runs entirely in your browser using Insight Maker, which is free. There are no ongoing costs regardless of whether you keep or delete your model.
Decide whether to keep your model for future experimentation or remove it entirely.
Resources you used:
- Your Insight Maker model (rabbit population simulation with predator-prey dynamics).
Keep everything running
No action needed. Choose this if you want to keep experimenting with your simulation or share it with others.
- Your model stays saved in your Insight Maker account indefinitely at no cost.
- You can return to it anytime by logging into Insight Maker and opening it from your dashboard.
- Your free Insight Maker account remains active with no charges or expiration.
Pause - I'll come back to this later
Since Insight Maker is entirely free and browser-based, there is nothing to pause. Your model is already stored at no cost.
- Log out of Insight Maker if you like. Your model will still be there when you return.
- No processes are running locally or in the cloud. Nothing consumes resources while you are away.
Delete - I don't want to use this again
Remove your model if you no longer want it in your account. There is no cost benefit to deleting since everything is free.
- Log into Insight Maker at insightmaker.com.
- From your dashboard, locate the rabbit population model you created.
- Open the model, then look for a delete or remove option to permanently remove it from your account.
Your account is free forever
Even if you delete your model, your Insight Maker account remains active at no cost. There is no need to delete your account unless you want to.
Nice Work!
Nice Work!
You just built a population simulation from scratch and used it to explore how systems behave over time. You now know what a simulation is: a simplified model of reality, defined by rules, run over time, that lets you safely experiment with "what if" questions.
You learned how to:
- Built a population simulation using visual building blocks (stocks, flows, variables, and links) to define rules that govern a system.
- Observed three different dynamics: exponential growth, logistic S-curve growth, and predator-prey oscillation.
- Used interactive sliders to run "what if" scenarios and saw how tiny parameter changes cascade into dramatically different outcomes.
- Secret Mission: Added wolves as a predator species and observed the classic Lotka-Volterra oscillating dynamics between two interacting populations.
Ready to quiz yourself?