Natural
Selection Neural Network Simulation
My Electronic Environment Containing Electronic Life,
Created by Paul Matthew Boxwell
Overview of the project
Electronic life can be just as varied, amazing and
intelligent as real life. All it needs is an environment to live in and rules
to live by. I aimed here to create an electronic environment with rules similar
to that found in the microscopic world. My environment is two dimensional and
the creatures that can exist in it abide by consuming energy that is needed for
movement and reproduction. They reproduce through mitosis; all the offspring
are genetically identical to the parent except for rare mutations. These mutations
will lead them to have small differences in their behaviour from that of their parents.
These differences may be improve or hamper the chance of survival for that creature.
Experiment 1 (Program 1.5)
Aim
I hope to recreate the biological phenomenons that lead
Darwin to come up with his theory of evolution. When visiting the Galapagos
Islands in 1835, Darwin observed how the finches had specialized into a variety of niches. They had evolved from a single origin species into a variety of
species; each with a particular habitat or food source that they were adapted
for.
(Source https://www.youtube.com/watch?v=hOfRN0KihOU&list=TLS3WIbHYM_xwvytuv_bWjkaU3SJ1mzDel at
8:20)
I will create 12 environments at the start of my experiment,
the rules of survival are the same in all, however 6 environments will have a small
area, and 6 will be unlimited in size. I hope that the difference between the
environment types, although small, will be enough that the initial species will
split into two clear types; one specialised for each environment.
I shall record the current average generation in each
environment. The ‘generation’ is the number of genetic changes (or evolutionary
steps) since the original species. The original species would therefore be
generation zero. By plotting the average generation of the 6 limited
environment and the 6 unlimited I hope to see a clear difference between the
animals living in the two different environment types.
Testing
I quickly edited the original program to accommodate the
data collection for this experiment. From a provisional experiment I knew I
wanted to collect the average gen of all 12 environments at a regular interval
of a few minutes. The final program collects the data at 1 minute intervals.
I have run the simulation for 3.5 hours, and then a further
2.5 hours each time displaying the data in the graphs bellow.
Time 0:00 to 3:30
Time 3:30 to 6:00Conclusion
You can see in the first graph that for the first hour and a
half of the simulation the creatures where ‘similar’ in both of the environment
types. They evolved through around 140 genetic steps. By generation 150 they
had split into two types, each with a clear preference for one environment.
From then on the gap between them has grown. The species that populates the
unlimited environments has continued to change but at a slower pace than the
species that populates the limited environment. Occasionally, an ‘unlimited’
creature has populated a baron limited environment, but when a ‘limited’
creature is reintroduced, they tend to quickly take over the environment again.
There is no evidence to suggest this has happen the other way around, with a
‘limited’ creature populating an unlimited environment. I think this is because
the creatures can only populate an environment they are not evolved for, if
there are no other competitors. There is a chance that all the ‘limited’
creatures in a limited environment can be killed off when they hit the edge,
this temporarily removes the competitors and can allow the ‘unlimited’
creatures a short reign before they are overrun again by the
better-adapted-to-that-environment limited creatures.
The character traits that have evolved in the creatures are
obvious when viewed. Here are my observations:
Unlimited
The ‘unlimited’ creatures are fast; they loop wide for many
passes at the food in the hope of getting their first. This way of life has
lead to a fast pace of life, the creatures live for short periods, use their
energy quickly and also breed often. This made me think that they would also
evolve quickly, changing through the generation at a rapid pace like their life
style. However the evidence has shown they in fact have a slower rate of
evolution than the ‘limited’ type. Their population tends to be between 50
and 100 per environment.
Limited
The ‘limited’ creatures are timid, they will hold back till
they think they have a chance, then race forwards to try to get to the food
first. Their slower pace of moment when holding back, allows them to spread
out, keeping their distance from their competitors/siblings this reduces chance
they will bump into each other and be eaten. When charging for the food
however, all aims of avoiding others disappear, and the fastest tends to get
their first. Their population tends to be between 5 and 40 per environment. The fact that they
have low numbers can lead to temporary loss of an environment. This can lead to the unlimited creature occupying the limited environment for a while. But once a limited creature is reintroduced they tend to be successful in retaking the environment by not hitting the edge and going for the food only when its confident it will get their first.
Hello!
ReplyDeleteMy name is Joakim Szucs. Im a hobby gane developer. I recently started to study neural networks and genetic algorithms. I would like to create a similar simulation but a little bit simplier. My creatures mission woukd be to collect food in order to survive. I would like some advice on inputs. What shoukd i give them as input And output? For output i tought of 2 nodes speed and rotation so they would be able to move and turn. For input i guess their position lokkibg direction and the position of food maybe? I would like to ask how does your network works?
Thanks in advice!
Joakim
Sorry for the grammar my phone doesnt semm to like me 😀
DeleteHello, in his original simulator, he used two inputs for food location: inverse of distance, and angle relative to the creature's. Basically a polar format. He also added 3 such inputs for 3 nearest creatures.
DeleteBut hey, why stop there? It's only a suggestion. Get creative!
Hope that helps!
Hi Revi,
DeleteThanks for answering this comment for me. Couldn't have said it better myself!
I'm very close to releasing my source code for this project. Trying to make it a little more user friendly. Would you be interested in testing it? I would very much appreciate your comments to improve it before a formal release!
Kind regards,
Paul.
Sorry for the late reply, you're very welcome! And of course I'd really like to test it!
DeleteAnyway, there haven't been any new videos in a while, have there?