Code Monkey home page Code Monkey logo

evolution-simulator's Introduction

Evolution simulator

Setup

Instalar una versión Nightly del compilador de Rust, método recomendado: https://rustup.rs/.

Correr el comando cargo build --release, esto descarga todas las librerías utilizadas y las compila, junto con el programa. La primera vez demora más que las siguientes dado que tiene que descargar todas las dependencias. Este comando compila la versión release del programa, que ejecuta más rápido que su contraparte debug.

El comando cargo run --release puede ser usado para correr el binario. Por defecto, la aplicación corre un algoritmo genético.

Configuración

Argumentos por linea de comandos

Para pasarle flags al binario es necesario separar las flags que recibe cargo con --. Ejemplo: cargo run --<cargo-flag> -- --<binary-flag>

El binario puede recibir las siguientes flags:

  • -h o --headless: Corre el programa sin abrir una aplicación gráfica, mejora la performance.
  • -s o --speciesism: Corre el algoritmo genético con una técnica de reproducción entre especies.
  • --max-generations: Define la cantidad máxima de generaciones para el algoritmo.
  • --max-no-improvement: Define la cantidad de generaciones que pueden pasar sin que mejore la fitness máxima antes de que finalice el programa
  • --mutation: Define la probabilidad de mutación
  • --crossover: Define la probabilidad de cruzamiento
  • --population-size: Define el tamaño de población para el algoritmo
  • --instance <number>: Define la instancia que se ejecutará, se pueden definir distintas instancias en config.ron
  • --playground: Corre un playground en vez de un algoritmo genético, en el cual se lee un cromosoma de chromosome.ron y se simula el movimiento de esa criatura (explicado en detalle más adelante)
  • --test: Indica que el programa es parte de un test (esto permite realizar muchas ejecuciones y guardar resultados en archivos)
  • --test-count: Define la cantidad de ejecuciones de esta sesión (requiere --test)

Archivo de configuración

Otros valores de configuración pueden ser modificados creando un archivo config.ron y cambiando los valores por defecto. Los valores por defecto se pueden encontrar en example.config.ron.

Tests

Luego de correr una sesión de test (con las flags --test y --test-count), los resultados se guardarán en experiments/population_{tamaño de población}_mutation_{probabilidad de mutación}_crossover_{probabilidad de cruzamiento}/{numero de instancia que se esta ejecutando}/

Para generar más estadísticas para las instancias, se pueden usar los scripts (escritos en Python) en scripts/. Para ejecutar ciertos scripts es necesario instalar las dependencias de Python de requirements.txt. Para esto, se puede usar el comando pip install -r requirements.txt con una versión de Python 3.

Todos los scripts deben ser ejecutados en la carpeta de una instancia (experiments/{configuración paramétrica}/instance_{numero instancia}/).

generate_stats

Genera estadísticas para cada ejecución y las guarda en execution_{numero}/new_stats.txt.

avg_stats

Usa los new_stats.txt de cada ejecución para promediarlos e imprime esas estadísticas en stdout.

ks_test

Realiza el test de Kolmogorov-Smirnov.

mw_test

Realiza el test de Mann-Witney.

Playground

Para no correr el algoritmo genético y en su lugar experimentar con la simulación, se puede pasar la flag --playground. El programa lee un cromosoma del archivo chromosome.ron y crea una criatura con los atributos definidos en él. Un archivo ejemplo se encuentra en example.chromosome.ron.

evolution-simulator's People

Contributors

franciscoaguirre avatar sncalvo avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

evolution-simulator's Issues

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.