https://github.com/joonasvali/mirrors
Mirrors is a simulation of an arbitrary physical system, where the goal is achieved using artificial evolution.
https://github.com/joonasvali/mirrors
artificial-evolution evolution genetic-algorithm graphical-user-interface simulation watchmaker
Last synced: 8 months ago
JSON representation
Mirrors is a simulation of an arbitrary physical system, where the goal is achieved using artificial evolution.
- Host: GitHub
- URL: https://github.com/joonasvali/mirrors
- Owner: JoonasVali
- License: other
- Created: 2018-01-28T10:31:28.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-25T16:52:01.000Z (over 2 years ago)
- Last Synced: 2025-06-27T22:45:10.936Z (10 months ago)
- Topics: artificial-evolution, evolution, genetic-algorithm, graphical-user-interface, simulation, watchmaker
- Language: Java
- Homepage:
- Size: 860 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## Mirrors (C) Joonas Vali (2014-2019) ##
"Mirrors" is a simulation of an arbitrary physical system, where the goal is achieved using artificial evolution.
The simulation can be used to demonstrate how random mutations manage to create an overall progress towards perfection.
## Demonstration video: ##
https://www.youtube.com/watch?v=WEZ35350D2k
## Images ##


## What's going on there? ##
The simulation generates a wave of particles on a 2D plane and there exists a gathering point or goal for those particles,
which counts how many and how fast the particles reached it by assigning score for each model (fitness of the model).
While the particle emitter and goal are constants on the model, there are many modifiers that can appear/disappear and change
in a particular model. The model composed of those modifiers is the evolving entity or organism, and
these modifiers in the model are generated via genes which are then either passed on during the selection process or not, based on how
well the model as a whole works. There are currently four types of modifiers: reflectors, benders, repellents and accelerators.
## Running mirrors ##
You need:
Java 16+ installed. JAVA_HOME set and java runtime in the path.
Maven (I used 3.0.5 and 2.2.1, both worked).
### Building application from source ###
Build application by `mvn clean package`
It will be fully runnable under `.build/target/mirrors/mirrors` (You can copy it anywhere from there once built.)
The runnables are located at `./build/target/mirrors/mirrors/bin` folder