FNNR-ABM is an agent-based model that simulates human activity, Guizhou snub-nosed monkey movement, and GTGP-enrolled land parcel conversion in the Fanjingshan National Nature Reserve in Guizhou, China.
1. Install Python and set environmental path variables.
2. Install the mesa, matplotlib (optional), and pyshp (optional) Python libraries.
3. Configure fnnr_config_file.py.
4. Run either server.py (for a web-based browser visualization) or graph.py (for generating data outputs).
5. Analyze the data; more information and documentation on this is available in the model’s Github repository at https://github.com/jrmak/FNNR-ABM-Primate.
Welcome! This project seeks to understand population demographics and factors affecting the movement of Guizhou snub-nosed (“golden”) monkeys endemic to the Fanjingshan National Nature Reserve in Guizhou, China. It uses Mesa, a library framework with tools designed to support agent-based modeling in Python 3.X.
An overview of Mesa can be found at: https://mesa.readthedocs.io/en/master/overview.html A more thorough doc can be found at: https://media.readthedocs.org/pdf/mesa/latest/mesa.pdf
Documentation for this project–as well as the source code available for download–can be found in the Github repository. Please refer to the User’s Manual.
Instructions for Running the Code:
Have Python 3.X installed, as well as the Mesa (which comes with dependencies such as numpy, pandas, and tornado) and matplotlib libraries.
*If you have errors running the code, make sure Mesa’s edition is 0.8.3, and tornado’s edition is 4.5.2.
Download the code; refer to the Github repository. Configure the file ‘fnnr_config_file.py’ or leave it as default.
3a. Run ‘server.py’ to launch a web browser with an interactive visualization module of monkey movement in the Fanjingshan National Nature Reserve in China (and human resource gathering, though humans will appear to flicker due to low time resolution). Monkey movements are semi-randomized, and based on the weighted value of their 8-neighbor surroundings. This weighted value is currently determined by vegetation, human presence, season, and elevation (changeable in code; requires raster layers converted to an ASCII file).
A web app version of server.py is being worked on.
3b. Run ‘graph.py’ to see population demographic charts after 10 years, or 730 time-steps (changeable in code). graph.py also provides all data output (Excel file export)–graph.py is the main file to run for data analysis; server.py is simply a demonstration.