Search the Mindcreators site: 

3.3 Research Outline

1. Darwin's Playground

The first work I did for all of this was to build a plug-in based software package for doing research into any type of evolutionary algorithm. I called this application Darwin's Playground. The current version is based on COM objects and has a VB application for the user interface. It is split into two parts. At its lowest level is the GeneticLibrary. This is a library of COM classes and interfaces that can be used interchangeably. I have already implemented systems that can handle several different types of genetic algorithms and genetic programming, and used them to complete some interesting projects. The second part is the user interface application. It allows the user to build a new project by dragging and dropping items from a library of genetic components, and then run the project and analyze the results. All of the data generated can be stored in either a SQL server, Oracle, or Access database. Also, the system can perform distributed computing to spread the load of evaluating fitness over numerous systems in a server farm. There are libraries out there that can be used to do genetic algorithms and such. However, I created this primarily because I wanted to learn the nitty gritty details of how such systems worked, and I wanted to have my own library available that I understood inherently and could easily modify. Also, I have not seen any of the libraries out there that have as much flexibility. At some point I would like to upgrade this whole system to be based on the new dot net class system. I will be using this system later on in my research to evolve genetic algorithms that will grow the neural nets. And the user interface for the insect simulator system is a plug-in for this application.

Darwin's Playground Screen Shot
Figure 1. This is a shot of the Darwin's Playground application while performing a run
of the insect simulator system.

2. 2D Insect Simulator

This is the project that is being documented now. My main purpose for this project was to attempt to reproduce as closely as possible the research done by Dr. Randall Beer. Since he had already successfully completed this work, I knew it was possible to get it to work. Also, he gave a very thorough blueprint for how to build this system in his book Intelligence as Adaptive Behavior. One philosophy I have learned the hard way is that you should start small and always take small steps to get where you are wanting to go. Never bite off more than you can chew. (See the section on past failures for an explanation of why.) Therefore, this was a good place to start. It was something that definitely worked for someone else and was not to complicated.

3. 3D Insect Simulator

The 2D simulator was a good start, but it is not very realistic. It is highly unlikely that a neural net generated in the 2D system would translate directly into a real life robot and work in the same way. Therefore, the next logical step is to use a 3D physics simulation package to add some realism to the whole thing. These types of packages simulate all of the forces, contacts, gravity and so on that occur to objects in real time. While this will still not be exactly the same as running in a real robot, it will be very close to what really goes on in the natural environment. Once I have the system able to use the physics simulator it will almost certainly be necessary to go back and modify the engineered neural net so that it will work with this more realistic, three dimensional robot.

4. Real Hexapod Robot

After I have a system that works well in the virtual 3D world, the next step will be to build a real Hexapod (six-legged) robot and have the neural net that was engineered control its behavior and see how it behaves in the real world. Hopefully the 3D system was accurate enough that the behavior seen in the real system is very close to what was simulated. For this phase of the research I will purchase and build the Hexapod robot kit shown in figure 2 and will then modify it with extra sensors and wireless communication systems. I will have to add some extra sensors to detect contact with the legs, pressure sensors for the feet, and antenna sensors. The brain will most likely be housed in a laptop computer that has two-way, wireless communication with the actual robot. I will probably also add some kind of sound sensor to the robot as well, and instead of using scent to home in on food supplies use sound.

Hexapod Robot Kit
Figure 2. Hexapod robot kit.

5. Growing Neural Nets

The next step will be one of the most fun. I want to use genetic algorithms, along with some of the principles of developmental biology, to actual grow and evolve neural networks that can control the insect and allow it to survive just like the engineered network can. You might say, "If you already have a network that can allow the insect to survive, then why do this?" The reason is that the network I will have used to this point is a completely man-made thing based on research on how we think that insects nervous systems work. It is much simpler, and much less adaptable, than real systems. Also, if I can figure out a way to evolve a simpler system like this, then it should be possible to take the next step and try and evolve a system that can do other, more difficult things. Another point is that in order to evolve systems that do what you want, you do not have to understand the explicit details about how the whole neural system works. You just have to have a general understanding of the systems involved, what they do, and how they interconnect. You then let evolution build a system that works and analyze that system to try and understand how it works. And unlike a real biological system, you have complete control and access to everything taking place within the brain of that organism. You can shut off a portion of the insects brain and apply the exact same stimuli to see what affect that had and so on.

