Je me suis retrouvé dans une situation que vous avez peut-être déjà rencontrée (en tout cas moi je l’avais déjà rencontrée), résolu et oublié! C’est le
Exception: java.lang.OutOfMemoryError
Il y a bien sûr plein de ressources là-dessus, mais voilà une forme de pense-bête ! L’idée ici est que netlogo (ou plutôt java) a défini au lancement la place qu’il peut prendre dans la RAM. Or quand on a des modèles qui deviennent un peu gros, on se retrouve vite à l’étroit !
La solution semble de passer en mode headless (donc lancer netolgo sans l’interface), en ayant au préalable bidouillé le script de lancement.
Pour netlogo 6.2.X ça se passe dans netlogo-headless.sh
dans l’argument Xmx
# -Xmx1024m use up to 1GB RAM (edit to increase)
# -XX:+UseParallelGC The parallel collector maximizes throughput
# -Dfile.encoding=UTF-8 ensure Unicode characters in model files are compatible$
JVM_OPTS=(-Xmx20024m -XX:+UseParallelGC -Dfile.encoding=UTF-8)
Ensuite pour lancer une expérience dans la GUI il suffit de lancer quelque chose comme
./netlogo-headless.sh \
--model "../repro-seir-master/model/m2-seir.nlogo" \
--experiment "experiment" \
--table "../repro-seir-master/model/data/m2-seir experiment-table_140420231645.csv" \
--threads 30
Et Pan ça lancer sur 30 cœurs notre netlogo et sans faire exploser la mémoire.
Et voilà que mon « petit » modèle SEIR d’épidemo avec 20 000 agents en interaction se sent un peu plus à son aise !