Basic Population Model

We will begin with a basic population model, in which some population will grow over time. In this model we will use a stock to represent the number of individuals at any given time, and two flows to represent change in that stock: one for births, and one for deaths. We will use terms to describe the rates of births and deaths in these populations.

  1. Open the component palette by clicking on the toolbar.
  2. Begin by adding a Population stock to the canvas:
    1. Click the stock icon on the component palette.
    2. Click on the middle of the canvas to place the stock.
    3. Enter in ‘Population’ for the stock name.
  3. Next, add a Births flow to the canvas:
    1. Click on the flow icon on the component palette.
    2. Click on the canvas to the left of the Population stock to place the tap.
    3. Enter in ‘Births’ for the flow name.
    4. Grab the cloud symbol at the hollow end of the flow and drag it on top of the stock until it ‘sticks’.
  4. Next, add a Deaths flow to the canvas:
    1. Click on the flow icon again on the components palette.
    2. Click on the flow to the right of the Population stock to place the drain.
    3. Enter in ‘Deaths’ for the flow name.
    4. Grab the cloud symbol at the solid end of the flow and drag it on top of the stock until it ‘sticks’. You model should now look like:

    1. Create a term to hold the birth rate value for the population:
      1. Click the term icon on the component palette.
      2. Click above the Births tap on the canvas to place the term.
      3. Enter in ‘birth rate’ for the term name.
      4. Double click on the term. In the large white box under ‘birth_rate=’ enter in a birth rate for your population, say, 0.8
    2. Now, we want to set Births=Population*birth_rate. But before we can do this, we need to connect both birth_rate and Population to Births, because the Births tap is dependent on the birth_rate and Population components.
      1. Open the components window and select the arrow icon
      2. Click on the birth rate term, then click (don’t drag) on the Births flow. There should now be a red arrow connecting birth_rate to Births

    Note that now when you double click on the Births flow, birth_rate is now a variable in the top left pane that can be used in the Births algebraic formula.

    1. Next, in a similar manner we’ll connect Population to Births: Select the arrow component, click on the Population stock, then click on the Births flow. There should now be a red arrow connecting Population to Births.

    1. Both birth_rate and Population are variables that can used to create the Births formula, so now we can create the formula:
      1. Double click on Births. In the large white box under ‘Births=’ you will enter in the formula for Births. To add variables to the formula, click on the variable name in the top left pane of the properties window.
      2. So first click Population in the left pane. ‘Population’ will appear in the large white formula box, representing whatever value is coming out of the Population stock.
      3. Next manually type in ‘ * ‘ after Population to represent multiplication.
      4. Finally click on birth_rate in the left pane. Be sure to click “uniflow” rather than biflow, as this flow will only add individuals to the population. A biflow, rather, could add or subtract from the stock it is connected to. Your window should look like this:

    1. Next, you will want to apply the same steps for deaths:
      1. Connect the death rate term to the Deaths flow with an arrow.
      2. Connect the Population stock to the Deaths flow with an arrow.
      3. Double-click on the Deaths flow and enter the following equation: Deaths = population*mortality_rate. This flow should also be a uniflow, rather than a biflow.
    2. Now we need to set initial conditions for your population stock, AKA we need to decide how many individuals are in this population at the beginning of the model, before it is run. For the sake of this model, let’s say we start with 50 individuals.
      1. Right click on “Population.”
      2. In the “INITIAL Population” window, type 50
      3. Be sure to check the “non negative” box at the bottom of the window, as this particular currency (the thing being modeled, which in our case in a population of individuals) can not be less than zero. Your window should look like this:

    1. Now our model should be ready to run! Your model, when finished, should look like this:

    1. Now lets add a graph so we can see our population change over time.
      1. Click on the graph icon on the components palette
      2. Click on the canvas below the rest of the model to place the graph.
      3. Enter “pop” into the “graph name” window
      4. You’ll notice that in addition to the icon for the graph on the model canvas, a graph display appears on the Dashboard. Double click on the graph to set the graph properties:
      5. You want the graph to display the changes in population over time, so under ‘Select Graph Contents’ in the left-hand pane, click on ‘Population’ and then click on the >>> button. Population will now appear on the right as a graph content.
      6. The conditions that NOVA automatically sets for you should be fine for this model, but make sure that refresh rate is set to one, that “full time interval” is checked, and that “Time Series” is selected under “Graph Type.” These setting ensure that the graph displays output for the full time interval that it is run, and that a time series graph of a change in your population over time is plotted. NOVA should automatically set a scale for your graph, but if you wish to change the scale you may toggle to “self” next to the scale dropdown menu, and set the minimum and maximum values yourself. Your graph window should look like this:

    1. Press Ok
    2. To run the model, click on “Capture”, then “Load,” then “Exec” (in that order). Capture turns our the visual model you made into NOVAscript commands, while load initializes the model, and exec finally runs the model. Graphical output should now be viewable on your graph, which should look like this:

    While capture load and exec are useful for running the whole model at once, if you wish to watch your model change incrementally, you may run it stepwise using the “init” and “step” commands: init is much like capture and load, in that this button prepares the model to be run, while step runs the model for one time unit. If you intend to run your model stepwise, be sure to click init first! The “run” button runs the model to completion, and if you wish to stop the model from running to completion you may press “stop.”