6. More Realistic Neurons

The insect simulator system as it is now can not in any way learn based on experience. The reason is that even though the simulator is based on how real neurons work, it is not realistic enough. For the neural networks to be able to learn they have to be able to modify their connection strengths, and possibly even their connectivity pattern. In the current system when a neuron is created it has the same connection strength throughout the life of the organism. There has been a great deal of research done on how the connection strengths change due to interaction with the environment. Gerald Edelman and George Reeke in particular have done a lot of research, theorizing, and modeling of these types of systems. The next step for my research is to modify the neuron simulation to incorporate this type of flexibility and then to move on to trying to use it to evolve insects capable of learning and adaptation in somatic time.

7. Past Failures

I have already made one stab at trying to build a system that uses genetic algorithms and developmental biology to grow neural nets. To put it bluntly, I failed. However, it did teach me a number of important lessons.

1. I still did not know enough about the details of developmental biology, and biology in general. This was one of the factors that helped to spur me into the decision to go back to school to get a bachelor degree in biology, and then pursue a doctoral degree in neurobiology.
2. I did not know enough about research in this area that had already been done. It turned out that there were several people who had done work in this area, though none I could find were doing anything exactly like what I was looking to do. I have several ideas I will not discuss here that they were not looking into.
3. I was going at my research backwards. I was trying to build a system that would grow a neural network, when I had still yet to build a neural network simulator that really worked. I did not understand enough of the details of what was involved in simulating neurons to really define what I was trying to grow! This is why I decided to first build the insect simulator system and use a human engineered neural network that could perform most of the basics of what I was wanting to do. After I got a neural network simulator that worked, then I could go back and use that information to really define the problem of how do you then grow it.
4. The system I built was to complicated. Just as with any simulator system, in order to use the principles of developmental biology it will be necessary to try and distill out some of the major principles to create a system that retains the emergent, complex behavior seen in nature, without being so complicated that it takes forever to run. This will be a difficult, perhaps even impossible, proposition with the current computer technology. However, I believe it can be done, and I am willing to tackle the problem.
5. At first I tried to use a SQL server database for this application so that I could keep track of what was happening in the system an easily analyze that data. However, it quickly became apparent that there was no way a system would work using a database like this. It was way, way, way to slow. I then found a simple, in-memory database and built the whole thing using this. I did some initial speed tests and such to try and make sure it would work. However, I still underestimated how much speed I would need, and overestimated how fast this database system could work with real data. So while it was orders of magnitude faster than using SQL Server, it was still to slow to be of any real use. I used this lesson when I built the insect simulator. All aspects of the simulator were built using simple data types like matrices, and everything was explicitly in-memory. The user interface could then request data from the system and display it. It was basically just a window into the memory. For example, when you see pictures of the insect simulator what is really happening is that at each time step the user interface is asking the system what is the position and orientation of the insect and its legs. It gets that information and paints a picture of the insect onto a picture of the environment. When you see a graph of the values of a neuron, then that graph is asking the system for the current firing activity of neuron X, and it is plotting it over time. The future developmental system will use this same type of program structure in order to be as fast and efficient as possible.

8. Timeline

That is the basics of the research I would like to work on within the next 2-5 years. I definitely have some long term plans in mind as well, but they will depend critically on what happens with these initial steps. So there is no point in going into details on those. I hope to have the 3D simulator and the hexapod robot system done by January 1st, 2003. (Here's hoping.) Then I begin working on a new system to evolve the neural nets using all of the information garnered from my past failure and research into this area done by other scientists. I plan to come back and update this website after I complete each phase of my research. So if you are interested, then be sure to check back every six months or so to see if there is anything new!

<< Previous Contents Home Next >>

MindCreators.Com is edited and maintained by David Cofer. If you have any questions, comments, or just want to discuss the contents of this website, then email me at:

Copyright © 2002 by David Cofer. All rights reserved.