Warning: Use of undefined constant HTTP_ACCEPT - assumed 'HTTP_ACCEPT' (this will throw an Error in a future version of PHP) in /bitozoa/btz.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /bitozoa/btz.php:4) in /bitozoa/btz.php on line 13
Bitozoa 2 - artificial life & artificial intelligence simulation FAQ

About me/License/Feedback

Bitozoa 2 - artificial life & artficial intelligence simulation FAQ

Bitozoa © 2000

Bitozoa 2 © 2002

What about the bitozoa source?

Sorry. My plan was to make it available together with bitozoa 2 but when I looked at the code after two years I started to scream and decided against the release. Too many bugs, too many kludgy solutions. It is a miracle it works. I don't think it is a good idea to show how bad code you can write - it reduces educational value of the program. I feel a little bit ashamed, as even some of my sources from early eighties are much better. Bitozoa 2 are coded much better too. Besides, bitozoa 2 code is already released.

What about speed?

Speed is an issue, especially when the populations grow. This simulation is a O(n^2) task (sorry, I don't know how to write it in English), where n is number of all objects. For n < 1000 speed was acceptable on my 600 MHz (but I am not very difficult to please).

Program was more or less optimized for use on my old computer (600 MHz PIII, 133 MHz FSB). As you may (or you may not) know it is not possible to optimize the program for all combinations of processor and FSB frequencies. Thus I can not guarantee the program will run on your computer as efficiently as it could.

What about memory?

Number of animals is not limited so the program can - in theory - use any amount of memory. In practice populations are limited by the number of plants - from what I have seen 200 plants can support up to 6000 bitozoa. 6000 bitozoa (with 5 neurons each) required less then 5 MB of RAM, so you probably don't have to worry about memory usage.

What about processors?

Program has been optimized for use on PIII processors. It works on PII, but I doubt it will be able to run on Pentium. I also don't know nothing about Athlon. If the program stops with fatal error and the bug report contains following information:

Bytes at CS:EIP:

0f 18 02 d9 47 04 d8 66 04 d9 5d f4 d9 45 f4 d9

or

Bytes at CS:EIP:

db c9 d8 c2 dd c2 dd c1 d9 55 f8 d9 e1 d9 05 14

then you have to use unoptimized version. Click here to download bt2unoptimized.exe - this file contains both executables, without documentation (WARNING: these executables are of slightly earlier program version!) If you run into troubles please let me know.

What for?

OK. Nobody asked this question but I want to answer it. Richard Dawkins wrote in "Blind watchmaker":

"To simulate natural selection in an interesting way in the computer, we should [...] concentrate [...] upon simulating nonrandom death. Biomorphs should interact, in the computer, with a simulation of a hostile environment. Something about their shape should determine whether or not they survive in that environment. Ideally, the hostile environment should include other evolving biomorphs: 'predators', 'prey', 'parasites', 'competitors'. The particular shape of a prey biomorph should determine its vulnerability to being caught, for example, by particular shapes of predator biomorphs. Such criteria of vulnerability should not be built in by the programmer. They should emerge, in the same kind of way as the shapes themselves emerge. Evolution in the computer would then really take off, for the conditions would be met for a self-reinforcing 'arm race', and I dare not speculate where it would all end. Unfortunately, I think it may be beyond my powers as a programmer to set up such a counterfeit world."

Dawkins is right - it is extremely difficult to set up such a world. However, I believe it has nothing to do with a programmers skills. Our world is defined entirely by the gravitational and electromagnetic forces (two other known forces being neglectable). Although we probably know all necessary formulas amount of calculations necessary to move on with the simulation is incredible. Every world that we can create must contain some kind of physics - which will be either to simple to yield any meaningful results or too complicated to give any results in a reasonable time.

However, animal behavior is described by its brain, and brain - if treated as a neural network - seems to be not that difficult to simulate. Thus I hope it should be possible to simulate evolution of behavior - and this is my final target. It is enough to play for one day with my program to see that herbivores can easily learn how to efficiently feed on plants, that carnivores are later able to learn how to hunt herbivores and that finally herbivores learn how to avoid hunters. With some luck all that can be achieved in a two hours on a 600 MHz machine without other God than survival of the fittest. That seems promising.

Known bugs

None in simulation, some irreproducible (yet) glitches in user interface.

Bitozoa are sponsored by dysleksja, ChemBuddy chemical calculators, pH meter, titration site.

Bitozoa - artificial intelligence & artficial life simulation