Abstract:

The ultimate goal regarding this research was to make an intelligent learning machine, thus a new method had to be developed. This was to be made possible by creating a programme that generates another programme. By constantly changing the generated programme to improve itself, the machines are given the ability to adapt to there surroundings and, thus, learn from experience.
This generated programme had to perform a specific task. For this experiment the programme was generated for a simulated PIC microcontroller aboard a simulated robot. The goal was to get the robot as close to a specific position inside a simulated maze as possible. The robot therefore had to show the ability to avoid obstacles, although only the distance to the destination was given as an indication of how well the generated programme was performing.
The programme performed experiments by randomly changing a number of instructions in the current generated programme. The generated programme was evaluated by simulating the reactions of the robot. If the change to the generated programme resulted in getting the robot closer to the destination, then the changed generated programme was kept for future use. If the change resulted in a less desired reaction, then the newly generated programme was removed and the unchanged programme was kept for future use. This process was repeated for a total of one hundred thousand times before the generated program was considered valid.
Because there was a very slim chance that the instruction chosen will be advantageous to the programme, it will take many changes to get the desired instruction and, thus, the desired result. After each change an evaluation was made through simulation. The amount of necessary changes to the programme is greatly reduced by giving seemingly desirable instructions a higher chance of being chosen than the other seemingly unsatisfactory instructions.
Due to the extensive use of the random function in this experiment, the results differ from one another. To overcome this barrier, many individual programmes had to be generated by simulating and changing an instruction in the generated programme a hundred thousand times.
This method was compared against Genetic Algorithms, which were used to generate a programme for the same simulated robot. The new method made the robot adapt much faster to its surroundings than the Genetic Algorithms.
A physical robot, similar to the virtual one, was build to prove that the programmes generated could be used on a physical robot.
There were quite a number of differences between the generated programmes and the way in which a human would generally construct the programme. Therefore, this method not only gives programmers a new perspective, but could also possibly do what human programmers have not been able to achieve in the past.