# Persephone **An agent-based, socio-economic-ecological model of agricultural landscapes in Europe under the CAP.** ## Description Persephone models farmers' decision making and its impact on species in agricultural landscapes. The aim is to investigate how policies such as the CAP influence farms and biodiversity. The model is based on the [Agents.jl](https://juliadynamics.github.io/Agents.jl/stable/) framework. It is currently in the very early stages of development. ## Usage ### Installation Install the latest version of the [Julia](https://julialang.org/downloads/) programming language. The recommended editors are [VSCode](https://www.julia-vscode.org/) or [Emacs](https://www.emacswiki.org/emacs/JuliaProgrammingLanguage) (see `docs/editors.md`). To install package dependencies, open a Julia REPL in this folder and run `using Pkg; Pkg.activate("."); Pkg.instantiate()`. ### Running from the commandline This is the normal mode of operation. Simply execute `run.sh`, typically like so (in Linux): ``` > ./run.sh -c <config> ``` where `<config>` specifies the configuration file to use. The recommended workflow is to copy `scr/parameters.toml` to a location of your choice and edit the copy to suit your requirements. The adapted config file can then be passed to `run.sh`. (If no configuration file is specified, Persephone will run with its default settings.) The full list of commandline arguments is: ``` usage: run.jl [-c CONFIGFILE] [-s SEED] [-m MAPFILE] [-o OUTDIR] [-l LOGLEVEL] [-r RUNTIME] [--version] [-h] optional arguments: -c, --configfile CONFIGFILE name of the configuration file -s, --seed SEED inital random seed (type: Int64) -m, --mapfile MAPFILE name of the map file -o, --outdir OUTDIR location of the output directory -l, --loglevel LOGLEVEL verbosity: "debug", "info", or "errors" -r, --runtime RUNTIME duration in days that the simulation will run (type: Int64) --version show version information and exit -h, --help show this help message and exit ``` ### Running from within Julia To use the model from within Julia (either inside an interactive REPL or if you want to import it from your own software), do the following: ```julia using Pkg Pkg.activate(".") # assuming you're in the Persephone root folder using Persephone ``` You can then access all Persephone functions, such as `simulate()`. (See `src/Persephone.jl` for a list of exported functions.) --- © 2022 Daniel Vedder, Lea Kolb (MIT license)