B-Soccer is a program that should breed teams of simulated autonomous clients that have the capability of playing soccer according to the rules of RoboCup. It uses artificial neuronal nets (ANNs) to control the movements of the robots. These ANNs learn how to play soccer using a genetic algorithm.
B-Soccer is based on Java Soccer. It implements ANNs that can be used as control systems for the simulated robots of Java Soccer.
In order to apply the genetic algorithm it implements a soccer division. This division manages a set of teams. Each of these teams consists of five players, where every player is a Java Soccer robot equipped wit a B-Soccer control system. The division has the capability to start soccer games between its teams and stores the results. This allows a qualification of fitness (to play soccer) for the teams. The fittest teams of different divisions can be used to form new divisions by applying genetic operations. The idea of B-Soccer is strongly related to the research field of neuro evolution.
I started this project because I wanted to verify if the development of soccer teams by means of neuro evolution is possible. My optimism, that it could be possible is based on the results out of the Nepros-Project on which I worked the last years.
Another important motivation for me to launch this program was to learn how to use Java, how to manage a server running distributed programs on it.
B-Soccer is written in Java. I use the standard JDK features in combination with the GNU make facility. Much of the functionality of Java Soccer is used in order to save programming time (Tucker Balch did really a great job) and to have a platform on which it can be easily compared to other soccer teams.
To insure software quality I use J-Unit that allows easily to define and run unit test.
I invent everybody to take the code, and to go on with the development of B-Soccer. Send me your results, suggestions, critics, ... even if you don't like B-Soccer at all.
Most basic classes are implemented and have according test cases. A first integration is done in the alpha package. Goal of the alpha package is to have a stand alone version of B-Soccer and to uses the results of this implementation to build a distributed version later.
A first integration of various packages was done in the alpha package. It is now possible to start a division containing a 6 alpha teams. The parameters for the players of these teams are generated by a random generator. This means they do not have any explicit knowledge of how to play soccer. So the behavior of them is rather strange. Most of the players even don't like to play soccer at all, but if you watch long enough you will find one or more players that treat the ball somehow in a sensible manner. They could be the base for a evolutionary process that generates soccer playing teams.
Try it out: Applet containing an AlphaDivision, Applet containing a soccer simulation.
As a result of this first integration I have decided to develop something like a training camp where players learn the bases of playing soccer. Later they will be grouped to teams that improve their ability of playing soccer within an AlphaDivision.
Wolfgang Wagner
Scherzergasse 6/12
A-1020 Vienna
[email protected]
Simulation of Obstacle Avoid...