Deinbac
A simulation framework that currently offers two types of simulation:
- Deinbac—an evolutionary simulation
-
A simulation explaining some principles of evolution.
The idea came from an article in the journal Scientific American. In the 1980s they had a regular feature on little programming exercises, and this program is the implementation and extension of this exercise. At that time, I implemented it on the Atari ST in Pascal, the later porting to Java was fairly easy.
The name is based on a German pun.
- Conway's game of life—a cellular automaton
- This also came to me via the same series in the journal Scientific American. My first implementation ran on 8-bit Atari computers, but this is not comparable to the possibilities of today's PCs.
How to start the program
- You need a Java Runtime Environment on your computer. The easiest way is to get it from www.java.com. There you can also check if you already have it installed.
- Download the program Deinbac.
- Start it by double-clicking the downloaded file.
A word to the programmers among you
If you want, you can download the source code.
Feel free to use the files in your own projects, as long as you name me and all other contributors to the files you took in use from me.
If you apply changes to my files, please inform me of the result, maybe there are more interested in your improvements.
And here's the manual:
Deinbac
A simulation framework.
Introduction
This program supports several kinds of simulation, as long as they base on discrete time steps. Currently two types of simulation are available.
Deinbac - an evolutionary simulation
It's about the principles of evolution. We have bacterions eating mana. Mana grows at a constant rate. Bacterions are blind, but even though from time to time they find some mana, which gives them energy. A bacterion that has not eaten mana for some time will starve.
Each bacterion has genes which define how fidgety the bacterion moves. A bacterion that grew long enough and has enough energy can split. During that split one gene of the child can change—a mutant.
When two bacterions meet, and both are old enough and have enough energy, then they can have sex. (Our bacterions are hermaphrodite—no male or female, each can mate with each.) The child gets half the genes from each parent.
Through interplay of reproduction, mutation and selection (by starvation) bacterions emerge which fit well to their surrounding.
A word on what you see: Mana is gray. New born, freshly split or mating partners are yellow. All other bacterions are magenta, the darker the less energy they have.
Conway's game of life - a cellular automaton
A cellular automaton following the ruleset defined by John Horton Conway.
The world consists of cells (fields) in a square grid, and cells can be either dead or alive. The state of each cell is defined by simple rules about the previous state of the cell itself and its 8 neighbors. Even in such a simple world some interesting complex phenomena can emerge.
The Menu
Game
Actions dealing with the whole simulation or program.
- New...
-
Exits the current simulation and starts a new one.
- Languages
-
Switches the language for the whole program.
- Quit
-
Quits the program.
Run
- Pause
-
Pauses the simulation.
- Single step
-
Performs a single simulation step.
- slow
-
Sets simulation speed to slow.
- medium
-
Sets simulation speed to medium.
- fast
-
Sets simulation speed to fast.
- Show world
-
Toggles the display of the simulated world. On very slow computers, simulation runs faster if display of the world is turned off.
- Magnify
-
Sets the magnification for the display of the simulated world.
- Show trend chart
-
Turns the display of the trend chart window on or off. There you can see the ups and downs of mana in the world (gray), number of bacterions (magenta) and average energy of those bacterions (yellow). (Only available in the Deinbac simulation.)
- Show genealogy
-
Shows the current genealogy. (Only available in the Deinbac simulation.)
?
Some information about the program.
- Help...
-
Displays some help about this program.
- About DeinBac...
-
Displays information about this program.
Start a new simulation
When you start a new simulation, you have several parameters to experiment with.
Simulation type
Which type of simulation you want to start?
- Deinbac - an evolutionary simulation
-
It's about the principles of evolution.
- Conway's game of life - a cellular automaton
-
A cellular automaton following the ruleset defined by John Horton Conway.
Deinbac - an evolutionary simulation
Start parameters for the evolutionary simulation
- World
-
Parameters affecting the world the bacterions live in
- World size horizontally
-
The width of the world.
- World size vertically
-
The height of the world.
- World with borders or torus?
- Initial mana (ppm)
-
Value is density in million fields. The value must be in the range from 0.0 to 1000000.0.
- Mana to grow each round (ppm)
-
Value is density in million fields. The value must be in the range from 0.0 to 1000000.0.
- Mana to grow each round in cockaigne (ppm)
-
Cockaigne is a region (1/64 of the world) where mana grows in plenty. This can create two different living environments in the same simulation run.
The value you enter here is additional mana that exclusively grows within the cockaigne. To turn cockaigne off, enter 0.
Value is density in million fields. The value must be in the range from 0.0 to 1000000.0.
- Initial number of bacterions
-
The value must be non-negative.
- Bacterions
-
Parameters affecting the bacterions
- Energy per mana
-
When a bacterion eats 1 mana, it gets energy to survive that many steps. The value must be non-negative.
- Maximum energy for bacterion
-
This is the maximum energy for a bacterion—it will eat more, but this gives no additional energy. The value must be non-negative.
- Initial energy
-
With this level of energy all initial bacterions start. The value must be non-negative.
- Minimum energy for split
-
The value must be non-negative.
- Minimum age for split
-
The value must be non-negative.
- Minimum energy for sex
-
The value must be non-negative.
- Minimum age for sex
-
The value must be non-negative.
- Statistics
-
Parameters affecting the collection of statistics
- Trend chart frequency
-
The trend chart shows mana, bacterions and average energy over time. Here you can define the resolution over time of the trend chart. The value must be non-negative.
Conway's game of life - a cellular automaton
Start parameters for the cellular automaton
- World size horizontally
-
The width of the world.
- World size vertically
-
The height of the world.
- World with borders or torus?
- Start pattern
-
The pattern the world is populated with initially.
- Gleiter
-
A small spaceship moving diagonally with a period of 4.
- r-Pentomino
-
A methuselah - a simple structure staying interesting for a long time, and firing some gliders.
- Acorn
-
A methuselah
- b-Heptomino
-
A methuselah
- Loafer
-
A small spaceship moving vertically.
- Copperhead
-
A small spaceship moving horizontally.
- Wing Spaceship
-
A huge spaceship moving diagonally with a period of 4.
- Gosper Glider Gun
-
A structure firing gliders regularly.
- Methuselah 8x32 001
-
A methuselah
- Methuselah 16x16 001
-
A methuselah
- Methuselah zz_Replicator stdin 001
-
A methuselah
- From pattern spec text
- Start pattern spec text
-
'o'=emtpy cell, 'b'=living cell, '$'=line end, '!'=line+pattern end
An (optional) number before a cell character means n times that cell character.You can find many patterns on https://catagolue.hatsya.com.
During the simulation
You can use the following input methods (besides the menu options) during the simulation.
Mouse
A left mouse click has the following impact:
- In Deinbac simulation
- Information about the clicked position is given—if Mana is present, and information on any bacterion over this position.
- In Life simulation
- The cell at this positon toggles between alive and dead.
Genealogy
The genealogy shows all bacterions that ever existed within this simulation run, with all their values and relations. (Only available in the Deinbac simulation.)
- ID
-
The ID of the bacterion. In our world, the younger bacterions have higher IDs.
- Position
-
The position within the world.
- Energy
-
The current energy level of this bacterion. Time brings it down, eating mana brings it up. Zero energy leads to death.
- Born
-
The timestamp when this bacterion was born.
- Last event
-
The timestamp of the last event (either birth, split, sex or death).
- Mother
-
The ID of the mother bacterion, no matter if the mother has split or had sex.
- Father
-
The ID of the father bacterion, if this bacterion was created by sex.
- Genes
-
The genes define how fidgety the bacterion moves. They consist of six digits for the six possible direction changes (sorted clockwise: forward, slightly right, hard right, u-turn, hard left, slightly left). Higher digit values represent a higher probability to move into that direction.
- Childs
-
If this bacterion was able to reproduce by split or sex, lists the IDs of all the direct children.