About Vortex


Vortex is an individual-based simulation of deterministic forces as well as demographic, environmental and genetic stochastic events on wildlife populations. It can model many of the extinction vortices that can threaten persistence of small populations. Vortex models population dynamics as discrete, sequential events that occur according to probabilities that are random variables following user-specified distributions. Vortex simulates a population by stepping through a series of events that describe an annual cycle of a typical sexually reproducing, diploid organism: mate selection, reproduction, mortality, increment of age by one year, dispersal among populations, removals, supplementation, and then truncation (if necessary) to the carrying capacity. The simulation of the population is iterated many times to generate the distribution of fates that the population might experience.

Vortex is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.

  • How to Cite

    Lacy, R.C., and J.P. Pollak. 2021. Vortex: A stochastic simulation of the extinction process. Version 10.5.5. Chicago Zoological Society, Brookfield, Illinois, USA.

    Please acknowledge SCTI in your reports and publications. Suggested wording:

    Vortex PVA software (Lacy & Pollak 2021) is provided under a CreativeCommons Attribution-NoDerivatives International License, courtesy of the Species Conservation Toolkit Initiative (https://scti.tools).

  • Key References

    Lacy, R.C. 1993. VORTEX: A computer simulation model for Population Viability Analysis. Wildlife Research 20:45-65.

    Lacy, R.C. 2000. Structure of the VORTEX simulation model for population viability analysis. Ecological Bulletins 48:191-203.


Vortex is constantly changing. We fix bugs when they are identified, although not always immediately if the bug is more of a nuisance (e.g., bad formatting on a screen or output file) rather than something that is causing misleading results. We also add new features and options when we believe that they will be useful to a significant number of users, and when we have the time to add the enhancements. We frequently make small changes to screen lay-outs, screen text, and file formats when we feel that the change will improve the program for users. In the Help menu of the program there is an option to check for any updates that are more recent than the version you are currently using.

Note that we do not guarantee that all changes to the program have been documented here. In particular, we don’t list here many very minor changes made to the interface.

We also cannot guarantee that all bugs in code or errors in algorithms have now been fixed. Reports of apparent bugs can be made at scti.tools/help-support/ . We are very grateful to the many colleagues who have carefully documented and reported apparent bugs. Even when the issue turns out to be a misunderstanding by the user, and not a true bug, we still appreciate the report. (Indeed, we are happier when the problem turns out not to be a bug in the program!)

  • 29 March 2021 (version 10.5.5)

    A fix was made to the case of Hermaphroditic breeding. (Previously, the program would have failed to run such models because of an error in setting the initial population.)

  • 12 January 2021 (version 10.5.4)

    A bug was fixed that would have not implemented the correct dispersal when dispersal was specified as a fixed number to be moved, rather than a percent, and when a population-based model was run.

  • 29 December 2020

    A fix was made to a problem in population-based models using Translocations that would have implemented any Translocations into a population even if the Translocate option was turned off for that population.

  • 8 December 2020

    A fix was made to a problem that was sometimes causing inbreeding coefficients not to be calculated when the variable ‘I’ was used in a function for a demographic rate, but inbreeding depression was not enabled.

  • 27 November 2020 (version 10.5.3)

    If a filename provided within a function or other input does not include the path, Vortex will now look for the file in the project directory (where the project xml is located). It is still safer to list the full path for files accessed in functions, but omitting the path can make it easier to transfer a project to another folder or computer.

  • 28 October 2020 (version 10.5.2)

    The order in which individuals have their ISvars updated has been made more predictable: ISupdate now steps through the populations in order, and within each population it steps through the individuals in the order that they were created (which also usually is from oldest to youngest). Previously, the order individuals were updated was not predictable, and that could affect the use of some population state variables such as IMEAN and ILIST if they were used within ISvar Transition functions.

    A new Special Option was added to force population level variables, such as M, F, IMEAN, IMAX, ITOT, and ILIST to be updated before the ISvars for each individual are updated. This allows ISvar transitions to change population level variables (e.g., if ISvar transitions change some individuals’ sex, age, or population). When this option is not selected, all population level variables are updated just before the ISupdate that steps through all individuals.

  • 28 August 2020 (version 10.5.1)

    New options for error bars on graphs have been added. Now, along with SD and SE, you can add error bars to show the 95% or the 90% confidence interval (CI) around the estimate of the mean, or the 90% or 95% range of the distribution of results from individual runs. The 90% and 95% of the distribution of runs can be used to compare, for example, a single observed (real) trajectory to the range of trajectories generated by the simulation – to see if the observed population trajectory would be an outlier among (and therefore perhaps poorly modeled by) the simulations. Both the CIs and the distribution percentiles are approximate, as they assume a symmetrical normal distribution of the results. More precise calculations of errors and percentiles of individual results could be obtained by analyzing the full distribution of simulation results.

  • 4 August 2020 (version 10.5.0)

    It is now possible to change any of the core properties of individuals via ISvars:

    Sex change (including specification at population initialization or birth) can be implemented by setting an ISvar to have label “SEX”, and then setting the Initialization function, Birth function, or Transition function to evaluate to 0 for female or 1 for male. SEX should never be used as the label for an ISvar unless the intent is to cause sex change (because it will cause sex change if the function evaluates to anything other than the original sex).

    Age can be changed with an ISvar labelled as AGE. Although it might seem odd to change the age of an individual, it would be possible to use this option to create a stage-based model. The Age event can be removed from the scenario, and then an AGE ISvar used to transition individuals between “age” classes. This also allows, for example, control over the age of adults supplemented to the population. AGE should never be used as the label for an ISvar unless the intent is to control the age class of individuals.

    Alive can be changed by setting an ISvar labelled as ALIVE to be 0 (meaning dead). This allows you to remove individuals with specific characteristics. You cannot resurrect a dead individual.

Accessory Tools

Accessory tools are apps that can be used in conjunction with Vortex. They are automatically included with Vortex installation. For more information about each of these tools, please see the Vortex manual and technical documentation.