Archis is an extendable general platform for artificial life simulations
written in the Java programming language. It has many advanced features
- Friendly and polished graphical user interface
- The universe inhabited by cells is extremely customizable through plugins
- Supports multiple types of "genome virtual machines" through the Genome interface
- Unified, plugin-based probe interface for gathering special information about the simulation
- Unified, plugin-based reward function interface with centrally-configurable total reward distribution and an easy-to-understand point system for reward scoring
- NetServer for centralized command and data collection
- Supports data collection in GZIP compressed .CSV files (comma seperated variable) suitable for import into SQL databases, Microsoft Excel, SAS, SigmaStat, or other tools (a GZIP-decompressor may be required)
- High-performance, highly-optimized, and cleanly multithreaded code able to take full advantage of multiprocessor systems
- Configurable pseudo-random number generator permits multiple replicate experiments with reproducibility
These features make Archis a uniquely flexible and easy to use tool for doing
research in artificial life. One of the features that really makes Archis
special is it's plugin-based universe. Every aspect of the universe, from
the "physics" of cellular reproduction to the landscape inhabited by cells
is provided by plugins that operate according to a common interface. For
example, using the normal ReproductionCondition cells must go through the
actual mechanics of their own reproduction in an artificial-life-like way.
However, by using GPReproductionCondition, cells can be artificially copied
according to their reward function score in a way more akin to classical
genetic programming. Archis can be changed from a "strong alife" system to
a classical genetic programming system by simply changing plugins around!
Archis currently contains one type of genome virtual machine, though others
can be added easily. It is called RegisterMachineGenome and implements a
small Turing-complete instruction-based language with 21 instructions mapped
to 64 6-bit codons. The mapping of codons to instructions was pre-generated
using a small C program that you
can find here. This mapping was designed to be as evolvable as possible.
In other words, the mapping of instructions to codons was optimized so that
a single point mutation of one bit would be as unlikely as possible to cause
an instruction to change to a fundamentally different type of instruciton.
This means that, for example, a mutation is more likely to change ADD to
SUB than to change ADD to STOP. This was inspired by the following paper:
Freeland S. J. and Hurst L. D. 1998. The Genetic Code is One in a Million.
J. Mol. Evol. 47:238-249.
In the future, a variation of RegisterMachineGenome may be added that will
permit the mapping of instructions to codons to evolve as well as
the instruction sequence itself.
Click here to see the RegisterMachineGenome instruction set.
Once there are more genome types, it will be possible to conduct evolutionary
"tournaments" between them as cells inhabiting the same universe may easily
have different genome virtual machine types.
Archis has another great feature lacking from many artificial life simulators:
a good graphical user interface. The Archis GUI is written using Java's Swing
toolkit and permits easy interaction with the simulation and visualization
of the results in real-time. Conditions can be enabled, disabled, and configured
and each condition can have it's own GUI frame where it can show it's results.
For instance, Landscape2D has a GUI frame where the landscape can be seen and
it's parameters can be adjusted. A good GUI makes Archis suitable for
anyone to explore artificial life, and also makes it potentially useful in
educational settings. It also makes it a lot easier to see what's going on.
The goal of Archis is to be both simple and flexible. Other simulators that
I've seen are either far more complicated to use and to interpret results
from or are far less flexible with all characteristics of the universe
being hard-coded. Archis is designed so that the user can easily see what's
going on and so that anyone who knows Java can easily and radically customize
the environment for whatever type of experiment they wish to conduct.
Frequently Asked Questions
Q: Is Archis free?
A: Archis has been released under the GNU "Lesser" General Public License. Binary
distributions of release versions and source code are available on the
Download page. The LGPL has been used as opposed to the GPL because it is
more compatible with how Java works (essentially, all Java programs are
Q: How stable is the Archis API? Should I write my own plugins?
A: The APIs are about the consistency of gummi bears or gelatin at this point; they
have not yet hardened by they've congealed into their basic form. If you implement
your own plugins, be prepared to make overhauls. :)
Q: How long has Archis been under development?
A: Archis development began in summer 2001. It has been in active development
for over two years, and it's goal is to create a general platform for
artificial life simulations of certain kinds. Archis has been revised many
times in an attempt to make it as fast and as generalized as possible. At
the moment, it consists of over 20,000 lines of code.
Q: Why would you write something this speed and CPU intensive in Java?
A: Java is no longer slow, and hasn't been since about 1.3.0 or so. Java
presently performs comparably or only slightly slower than C++ with a good
modern virtual machine (though it
does use more memory). Basically, it was a tradeoff of a little bit of speed
and memory for much faster application development, cross platform execution, easy
plugin architecture, and much simpler cross-platform multithreaded programming.
In C++, Archis would probably have to be closer to 80,000 lines of code (especially
if threadedness was implemented on multiple OS/CPU platforms!) instead
of 20,000. If you want more information, Usenet and the web are filled with
on the subject. :)
Q: Are there any similar projects out there?
A: Yes, visit the links page. In particular, you might want to look at
AVIDA at the Digital Life
Lab at Caltech. It is similar though not as customizable, and has been used
in published research.
Q: Has research done with Archis been featured in any publications?
A: Not yet, I'm working on it. :)
Q: This stuff is neat! Where can I find out more about artificial life?
A: Visit the links page and visit the International
Society of Artificial Life. There is also a journal of Artificial Life published
by the MIT press that can be found