tmptrash / irma

Digital organisms ecology system experiment
MIT License
15 stars 5 forks source link
artificial-chemistry artificial-intelligence artificial-life bytecode digital-organisms ecology-modelling evolution-simulation game genetic-programming irma javascript linear-genetic-programming luca machine-code machine-learning open-ended-evolution virtual-machine

irma v0.2 Build Status

Welcome to Artificial life and Digital organisms ecology simulator. This optimized engine has an ability to run up to 50 000 agents (organisms) and 5 000 000 molecules (matter or organism's food) in parallel within 2D virtual world. It uses (LGP) language as a DNA, which runs under self-made VM. The purpose of this project is to produce complex behavior and realistic eco system of organisms based on generated byte code. Mentioned code is used as organism's "brain" and manages almost all his life aspects. Also, this system uses evolution's like principles to change (mutate) and select (natural selection) best agents from population in the same way like nature does. We suppose that mentioned complex behavior may appear in such simulator. Through generations, every new organism should be more adoptive (have more children) to virtual environment and maybe more complex (but not always). Instead of neural networks, organisms use special byte code (mentioned "brain"), which run in infinite loop on special VM. Mutations affect this code to produce small variety in population. Some organisms will have more chances to produce children. This is, by the way, major criteria of success for such system. This engine uses Linear Genetic Programming approach for it's DNA language. Also, main ideas obtained from Synthesis theory and Self-replicating machines. Enjoy our research!

irma

The image above represents common irma 2D world with organisms (red dots) and different molecules (all other dots). To see this world in motion click here.

Documentation

Steps to run:

  1. git clone https://github.com/tmptrash/irma
  2. cd irma
  3. npm i
  4. npm run prod (dev - for devlopment mode)
  5. cd dist
  6. run index.html in Chrome

Steps to run tests:

  1. cd irma
  2. npm test
  3. npm run cover (run tests with coverage)

Available commands:

  1. npm test - runs tests in production mode (without browser)
  2. npm run dtest - runs tests in development mode (in Chrome)
  3. npm run cover - runs tests with coverage (istanbul)
  4. npm run prod - build irma in production mode
  5. npm run dev - build irma in development mode

Old research

Presentations

Videos