Cognitive Robotics

 

Genetic Algorithm Proposal

Page history last edited by Tyler 1 yr ago

 

Project Proposal

 

-Tyler Goeringer

 

 

 

            At this point in the semester, I feel it is very important that we set down some specific goals for our research project.  We have already made a very large decision in that we are going to work with a virtual simulation, however, we still have not created any definitive design decisions.  Based on class discussion, it seems that we have many ideas on how to achieve our goal of a robot which can formulate its own idea of what an object is.  As this is a research project and in a very forward and challenging field, I believe that our different ideas our a strong point for our team.  Rather than form one large group that focuses a single strategy for robot learning, it might be beneficial to form two or three groups each with different methods.

            How many groups we form would be, of course, up for discussion.  I would suggest splitting into two main groups: one group favoring a genetic/evolutionary approach, and one group favoring a strategic approach (I will talk about these more later).  Before the groups split up, there are still many items which we need to accomplish that we should standardize, thus giving us a better ability to compare the different results for each strategy.

            The first step at this point is finding, developing, and learning to use a robotic simulation program.  I have done some research on this and found what appears to be a very good choice: http://simbad.sourceforge.net/.  Simbad is a free 3D robotic simulation program written in Java.  Many of the features necessary are already contained including sonar sensor capability.  In fact, it even has a neural network library and an evolutionary algorithm library, which would greatly speed up the development of our simulations and give us more time to focus on the design and testing phases.  Also, all of the source is available and can be modified under the GNU General Public License, so we can modify and tweak anything we want to change for our simulation.

            Next we need to set the groundwork for our robots: data interpretation and storage.  The data storage is a key component in our design decisions, as the way data is stored can greatly impact the way it is manipulated.  For example, if we stored the word cat in an array linked with its definition, finding a synonym for it would require a vast search of definitions and comparisons.  However, if we stored cat in a graph-type structure, we could link synonyms as we added them and later they would all be connected to one another.  Obviously this example isn't perfect but the idea is the same when looking at how we store things like image schema. 

            As far as our research goes, at this point we are most interested in the way the robots learn, and thus designing a way to interpret and store the robots sensory data should be done within the whole class.  Once we make that decision, we have only one more major united design decision: how to implement curiosity.  It seems that one thing that is nearly universally agreed upon, is that a robot will not learn on its own without some form of “curiosity.”  Basically, we need to implement in our robots a need to learn more about their environment.  This part should be relatively simple when compared to other design decisions, and so it would be easiest to make our design for this portion universal as well.

            The final decision goes back to separating the class into groups.  Keep in mind these are just my ideas and my suggestions and I expect there will be some feedback to this.  First I'll discuss the genetic/evolutionary approach.  The goal of so-called evolutionary algorithms is to create a large number of test subjects and promote “the survival of the fittest.”  In this context, we might start by creating many slightly different robots and having them run through a test such as navigating their way through a maze.  After this, the first certain number of robots to complete the test can then be “mated,” that is, have some of their attributes combined into a child robot.  Also, evolutionary algorithms also allow for random mutations of the code in order to develop changed and often entirely new behaviors.  Repeating this process with various tests designed to look for intelligence in our simulation would hopefully allow us to create a robot with an internal algorithm that is a fair representation of intelligence, and likely in a way very few humans could wrap their mind around in such short periods of time.

            Now for the strategic approach.  The strategic approach differs primarily from the genetic approach in that it uses mostly human defined algorithms that are in their core set in stone.  This does not mean their results are not as good, only that their design is often more complicated and some core elements will not change unless the design team explicitly decides to do so.  However, this has the advantage over the genetic approach in that it is much more directed and many methods have already proven some degree of success, whereas with genetic algorithms, a lot is left up to chance and so it could take longer to reach the desired result.  So with a strategic approach, we go one step beyond simply defining curiosity and a means to interpret and store data, we actually give it a definitive method for “learning,” and then let it loose and see what it achieves.

            Although there are other methods for robotic learning, these are the two major strategies I see as distinct enough to require separate groups to work on.  In the end I believe that performing our research in multiple methods will not only give us better results, but also give us a very good way of comparing our results.

 

Comments (0)

You don't have permission to comment on this page.