add install instructions. rename notebook

main
Michael Brehm 2024-06-23 22:47:46 +02:00
parent 759c78b433
commit dae76c3305
3 changed files with 89 additions and 0 deletions

View File

@ -2,6 +2,26 @@
SoSe 2024 SCJ Projekt zur Modelierung eines Jäger, Beute Verhältnis in Julia mit Agents.jl SoSe 2024 SCJ Projekt zur Modelierung eines Jäger, Beute Verhältnis in Julia mit Agents.jl
## Verwendung
Um die Anwendung auszuführen, muss Julia installiert sein.
Für die Ausführung sollte ```main.ipynb``` verwendet werden. Damit werden die Abhängigkeiten automatisch installiert und die Anwendung kann interaktiv ausgeführt werden.
Falls das Ausführen mit ```main.ipynb``` nicht funktioniert, kann auch main.jl verwendet werden.
Jedoch ist in ```main.jl``` nur das zweite Szenario definiert.
Um die anderen Seznarien zu verwenden, müssen die AnimalDefinitions und Events in ```main.jl``` angepasst werden.
```main.jl``` sollte NICHT über ```julia main.jl``` ausgeführt werden, da sich das interakitve Fenster automatisch schließt.
Das kann verhindert werden, wenn es über eine interaktive shell ausgeführt wird:
```bash
julia
```
```julia
include("main.jl")
```
## Features ## Features
**Statistik -** **Statistik -**
Es werden zur Laufzeit des Modells Statistiken zur Population und Todesursache der Agenten bereitgestellt. Es werden zur Laufzeit des Modells Statistiken zur Population und Todesursache der Agenten bereitgestellt.

69
main.jl 100644
View File

@ -0,0 +1,69 @@
import Pkg
Pkg.activate("./env")
Pkg.instantiate()
include("./predator_prey_generic.jl")
using GLMakie
GLMakie.activate!()
# To view our starting population, we can build an overview plot using [`abmplot`](@ref).
# We define the plotting details for the wolves and sheep:
ashape(a) = a.def.symbol
acolor(a) = a.def.color
# and instruct [`abmplot`](@ref) how to plot grass as a heatmap:
grasscolor(model) = model.growth ./ model.regrowth_time
# and finally define a colormap for the grass:
heatkwargs = (colormap = [:brown, :green], colorrange = (0, 1))
# and put everything together and give it to [`abmplot`](@ref)
return plotkwargs = (;
agent_color = acolor,
agent_size = 25,
agent_marker = ashape,
agentsplotkwargs = (strokewidth = 1.0, strokecolor = :black),
heatarray = grasscolor,
heatkwargs = heatkwargs,
)
events = []
animal_defs = [
AnimalDefinition(30,'●',RGBAf(1.0, 1.0, 1.0, 1),20, 20, 1, 0.3, 20, 3, "Sheep", ["Wolf","Bear"], ["Grass"])
AnimalDefinition(3,'▲',RGBAf(0.2, 0.2, 0.3, 1),20, 20, 1, 0.07, 20, 1, "Wolf", [], ["Sheep"])
]
stable_params = (;
events = events,
animal_defs = animal_defs,
dims = (30, 30),
regrowth_time = 30,
Δenergy_grass = 6,
seed = 71758,
)
# GLMakie Parameters
model_params_ranges = Dict(
:regrowth_time => 0:1:100,
:Δenergy_grass => 0:1:50,
)
animal_params_ranges = generate_animal_parameter_ranges(animal_defs)
params = merge(model_params_ranges,animal_params_ranges)
# Data Collection
sheep(a) = a.def.type == "Sheep"
wolf(a) = a.def.type == "Wolf"
eaten(a) = a.def.type == "Sheep" && a.death_cause == Predation
starved(a) = a.def.type == "Sheep" && a.death_cause == Starvation
count_grass(model) = count(model.fully_grown)
adata = [(sheep, count), (wolf, count), (eaten, count), (starved, count)]
mdata = [count_grass]
# initialize and run
model = initialize_model(;stable_params...)
fig, abmobs = abmexploration(
model;
params,
plotkwargs...,
adata,
alabels = ["Sheep", "Wolf", "Eaten", "Starved"],
mdata, mlabels = ["Grass"]
)
display(fig)