emilio-molina / ecosystem Goto Github PK
View Code? Open in Web Editor NEWIndividual-based ecosystem simulation
Individual-based ecosystem simulation
Add these buttons:
- clone experiment: choose a new folder to make a copy of the current experiment
- rename experiment folder
- rename experiment
- erase the last x cycles
- choose frequency of saving ecosystem: for example, "save the entire ecosystem every 20 cycles".
- use a temporary folder: the program chooses a folder for a new experiment and erases it when the experiment finishes
Instead of storing timeslots, each experiment consists of a sequence of events. One of the events can be "create a snapshot", and it generates an extra file with the snapshot of the ecosystem.
Split settings from organisms' data, and store them in a different file, so that settings can be edited with a text editor.
Organisms' data are compressed before they are written in files, but settings don't need to be compressed.
https://projects.ncsu.edu/cals/course/ent425/tutorial/trophic.html
food_web = {
"P": [];
"H": ["P"];
"C": ["H"]
}
The aim is to provide a simple and readable way of designing the food web of an ecosystem.
Creo que una buena estructura sería:
GUI <---> ExperimentInterface <---> Ecosystem
Donde:
Notas
Van a existir dos tiempos diferentes: time_gui y time_max. time_gui define el time_slice visto por el usuario, y sólo depende de la GUI (ExperimentInterface no lo conoce). time_max define por donde va el experimento.
We'll show data such as biotope's size, procreation frequency of each species, etc, with a table in the "settings" tab.
Tab able to show curves of population for each organism class
Al seleccionar con el ratón un área rectangular y pinchar en un botón, sale una ventana con estadísticas (núm de organismos de cada especie, edad promedio, etc...
114M ./test5
75M ./test3
90M ./test4
10M ./test
Son demasiado pesados, y el repositorio tiene un límite de tamaño limitado (creo 1GB). Yo en el repositorio tendría algunos experimentos de test pequeños, sólo para probar funcionalidades de la GUI, y el resto los tendría en otro sitio (e.g. dropbox?). O bien los almacenaría en local y los iría enviando por wetransfer si ocupan mucho (e.g. >300MB).
Creo que estas dos ideas, podemos reducir >75% el tamaño de los experimentos.
La performance de C++ con respecto a Python puede rondar 100x, así que nos interesa. Como esto me llevará un poco de tiempo, lo dejo para tenerlo listo en la versión v0.3.
Aun así ya tengo bastante avanzado en la rama https://github.com/EmilioMolina/ecosystem/tree/cpp_version, que la rama asociada a este issue.
Esto implica añadir:
- Photosynthesis capacity (la energía tiene que venir de algún sitio)
- Death by starvation
- Energy costs
Avoid use of const values in ecosystem.h for more flexibility
Creo que tiene que ver con liberar o no liberar la memoria reservada para un puntero o algo así.
¿Puedes comprobar si sucedía el mismo error antes? Me da a mí que no.
There are some global variables that don't need to be global.
El movement speed puede ser menor cuando son viejos, por lo que tampoco es un gen en sí.
Además, quizá habría que ir pensando la forma de que luego se puedan añadir más genes similares sin grandes modificaciones.
El gui debería ser capaz de leer la configuración, como mínimo el tamaño del biotopo
When the functionality "view history" reaches the last recorded time slice, there's an error that causes the program to exit
We can start with a couple of parameters. Then we decide the GUI to modify all of them.
Estaría muy bien poder parar un experimento y luego poder seguir por donde se quedó. Es decir, que se guarde todo el ecosistema en histories/test, de manera que ecosystem.py se dé cuenta de que ya hay un experimento in progress y, en lugar de machacar lo que hay, que continúe con ese experimento.
Al exporter le falta exportar los datos del programa: Es decir: el tamaño del biotopo, los genes de los bichos, etc...
Hay que grabar un archivo con la configuración y las características de los bichos
Si añadimos mutación, habrá que grabar también los genes de los bichos, no solo el color
Además, estaría bien que el exporter hiciera una copia de ecosytem.py en la carpeta del experimento, para que se sepa qué reglas lo rigen
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.