Coder Social home page Coder Social logo

ecosystem's People

Contributors

emilio-molina avatar salasgar avatar

Stargazers

 avatar

Watchers

 avatar  avatar

ecosystem's Issues

Adding buttons to ExperimentComponent

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

Events-based experiments

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

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.

Refactor to modularize GUI, Ecosystem, EcosystemInterface ...

Creo que una buena estructura sería:

GUI <---> ExperimentInterface <---> Ecosystem

Donde:

  • GUI no contiene información del experimento en sí, sino que siempre interacciona con el experimento a través de ExperimentInterface.
  • ExperimentInterface no sabe nada de la GUI, y es la única capa que interacciona con el filesystem. Contiene una instancia de tipo Ecosystem que es la que va creando nuevos time_slices del experimento.
  • Ecosystem sólo trabaja en RAM, y no interacciona con el filesystem.

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.

Experiments are too heavy for being in the repository

Tamaño de los experimentos de test en el repositorio

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).

Ideas para reducir tamaño

  • Exportar cada time slice en formato binario optimizado a nivel de bit, en lugar de un JSON que tiene mucho overhead por ser cadenas de caracteres.
  • Utilizar compresión ZIP (llamando al comando 'zip' en commandline) para cada time slice. Creo que se puede ir descomprimiento a tiempo real en la GUI y no supondría mucho tiempo. Utilizando compresión ZIP he comprobado que test5 pasa de 114M a 25M.

Creo que estas dos ideas, podemos reducir >75% el tamaño de los experimentos.

Add movement speed to organisms

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.

Bug in "View history"

When the functionality "view history" reaches the last recorded time slice, there's an error that causes the program to exit

Serialization of ecosystem

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.

Export more data

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.