AutROBB (Automatic Robot Behaviour Builder)
Genetic Programming is the main topic of my undergraduate theses. The theses described an environment for solving agent-based problems using genetic programming. The program creates a 'behavior' or a program to be used by simulated robots. The robots are given an environment and some task to do, but they are not given the program or the steps to do it by.
A technique known as genetic programming combines various programming construct (operators and values) to automatically create a behavior/program that best solves the problem. The program created by this tool allows the agent to move around in the environment, change enviromental conditions, as well as working with internal states.
Genetic Programming
Genetic programming is a programming algorithm that uses evolutionary method to solve a problem. A population of programs is randomly generated. Each individual program consists of chromosomes (which are basically programming constructs such as operators and values). For each program the fitness of the program is calculated based on how well they solve the problem.
The next generation is calculated by combining chromosomes from the current generation. The higher the fitness of an individual, the higher the probability that the individual can reproduce.
Autrobb
The program I create allows a user to create a 2-d environment consisting of an agent and several objects. The user can determine the reward for an agent performing a particular object. The agent is allowed to manipulate the objects to achieve the goals.
Some of the task that the agent is able to do using the created environment:
- An ant agent that eats all food in an environment (a basic problem in GP).
- An agent that turns off all the lights
- An agent that must exit a maze
A particular interesting aspect of this research was the use of states, whether agent's internal states or object states (such as lights off or on). One of the operator in the chromosome allows the checking and changing of states. However, results show that the ending program mostly ignored these explicit states, instead choosing to do things reactively.
Project Details
- Timeframe: January 2000 - February 2001
- Programming Environment: Java, Swing
