| |||||||||||||||
This is Aivola Universe beta releaseBackgroundAivola Universe is based on a long term effort started in 1995 when I first investigated how to simulate complex behavior and interactions using genetic algorithms. For years JuhasWorld was my primary platform for the AI/AL/GP experiments, but now finally after 12 years the next generation simulation environment has born: Aivola Universe. Currently the most visible change is that the simulation is now continuous instead of starting each new generation with a "big bang". The continuous simulation combined with a gradual introduction of new cross-bred creatures seems so much more biologically correct way to simulate an artificial life system. BasicsArtificial creatures called "actors" compete against each other for survival in a simulated world. When the world starts, some random genes are created and a set of best genes are loaded from a global gene database. Parent actors, the most successful ones, provide the genetic material for the next generation actors through cross-breeding. Each new actor is a crossbred offspring of two parents, with some random mutations. Not all parents produce as many descendants: More healthy parents are more likely to take part in the cross-breeding process. To take part in the cross-breeding process, the parent must have survived to adulthood and there must be another valid parent to be found close by. The best genes are saved periodically to the central database and shared with other users running Aivola Universe. Your actions will affect the overall outcome of the global evolution process. You can reward (give more energy), punish (try NUKE and see what I mean), change environment (add or remove death zones and walls), and in general have fun breeding and training the artificial creatures! ActorsActor's genetic material is simply a byte array interpreted as cells or connections between the cells. There are three main cell classes: sensors, nerves, and actuators. The sensors offer the only way for actors to collect data about the world, like "Am I touching an energy zone?". The sensor data is fed into the nerves which process the data. Each nerve either passes the data forward to the other nerves or to some actuators. An actor uses the actuators to affect the world or its own state (turn, move, etc). Actors born small and eventually grow physically as they reach more maturity. Actor's health can be detected visually from "breathing speed/size". Healthy actors have large body size and a clearly visible breathing effect. This effect is best visible in the adult-sized actors. Actors need to learn how to gather energy and how to avoid excessive loss of energy. Actually one specific actor doesn't learn anything during its life, but rather acts based on inherited behavior. Actors do have some internal state "memory" that changes over time - which, in theory, enables learning. However, the amount of internal state is so limited that its effect should be irrelevant compared to the inherited behavior. In practice actor puts its genetic material into test, and good genetic material survives. From the simulation point of view it might seem like actors would be learning new skills, but all "learning" is simply based on evolution with each generation coping better because they have better static rules (cell network constructed based on inherited genes) to follow. Actors can obtain more energy by finding and consuming energy zones (green areas). Actors will lose energy if they touch death zones (red areas), or world boundaries. Moving has a small energy cost too. And of course, weapons cause an extreme loss of energy.. Actors naturally die if they lose all their energy, but actors can die of old age too. Dying of old age is a surprisingly important feature of the Aivola Universe algorithm, because without dying of old age some extremely good actors could live forever - effectively stopping the evolution. It's good to note that simply staying alive doesn't indicate that there is no room for improvement. Environment just happens to be too easy. Next generations can still improve a lot through cross-breeding and mutations, so with semi-technical terms dying of old age helps to avoid getting stuck in the local maximum. Actor's color gives some hint of genetic closeness to other actors. Similar color indicates similar genetic material affecting behavior. Even though the color generation algorithm is not very accurate, it still visualizes how the population of actors can divide into distinguishable races. In an extreme case, it's possible that the members of different races can't produce viable siblings any more because of too large genetic differences - effectively creating world with multiple species. This is an interesting area of study, but current simulation can't visualize such things in any other way than colors not mixing any more even if the different colored healthy actors are constantly near each other enabling the cross-breeding. World | |||||||||||||||