View
223
Download
0
Category
Preview:
Citation preview
Genetisch Programmeren voor de
Evolutie van Robotsturingen
Bert Bonte
Promotor: prof. dr. ir. Luc Boullart
Begeleider: dr. Bart Wyns
Masterproef ingediend tot het behalen van de academische graad van
Master in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Elektrische energie, systemen en automatisering
Voorzitter: prof. dr. ir. Jan Melkebeek
Faculteit Ingenieurswetenschappen
Academiejaar 2008-2009
Genetisch Programmeren voor de
Evolutie van Robotsturingen
Bert Bonte
Promotor: prof. dr. ir. Luc Boullart
Begeleider: dr. Bart Wyns
Masterproef ingediend tot het behalen van de academische graad van
Master in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Elektrische energie, systemen en automatisering
Voorzitter: prof. dr. ir. Jan Melkebeek
Faculteit Ingenieurswetenschappen
Academiejaar 2008-2009
Dankwoord
Ik wil hierbij graag iedereen bedanken die rechtstreeks of onrechtstreeks bijgedragen
heeft tot dit werk. Met name Bart voor zijn advies, overleg, naleeswerk en enthousi-
asme. Ook iedereen met wie ik een inspirerend gesprek voerde met nieuwe ideeën tot
gevolg, of gewoon een luisterend oor om alles even te laten bezinken. En tenslotte ook
mijn ouders, niet alleen voor het nalezen, ook voor alle gekregen kansen.
i
Toelating tot bruikleen
�De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en
delen van de scriptie te kopiëren voor persoonlijk gebruik.
Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met
betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van
resultaten uit deze scriptie.�
Bert Bonte, mei 2009
ii
Samenvatting
Met behulp van genetisch programmeren, een techniek gebaseerd op evolutionaire pro-
cessen uit de natuur, werden sturingen en sensorencon�guraties voor mobiele robots
ontwikkeld. We toonden aan dat het mogelijk is om met behulp van GP sturingen voor
autonome mobiele robots te ontwikkelen die in staat zijn om doorheen gangenstelsels te
navigeren, zowel in deze waarop tijdens de evolutie getraind werd als volledig nieuwe.
Het is dus mogelijk om een algemene sturing te ontwikkelen voor een bepaalde taak
zonder alle omgevingen vooraf te kennen. Bovendien werd gebruik gemaakt van de
relatief realistische simulatieomgeving van het EyeBot platform.
Hiervoor bleek een variant op de gelaagd leren methode heel geschikt. De sturingen
werden getraind in omgevingen die in de loop der generaties telkens complexer werden.
We stelden vast dat de diversiteit binnen categorieën van leervoorbeelden heel belang-
rijk is om een goed resultaat te bekomen. Door ook de leertijd gradueel te verhogen,
waren we in staat om veel sneller tot een goed resultaat te komen dan zonder gelaagd
leren. Na het toevoegen van ruis stelden we een duidelijke verbetering van het resultaat
en de robuustheid vast.
Het basisgedrag van de meeste sturingen bestond uit het volgen van de linkermuur. Dit
illustreert de kracht van het evolutieproces om eenvoudige maar zeer robuuste oplos-
singen te ontwikkelen. Ook waren we in staat om het probleem op te schalen naar een
complexere opstelling met exact dezelfde evolutieparameters, enkel de rekentijd werd
verhoogd. Na succesvolle evolutie in simulatie, was de ontwikkelde sturing in staat om
het gewenste gedrag ook in realiteit te herhalen.
Verder bleek duidelijk dat de co-evolutie van sturing en morfologie van sensoren voor-
delig kan zijn. Het evolutieproces was in staat om goed geplaatste sensoren te kiezen
om zo een e�ciënte maar toch eenvoudige sturing te ontwikkelen. Om tot dit resultaat
te komen was het wel nodig om aan de �theidsfunctie een extra bonuscomponent toe
te voegen zodat de evolutie er werd toe aangezet om zuinig om te gaan met het aantal
gebruikte sensoren. Telkens observeerden we een geleidelijke evolutie van het sensorge-
bruik tijdens het evolutieproces. We stelden vast hoe de evolutie de minst belangrijke
sensoren eerst wegliet, om uiteindelijk enkel de beste over te houden. Bovendien werd
duidelijk dat diagonaal geplaatste sensoren, wegens het grotere bereik, duidelijk de
voorkeur verdienen.
Trefwoorden
Genetisch programmeren, evolutionaire robotsturingen, morfologie van sensoren.
iii
Genetic Programming for Evolving RobotControllers
Bert Bonte
Supervisors: Bart Wyns, Luc Boullart
Abstract—We showed that, even with a standard PC and limited compu-tation time, Genetic Programming is able to evolve efficient controllers forrobots performing corridor following in a simulation environment. There-fore, a mixed form of layered learning was used. We stated that it is impor-tant to provide sufficient diversity in the training environments. Further-more, the controller was also successfully applied to a real robot environ-ment. Finally, controller and sensor morphology were co-evolved, resultingin an improved sensor configuration.
Keywords— Genetic Programming, Evolutionary robotics, Sensor mor-phology.
I. INTRODUCTION
TODAY many interesting and realistic applications whererobots can be used are too difficult for the current state-
of-the-art. Robots are mainly used for relatively easy and repet-itive tasks. Fully autonomous robots in realistic applications areexceptions. This is mainly caused by the highly complex devel-opment of those systems.In nature however, very powerful processes exist that are ableto combine basic elements in a robust way that lead to very in-genious and efficient solutions. Using the concept of survivalof the fittest, robot controllers and robot systems can be evolvedjust like organisms in nature. Therefore, using natural processes,robust robot controllers can be developed without complexityburden for human developers. By using the Genetic Program-ming paradigm, an evolutionary method based on program in-duction [2], we can thus automatically evolve robot controllers.In this work, we will use corridor following to test the abilitiesof GP. The robot must navigate in a sequence of corridors fromstart to end as efficient as possible and without collisions. Un-like some other work in literature, we will not make use of ahighly simplified simulation environment. Instead, the simula-tion environment from the EyeBot platform was used.We will not only try to evolve mobile robot controllers that cansuccessfully navigate in corridor systems on which the robottrained during the evolutionary process. The controller shouldbe general enough to cope with environments that were not usedduring evolution as well. Furthermore, we want to verify if evo-lution in simulation can be successfully transferred to reality.Finally, we also investigate the possibility of simultaneous evo-lution of controllers and sensor morphology.
II. GENETIC PROGRAMMING
Genetic Programming uses a population of computer pro-grams encoding a possible robot controller. Each generation,only the best performing programs are selected to bread andhave their children added to the population of the next genera-tion. The computer programs are hierarchically structured LISPtrees containing both functions, that accept an arbitrary number
of arguments, and terminals [2]. The selection of the best pro-grams is based on the fitness function that is defined to modelhow well the desired behaviour is matched.We list the standard parameters for the experiments. As selec-tion algorithm, tournament selection with size 7 is used. Theprobability of crossover is 90% and reproduction 10%. Twofunctions are used: IfLess (arity 4), and PROGN2 (arity 2), bothwell known. Moreover, move forward and backward drive overa distance of 10 cm. Turn left and right makes the robot turn 90degrees in place. All three standard PSD sensors of the robotare used: front, left and right, each perpendicular on the robot.Finally, three thresholds are available: low, medium and high,respectively 75, 150 and 300 mm.Each generation all individuals are tested in three environmentsand can perform 500 movements in each environment. The fit-ness function consists of three components. As basic measure,the distance in bird’s eye perspective the robot has covered sofar is measured. Also, every collision that is detected, using asensor on each side, receives a penalty that is added to the num-ber of movements so far. Finally, a bonus component is addedwhen the robot reaches the end of the corridor system. This con-sists of a fixed part and a variable part. The variable componentis relative to the number of spare movements and thus rewardsefficient controllers.
III. EVOLVING ROBOT CONTROLLERS
A. Evolution in simulation
We investigated some variants on the layered learning ap-proach [1]. In total, 15 different environments were used. Eachof a specific difficulty, indicated by the length and the numberand type of turns.When using all 15 environments in every generation to learn thedesired behaviour, even after 3 and a half days of computationtime, no acceptable result is achieved.However, using a layered learning approach with all environ-ments grouped in 5 categories, ranging from very easy to dif-ficult, resulted in clearly better controllers. After some gener-ations of training on the first category, every given number ofgenerations, the previous category is replaced with a new, moredifficult one. Furthermore, we were able to improve the resultsby using mixed categories. By adding one clearly harder or eas-ier environment in every category, population diversity was aug-mented. This resulted in a usable and efficient result that onlyneeded a population of 300 with 50 generations. This diversityis needed in order to let the evolution build on a basis that is sta-ble (i.e. diverse) enough. Note that the calculation time of onlya single day is limited.
Adding noise to the sensor values greatly enhanced the result-ing controllers. More robust controllers were evolved using thesame parameters. We noted that gradually augmenting the num-ber of generations available for more difficult categories also im-proved the result significantly. The result was not only able tonavigate successfully in all 15 environments used during train-ing. With only two collisions, all five totally new environmentswere solved successfully as well.
B. Transfer to real world
In this section we use turns of 15 degrees instead of 90. Thisway, the controller will be able to adjust incomplete turns, whichare very common in realistic environments. Gaussian noise withstandard deviation of respectively 3 and 2 was added to the sen-sor values and steering mechanism.This is clearly a scaled up version of the previous problem.Though, only by augmenting the population size and the num-ber of generations, a very efficient solution was evolved. Thissolution is able to fulfil, with 4 collisions in total, all tested envi-ronments, whether they were used during simulation or not. Wedid note that it is not possible to determine a priori the minimalnumber of generations and population size. Two versions with apopulation of 500 where run, the first (100 generations) leadingto a very robust solution. However, the second (200 generations)was slightly more efficient and fluent in turns. But this controllerwas clearly not as robust as the first, presumably caused by thepremature convergence, in turn caused by too long training onthe same categories. An example trail of the second controlleris depicted in Figure 1.
Fig. 1. The trail of the robot in simulation in a totally new environment.
When transferring the controller to reality, a slight form of a re-ality gap was observed. Indeed, there was a performance dropmainly caused by the fact that the real PSD sensors return wrongvalues when too close to the wall. After increasing the low-est threshold, this problem was solved. The robot was able tonavigate through new environments efficiently. The robot suc-cessfully drives straight ahead, adjusts where necessary and itscurves are taken smoothly. Nevertheless we noted some morecollisions than in simulation.
IV. CO-EVOLUTION OF CONTROLLER AND SENSORMORPHOLOGY
In nature, both the controlling mechanism and the body ofan organism is evolved. The analogy can be made to evolvecontrollers and robot morphology simultaneously, hopefully re-
sulting in better suited robots and controllers for a given task. Inthis work, we will co-evolve sensor morphology and controller.Again, in simulation and with noise added to the sensor values.Note that the standard simulation environment was extended tosupport the use of an arbitrary number of sensors.An experiment with 35 possible sensor locations, each ad-dressed by a unique terminal leads to a good sensor configura-tion, as depicted in Figure 2. In order to reach a minimal sensorsuite, the fitness function awarded every successful controlleraccording to the number inused sensors. However, despite morethan 5 days of computation time, the resulting controller did notreach the expected level of robustness. Here we reached a com-plexity barrier for the evolutionary process; too many terminalslead to an explosion of the search space resulting in a problemthat is too hard to solve with a standard general purpose PC inan acceptable time span.
3
21
27
26
15
Fig. 2. All available sensors and those that were chosen by evolution.
When using 8 instead of 35 sensors, we did reach a good solu-tion for both controller and sensor morphology. We noted thatthe bonus component for less sensors is needed to result in us-able solutions. The evolutionary process clearly omits the sen-sors one by one during evolution, starting with these that areleast useful for the task. In this case, these are the sensors thatare placed orthogonal on the robot. Indeed, they only offer lim-ited coverage. Therefore the evolutionary process selects almostexclusively non perpendicular sensors, especially at the front ofthe robot. This is an important design decision that was nottaken in account when designing the real robot, which only hasperpendicular sensors.
V. CONCLUSION
We demonstrated that, even with a basic PC and limited com-putation time, GP is able to evolve controllers for corridor fol-lowing in a simulation environment by using a mixed form oflayered learning. Moreover, this controller was also transferredsuccessfully to reality. Second, we also successfully co-evolvedcontroller and sensor morphology of the robot. This resulted inan improved sensor configuration.
REFERENCES
[1] S.M. Gustafson and W.H. Hsu, Layered Learning in Genetic Programmingfor a Cooperative Robot Soccer Problem, Lecture Notes in Computer Sci-ence, 2038:291-301, 2001.
[2] J.R. Koza, Genetic Programming: On the Programming of Computers byMeans of Natural Selection., MIT Press, Cambridge, Massuchusetts, 1992.
Inhoudsopgave
1 Inleiding 1
1.1 Probleemstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Doelstellingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Genetisch programmeren 4
2.1 Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Voorstelling van een computerprogramma . . . . . . . . . . . . 6
2.1.2 Genereren van initiële populatie . . . . . . . . . . . . . . . . . . 8
2.1.3 Evaluatie van de �theid . . . . . . . . . . . . . . . . . . . . . . 8
2.1.4 Selectiemethodes . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.5 Genetische operatoren . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Uitbreidingen en varianten op GP . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Automatisch gede�nieerde functies . . . . . . . . . . . . . . . . 11
2.2.2 Gelaagd leren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Steady state GP . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Competitieve co-evolutie . . . . . . . . . . . . . . . . . . . . . . 12
2.2.5 Embodied Evolution . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Keuze voor GP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Resultaten met GP in evolutionaire robotica . . . . . . . . . . . . . . . 14
2.4.1 Ontwijken van objecten . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 Volgen van muren . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 Gangenstelsels volgen . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.4 Robotvoetbal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 De probleemstelling in detail . . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Aanpak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6.1 Keuze van terminalen en functies . . . . . . . . . . . . . . . . . 17
2.6.2 Fitheidsfunctie . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
vi
INHOUDSOPGAVE
2.6.3 Standaardparameters . . . . . . . . . . . . . . . . . . . . . . . . 22
2.7 Simulatie versus echte robot . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7.1 Afwegingen bij gebruik van simulaties . . . . . . . . . . . . . . . 23
2.7.2 Simulatieomgeving . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Robuustheid van de oplossing . . . . . . . . . . . . . . . . . . . . . . . 26
3 Evolutie van robotsturingen 28
3.1 Basisopstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Diversiteitsmaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Omgevingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Evolutie in simulatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1 Experimenten in een perfecte wereld: opstelling . . . . . . . . . 32
3.4.2 Experimenten in een perfecte wereld: resultaten . . . . . . . . . 34
3.4.3 Experimenten met ruis op de sensorwaarden: opstelling . . . . . 42
3.4.4 Experimenten met ruis op de sensorwaarden: resultaten . . . . 43
3.5 Van simulatie naar realiteit . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.1 Evolutie in simulatie . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.2 Transfer naar echte robot . . . . . . . . . . . . . . . . . . . . . 49
3.6 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4 Evolutie van robotmorfologie 52
4.1 Situering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 Werkwijze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.1 Onveranderde en aangepaste �theidsfuncties . . . . . . . . . . . 55
4.2.2 Sensoren als terminalen of als functie . . . . . . . . . . . . . . . 55
4.3 Experimenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3.1 Experiment met 35 sensoren . . . . . . . . . . . . . . . . . . . 56
4.3.2 Experiment met 8 sensoren . . . . . . . . . . . . . . . . . . . . 60
4.3.3 Experiment met 1617 sensoren . . . . . . . . . . . . . . . . . . 62
5 Besluit 66
5.1 In simulatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Van simulatie naar realiteit . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3 Co-evolutie van sturing en morfologie . . . . . . . . . . . . . . . . . . . 68
A Voorbeeldprogramma 69
vii
INHOUDSOPGAVE
B Simulatiebestanden 71
B.1 Robi-bestand met instellingen voor de robot . . . . . . . . . . . . . . . 71
B.2 Trainingsgangenstelsels . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
B.3 Veri�catiegangenstelsels . . . . . . . . . . . . . . . . . . . . . . . . . . 76
viii
Hoofdstuk 1
Inleiding
Vandaag de dag stelt zich het probleem dat veel interessante en realistische toepassingen
voor robots te moeilijk zijn voor de huidige state-of-the-art oplossingen. Robots worden
voornamelijk gebruikt voor relatief eenvoudige en repetitieve taken. De meest geavan-
ceerde robots met uitstekende sensoren en actuatoren worden meestal telegestuurd door
mensen, waarbij de robot slechts weinig of geen autonome beslissingen neemt [41]. Vol-
ledig autonome robots in realistische omgevingen zijn vooralsnog toekomstmuziek. Dit
wordt grotendeels veroorzaakt door de grote complexiteit en het intensieve werk dat
nodig is om de hardware en de sturingen voor de robot te ontwikkelen.
Natuurlijke processen zijn echter in staat om heel vernuftige en e�ciënte systemen
te ontwikkelen, allen ontstaan door het robuust samenvoegen van relatief eenvoudige
basiselementen. Eén van de krachtigste mechanismen die aan de basis hiervan ligt is
natuurlijke selectie, zoals beschreven door Charles Darwin in On the Origin of Species
[7]. Survival of the �ttest stelt dat de best aangepaste organismen meer kans hebben om
te overleven en zich voort te planten. Zo worden in de loop van de evolutie voortdurend
e�ciëntere en betere organismen ontwikkeld.
Dankzij evolutionaire robotica kunnen we gebruik maken van de kracht van natuurlijke
evolutie, gesimuleerd in een kunstmatig evolutieproces. Zo kan de input van een ont-
wikkelaar om bijvoorbeeld een autonome robot met sturing te ontwikkelen heel sterk
beperkt worden. Bovendien stijgt de rekenkracht van hedendaagse computers sterk,
waardoor alsmaar complexere problemen aangepakt kunnen worden.
In dit werk zullen we gebruik maken van genetisch programmeren (GP, Genetic Pro-
gramming. Aan de basis van deze methode ligt een populatie van individuen waaruit
iedere generatie enkel die individuen die het best een bepaalde taak kunnen uitvoeren
geselecteerd worden om zich voort te planten. Door robots en/of sturingen als indi-
viduen te gebruiken kunnen automatisch sturingen en zelfs volledige robots selectief
gekweekt worden om een bepaalde taak uit te voeren.
1
HOOFDSTUK 1. INLEIDING
1.1 Probleemstelling
We willen onderzoeken of het evolueren van robotsturingen met behulp van GP moge-
lijk is. In de literatuur is hierover immers nog maar heel weinig verschenen. Bovendien
wordt meestal gebruik gemaakt van sterk vereenvoudigde simulatieomgevingen. Ook
willen we nagaan op welke manier robotsturingen het e�ciëntst geëvolueerd kunnen
worden.
In dit werk zullen we gebruik maken van één speci�eke taak waarvoor we sturingen
wensen te ontwikkelen. Als probleemstelling kozen we voor de navigatie van een auto-
nome robot in gangenstelsels (corridor following). Hierbij is het de bedoeling dat de
robot van het startpunt naar het eindpunt van het gangenstelsel navigeert zonder bot-
singen. Bovendien moet de robot dit zo e�ciënt mogelijk doen, dus zonder overbodige
draaibewegingen, maar bijvoorbeeld ook zonder in de verkeerde richting te rijden. Dit
wordt meer in detail uitgelegd in Sectie 2.5.
1.2 Doelstellingen
Ten eerste willen we nagaan of het haalbaar is om een e�ciënte robotsturing te ont-
wikkelen die in staat is om in een omgeving te navigeren waarin de robot tijdens de
evolutie kon trainen. Bovendien werken we met strikte eisen omtrent de rekentijd. Alles
moet op een PC voor algemeen gebruik binnen een relatief beperkte tijd kunnen worden
berekend.
Verder wensen we de sturing ook zo te ontwikkelen dat deze voldoende algemeen is
om, ook in omgevingen die niet gebruikt werden tijdens het evolutieproces, succesvol
te kunnen navigeren. De robot kan dan in om het even welke omgeving ingezet worden
zonder dat deze op voorhand gekend is.
Ook willen we nagaan of het mogelijk is om na a�oop van het evolutieproces in simulatie
de resultaten succesvol over te brengen naar de realiteit. Omdat evolutie in simulatie
veel sneller kan gebeuren is dit een zeer wenselijke eigenschap.
Tenslotte zullen we gelijktijdig met de sturing ook de bouw (i.e. morfologie) van de
robot evolueren. Concreet zullen we naast de sturing ook de plaatsing van de sensoren
volledig overlaten aan het evolutieproces. We onderzoeken of dit inderdaad resulteert
in een robot met volledig aangepaste sensorencon�guratie en sturing voor het uitvoeren
van deze taak.
2
HOOFDSTUK 1. INLEIDING
1.3 Overzicht
We geven een kort overzicht van de inhoud van dit werk. In Hoofdstuk 2 gaan we die-
per in op genetisch programmeren; alle basisconcepten komen aan bod. We vermelden
ook enkele uitbreidingen en varianten op standaard GP. Verder geven we een overzicht
van de resultaten die reeds behaald werden met GP in de literatuur. Naast een korte
schets van de probleemstelling gaan we ook reeds iets dieper in op de basiselementen
die we verder zullen gebruiken om het probleem op te lossen. Ook vatten we enkele
bedenkingen en opties betre�ende het uivoeren van de evolutie in simulatie dan wel in
realiteit samen. Tenslotte komen ook enkele technieken om robuustere oplossingen te
evolueren aan bod.
Nadat alle basisbegrippen van GP werden uiteengezet, geven we in Hoofdstuk 3 een
overzicht van alle experimenten die werden uitgevoerd om te komen tot een goede stu-
ring voor de navigatie in gangenstelsels. We geven meer toelichting bij de basisopstelling
voor onze experimenten en de omgevingen waarin de sturingen zullen geëvalueerd wor-
den. Verder volgt een uitgebreid overzicht van de resultaten van de experimenten, zowel
in simulatie als in realiteit.
In Hoofdstuk 4 gaan we een stap verder, niet alleen de sturing, ook de plaatsing van
de sensoren wordt nu door de evolutie bepaald. Naast een situering van deze techniek
zetten we ook de werkwijze uit elkaar. Daarna beschrijven we uitgebreid de resultaten
van de verschillende experimenten.
We besluiten dit werk in Hoofdstuk 5 met een samenvatting van de belangrijkste resul-
taten.
3
Hoofdstuk 2
Genetisch programmeren
Evolutionaire robotica (ER, Evolutionary Robotics) [33], of het arti�cieel evolueren van
robots, is een automatische methode om e�ciënte robotsturingen te ontwikkelen. De
evolutionaire aanpak, gebaseerd op de evolutie van organismen uit de natuur, leidt
vaak tot verbazingwekkend eenvoudige, maar e�ciënte sturingen. Een voorbeeld, zoals
aangehaald in [45]: het evolutieproces ontwikkelde een sturing die verschillende types
objecten kon onderscheiden. Niet door gebruik te maken van de beschikbare camera
en geavanceerde beeldverwerkingstechnieken, maar door de correlatie tussen twee goed-
gekozen sensors te beschouwen. ER is dan ook een geschikte techniek om robots te
ontwerpen die steeds complexere taken kunnen uitvoeren.
Evolutionaire algoritmen (EA) in het algemeen zijn globale en robuuste optimalisatie-
methodes, gebaseerd op de door Darwin beschreven [7] natuurlijke evolutionaire proces-
sen. Het gekende principe van survival of the �ttest of natuurlijke selectie beschrijft dat
de best aangepaste organismen uit een populatie, niet noodzakelijk de sterkste, meer
kans hebben om te overleven en zich te kunnen voortplanten.
Bij EA wordt gebruik gemaakt van een initiële willekeurige populatie van mogelijke
oplossingen (individuen). Zo wordt de kans dat het algoritme convergeert naar een
lokaal optimum beperkt. Deze populatie evolueert dan door toepassen van genetische
operatoren en onder de selectiedruk tot steeds betere oplossingen. Het algoritme stopt
na een bepaald aantal generaties of wanneer de laatste generatie een individu bevat dat
het probleem oplost, al dan niet het globale optimum.
EA is een verzamelnaam voor verschillende technieken, allen met dezelfde basis. Voor
een overzicht verwijzen we naar [46]. Het meest gebruikt zijn de genetische algoritmen
(GA, Genetic Algorithms) en in mindere mate genetisch programmeren (GP, Genetic
Programming). Binnen ER werd GA reeds het meest gebruikt [32]. Voornamelijk ele-
mentair gedrag zoals het ontwijken van objecten, het volgen van een muur, een lichtbron
vinden, de batterijlader vinden en gangenstelsels volgen [32] werden reeds succesvol, al
4
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
dan niet in een vereenvoudigde simulatieomgeving, door GA opgelost. Bij GA worden
de parameters van de sturing, zoals de gewichten voor het neurale netwerk (de basis
van GA), geëncodeerd in een tekenreeks van vaste lengte. Een populatie van dergelijke
tekenreeksen ondergaat de evolutie door kruisen en mutatie, om tot een goede sturing
te komen.
Bij GP worden volledige computerprogramma's van variabele lengte geëvolueerd. Op
basis van de prestatie van de programma's wordt natuurlijke selectie doorgevoerd, deze
vormt de evolutionaire druk voor het evolutieproces. Verder beschouwen we enkel nog
GP.
We overlopen kort de indeling van dit hoofdstuk. Eerst besteden we aandacht aan de
basiselementen en werking van genetisch programmeren. Verder komen ook een aantal
uitbreidingen en varianten op standaard GP kort aan bod. Daarna geven we toelich-
ting bij onze keuze voor GP. Vervolgens geven we een overzicht van enkele belangrijke
resultaten van GP in evolutionaire robotica. Daarna lichten we de probleemstelling toe
die we in de rest van dit werk zullen behandelen. We ronden af met een bespreking van
de problematiek rond het al dan niet gebruiken van simulaties en over de robuustheid
van de oplossingen van GP.
2.1 Methode
De techniek van genetisch programmeren werd voorgesteld door John Koza [17]. Het
concept bestaat uit het genetisch voortplanten van populaties van computerprogram-
ma's om een speci�eke taak uit te voeren. Men kweekt als het ware computerpro-
gramma's, tot een programma gevonden wordt dat succesvol een bepaalde taak kan
uitvoeren. De individuen in de populatie zijn hiërarchisch gestructureerde computer-
programma's van variabele grootte, meestal voorgesteld als een boom, bestaande uit
functies en argumenten.
Alles start met een populatie van willekeurig gegenereerde programma's. Dan wordt
ieder individu geëvalueerd op basis van zijn prestatie voor een bepaalde taak: de �t-
heid. Vervolgens worden aan de hand van de �theid individuen geselecteerd waarop
genetische operatoren worden toegepast. Zo ontstaan nieuw gekweekte programma's
die worden toegevoegd aan een nieuwe populatie van programma's. De huidige popu-
latie wordt dus vervangen door een nieuwe, de volgende generatie, met daarin evenveel
individuen. Dit proces gaat door tot een bepaald aantal generaties (i.e. iteraties) be-
reikt wordt, wanneer een zekere �theidswaardedrempel overschreden wordt, of wanneer
de �theid niet of nauwelijks meer stijgt. Het individu met de hoogste �theid is dan het
eindresultaat.
5
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Generatie van een populatie
willekeurige computerprogramma’s
Voor alle individuen:
evaluatie van fitheid
Selectie van individu(en)
Selectie en toepassing van
genetische operator
Resulterende individu(en)
toevoegen aan volgende generatie
Herhaal
Figuur 2.1: Overzicht van GP basisstappen.
We bekijken nu speci�ek al deze basisstappen, zoals weergegeven in Figuur 2.1, in iets
meer detail [17, 19, 44].
2.1.1 Voorstelling van een computerprogramma
De basisblokken van ieder programma zijn functies en terminalen. Functies zijn bijvoor-
beeld wiskundige (+, -, *, /, ...), logische (AND, OR, ...), of conditionele (IF-ELSE,
...) operatoren, en meer domeinspeci�eke functies. Voor iedere functie wordt het aantal
argumenten, de ariteit, gede�nieerd. De functies zijn de interne knopen van de boom.
In tegenstelling tot functies nemen terminalen geen parameters aan, dit zijn de bladeren
van de boom. Het zijn doorgaans constantes of invoerwaarden uit het probleemdomein
(bv. sensorwaarden). Deze terminalen zijn de argumenten voor de functies. Voor beide
types basisblokken is er keuze uit een vooraf gede�nieerde verzameling, afhankelijk van
de toepassing die men voor ogen heeft.
De multidimensionale zoekruimte bestaat nu uit alle mogelijke recursieve composities
van functies en terminalen. Om deze samen te stellen, wordt gebruik gemaakt van
S-expressies, in feite LISP-programma's. Deze zijn heel hiërarchisch en bijgevolg heel
geschikt. Bovendien bevatten de S-expressies uitvoerbare code en data in dezelfde vorm
en kunnen ze eenvoudig dynamisch aangepast worden. Dit is heel belangrijk voor het
e�ciënt toepassen van de genetische operatoren.
Een voorbeeldprogramma wordt weergegeven in Figuur 2.2. De functieset bestaat uit
-, *, Abs, de eerste twee met ariteit 2, de laatste met ariteit 1. De terminalen zijn 1,
6
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
-
* Abs
x - -7
1 x
Figuur 2.2: GP voorbeeldprogramma.
-7, x. Dit programma wordt recursief uitgevoerd, beginnend bij de wortel.
Er zijn echter nog twee bijkomende voorwaarden nodig om een zinvol programma te
construeren uit de functie- en terminalenverzameling.
Sluiting
De sluitingseigenschap (closure) stelt dat iedere functie moet gede�nieerd zijn voor alle
mogelijke argumenten met waarden uit de volledige functie- en terminalenverzameling.
Zo zal bijvoorbeeld de mogelijke deling door 0 moeten aangepakt worden, vierkantswor-
tels van negatieve getallen, ... Doorgaans wordt dit opgelost door dergelijke functies in
de functieverzameling te vervangen door een beveiligde variant. Deze controleert eerst
de argumenten, pas wanneer deze voldoen, wordt de eigenlijke functie uitgevoerd. In
het andere geval zal een standaardwaarde als resultaat worden teruggegeven.
Toereikendheid
De toereikendheidseigenschap (su�ciency) stelt dat het probleem waarvoor een pro-
gramma geëvolueerd wordt, oplosbaar moet zijn met de gekozen verzameling van func-
ties en terminalen. Bij gebruik van GP moet de operator er dus op toezien dat de
functies en terminalen die gekozen werden relevant zijn voor het probleemdomein. Op
deze manier kan de �nale oplossing van het probleem adequaat worden beschreven. Het
niet opnemen van essentiële functies kan er immers toe leiden dat de oplossing van het
probleem niet gevonden wordt, terwijl het opnemen van onnodige functies de rekentijd
van GP nadelig kan beïnvloeden. De moeilijkheidsgraad voor de keuze van de basis-
blokken is afhankelijk van de probleemstelling. Soms is de keuze triviaal, in andere
gevallen is deze heel complex.
7
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
2.1.2 Genereren van initiële populatie
Om willekeurige individuen te construeren wordt een willekeurige functie of terminaal
gekozen als startknoop, vervolgens worden afhankelijk van de ariteit van de knopen
nieuwe functies en terminalen toegevoegd als argumenten van de bovenstaande func-
ties, en dit totdat alle bladeren van de boom bezet zijn door terminalen.
Om dit concreet uit te voeren beschreef Koza een aantal mogelijkheden. De full -
methode leidt tot een boom waarbij de diepte van alle bladeren dezelfde is, de boom is
dus perfect gebalanceerd. Deze diepte wordt vooraf vastgelegd. Bij de grow -methode
mag de diepte waarop een blad zich bevindt een opgegeven maximum niet overschrij-
den. De meest gebruikte aanpak, ramped half-and-half, is een combinatie van beide.
Voor iedere diepte wordt telkens de helft van alle bomen met de grow -methode, en de
andere helft met de full -methode geconstrueerd. Deze methode leidt tot grootste diver-
siteit in de initiële populatie. Op deze manier zullen de individuen beter verdeeld zijn
over de volledige zoekruimte, wat doorgaans een voorwaarde is voor een goed resultaat.
Een belangrijke parameter hierbij is de grootte van de populatie. Deze legt in grote
mate de maximale diversiteit van de populatie vast, maar bepaalt ook heel sterk de
rekentijd van het evolutieproces. Eventuele duplicaten worden uit de initiële populatie
verwijderd en vervangen door een ander programma.
2.1.3 Evaluatie van de �theid
Om aan te geven hoe een bepaald programma presteert in het beschouwde probleemdo-
mein, wordt na een evaluatie een �theidswaarde toegekend aan het programma. Koza
de�nieerde onder andere ruwe, standaard, aangepaste en genormaliseerde �theid [19].
We gaan hier niet verder op in, temeer omdat we aan één waarde voldoende hebben om
de prestaties van programma's met elkaar te vergelijken. Om een voldoende algemene
�theid te kunnen berekenen wordt het individu vaak geëvalueerd op basis van meerdere
gevallen, de �tness cases. De �theidsfunctie moet voldoende algemeen zijn, zodat de
evolutie voldoende vrijheid heeft in het oplossen van het probleem. Naast de functie-
en terminalenverzameling is dit een van de belangrijkste keuzes die de operator moet
maken om het evolutieproces te sturen. We komen meer in detail op �theidsfuncties
terug in paragraaf 2.6.2.
2.1.4 Selectiemethodes
De kern van de evolutietheorie stelt dat vooral de best aangepaste individuen zich
kunnen voortplanten. Om deze natuurlijke selectie te kunnen doorvoeren bestaan een
aantal selectiemethodes om individuen van de oude generatie te selecteren. Deze kun-
8
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
nen dan, al dan niet in aangepaste vorm, overgaan naar de volgende generatie. De twee
belangrijkste selectiemethodes zijn �tness proportionate selection (FPS) en tornooise-
lectie (TS, tournament selection).
Bij gebruik van FPS is de kans op selectie proportioneel met de �theid van het indivi-
du. Betere individuen hebben dus meer kans om geselecteerd te worden en te kunnen
voortplanten. De kans van selectie is dan de �theid van het individu over de som van
de �theden van de hele populatie.
Bij TS wordt vooraf een parameter gede�nieerd, de grootte van het tornooi. Er worden
willekeurig individuen geselecteerd tot de tornooigrootte bereikt is. Enkel het beste
individu uit het tornooi gaat dan verder. De selectiedruk van deze methode ligt hoger,
zeker naarmate de tornooigrootte stijgt.
Soms wordt ook gebruik gemaakt van elitisme, dit garandeert dat de beste individuen
(of het beste individu) naar de volgende generatie overgaan. Omdat GP een probabi-
listische methode is, is dit zonder elitisme wel waarschijnlijk, maar nooit zeker.
2.1.5 Genetische operatoren
Telkens een aantal individuen geselecteerd werden voor voortplanting zullen hieruit
door middel van genetische operatoren (i.e. voortplantingsoperatoren) nieuwe indi-
viduen voor de volgende generatie gecreëerd worden. Aan iedere genetische operator
wordt een probabiliteit toegekend die de waarschijnlijkheid aangeeft waarmee deze ope-
rator gebruikt zal worden. Doorgaans wordt per nieuw gecreëerd individu slechts één
operator gebruikt.
De operatoren zijn gebaseerd op de genetische operatoren uit de natuur, deze vormen
bij de voortplanting het genoom (i.e. de verzameling van alle genen) van het nieuwe
organisme op basis van de ouderlijke genomen. We bespreken kort de belangrijkste
operatoren.
Reproductie is de eenvoudigste operatie, het gekozen programma wordt onveranderd
opgenomen in de populatie van de volgende generatie. Doorgaans is de probabiliteit
dat deze operator gebruikt wordt eerder klein (5-10%).
Kruising start met twee geselecteerde programma's uit de huidige generatie en levert
twee nieuwe programma's voor de volgende generatie. Een voorbeeld van deze operator
is uitgewerkt in Figuur 2.3. Voor elk van de twee gekozen individuen wordt een wille-
keurig kruisingspunt (i.e. een knoop uit de boomvoorstelling) gekozen. Deze worden op
de afbeelding met dikkere cirkels weergegeven. Vervolgens worden de deelbomen onder
deze knopen met elkaar verwisseld om te komen tot de twee nieuwe programma's. De
probabiliteit van deze operator is doorgaans groot (80-90%).
Mutatie kan op twee manieren geïmplementeerd worden. Ofwel wordt een willekeurig
9
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
A
B C
F A E
D F
A
A C
F D
A
A C
DC
E
A
B F
F A
D F
F F
Figuur 2.3: GP voorbeeld van genetische operator: kruising.
A
B C
F A E
D F
A
A C
E F E
Figuur 2.4: GP voorbeeld van genetische operator: mutatie.
gekozen terminaal of functie vervangen door een andere willekeurige terminaal of func-
tie. Meestal wordt dit echter algemener bekeken en zal een willekeurig geselecteerde
deelboom vervangen worden door een willekeurig gegeneerde deelboom. Een voorbeeld
hiervan is te zien in Figuur 2.4, de wortelknoop van de geselecteerde deelboom is dikker
aangeduid. De probabiliteit voor deze operator is meestal laag (5-10%). Mutatie kan er
voor zorgen dat er opnieuw voldoende diversiteit in een populatie geïntroduceerd wordt
wanneer vroegtijdige convergentie dreigt. Echter, in vele probleemstellingen kan deze
operator weggelaten worden [19].
Er werden door Koza nog andere, geavanceerdere genetische operatoren voorgesteld,
zoals permutatie, encapsulatie en decimatie [19]. Deze worden echter minder frequent
gebruikt, we gaan hierop dan ook niet verder in.
10
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
2.2 Uitbreidingen en varianten op GP
Een aantal uitbreidingen en varianten op standaard GP werden reeds beschreven en
toegepast. We geven een heel beknopt overzicht met de nadruk op technieken die
relevant zijn voor ER.
2.2.1 Automatisch gede�nieerde functies
Automatisch gede�nieerde functies (ADF, Automatically De�ned Functions) [20] wer-
den voorgesteld als uitbreiding om GP nog meer modulair te maken. Concreet zal de
programmaboom dan bestaan uit één of meerdere takken die functies de�niëren, en een
resultaatproducerende tak die functies kan oproepen zoals gede�nieerd in de andere
tak(ken). Dit laat toe om de decompositie van het probleem in meerdere deelproble-
men, en de correlatie tussen de verschillende deelproblemen aan de evolutie over te
laten. In [20] worden een aantal succesvolle toepassingen van deze techniek beschreven.
2.2.2 Gelaagd leren
Layered learning of gelaagd leren, laat GP toe om een complexe taak te leren aan de
hand van verschillende subtaken die op elkaar voortbouwen. Het complexe probleem
wordt opgedeeld in verschillende deelproblemen die sequentieel door standaard GP op-
gelost worden. De populatie van de laatste generatie voor een bepaald deelprobleem zal
dan gebruikt worden als startpopulatie voor het volgende deelprobleem. In sommige
gevallen laat gelaagd leren toe om gemakkelijker te de�niëren �theidsfuncties te ge-
bruiken. Bovendien is het heel natuurlijk om een probleem op te delen in verschillende
eenvoudigere deelproblemen.
In [13, 14] werd aangetoond dat om complex gedrag aan te leren het voordeliger kan
zijn om gebruik te maken van GP met gelaagd leren dan standaard GP. In een (sterk)
vereenvoudigde simulatieomgeving werden drie robots geleerd om een bal rond te spe-
len zodanig dat een vierde robot deze niet kan bemachtigen. Er werd gebruik gemaakt
van twee lagen (i.e. twee deelproblemen). Het eerste is het precies rondspelen van de
bal tussen drie robots, zonder dat de vierde robot aanwezig is. De �theidsfunctie hier
bestaat uit het maximaliseren van het aantal keren de bal precies doorgespeeld werd
naar een andere robot.
Met de laatste generatie robotsturingen voor dit probleem start men voor aanleren van
het volgende deelprobleem. Nu wordt wel gebruik gemaakt van de vierde robot. De
robots moeten nu niet alleen de bal precies rondspelen, ze moeten ook bewegen om de
bal te kunnen ontvangen zonder dat de vierde robot deze onderschept. De �theidsfunc-
11
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
tie bestaat er nu in om het aantal keer dat de bal geraakt werd door de vierde robot
te minimaliseren. Op deze manier werd de beoogde complexere taak aangeleerd door
opsplitsing in verschillende eenvoudigere taken.
2.2.3 Steady state GP
Steady state GP, zoals bijvoorbeeld gebruikt in [47], maakt geen gebruik van de gene-
rationele aanpak zoals hierboven beschreven. De nieuwe generatie programma's zal dus
niet telkens de oude generatie volledig vervangen. Bij deze aanpak gebeuren de vervan-
gingen incrementeel: telkens een of meerdere nieuwe individuen geproduceerd werden
door toepassing van genetische operatoren, worden deze aan de populatie toegevoegd
en worden de slechtste individuen (evenveel als er nieuwe werden toegevoegd) uit de
populatie verwijderd.
2.2.4 Competitieve co-evolutie
Bij competitieve co-evolutie [9, 33, 37] maakt men gebruik van een zogenaamde wa-
penwedloop tussen verschillende populaties. Zowel de invoer voor het probleem als de
oplossingen worden geëvolueerd. Voorbeelden zijn een populatie prooirobots en een po-
pulatie roofdierenrobots, die beide evolueren en dus steeds tegen betere tegenstanders
geëvalueerd worden [9, 33]. Ook andere problemen hebben een competitieve natuur,
bijvoorbeeld het leren van robotvoetbal [37]. Deze lenen zich heel goed tot competitieve
co-evolutie waarbij een populatie het opneemt tegen een andere, en beide gelijktijdig
evolueren. Er is aangetoond dat dit kan leiden tot meer robuuste oplossingen. Een
enkele populatie tegenover bijvoorbeeld een handgecodeerde oplossing zal vaak in staat
zijn om een bepaalde strategie te ontwikkelen die geschikt is tegen deze ene handge-
codeerde tegenstander. Echter, bij co-evolutie zal de andere populatie telkens nieuwe
combinaties van technieken uitproberen om toch maar beter te presteren dan de andere
populatie. Een evenwichtstoestand wordt dus maar zelden bereikt.
2.2.5 Embodied Evolution
Embodied Evolution maakt gebruik van een populatie van robots die met elkaar repro-
duceren terwijl ze zich in de omgeving bevinden waar ze hun taak uitvoeren. Evaluatie,
selectie en reproductie worden uitgevoerd door de robots zelf, in interactie met elkaar
[39, 40]. Dit is een gedistribueerde aanpak.
12
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
2.3 Keuze voor GP
We vermelden kort een aantal voordelen van GP die ons er toe brachten om gebruik
te maken van deze techniek. Sommige voordelen zijn algemeen geldig, andere gelden
speci�ek voor robotsturingen.
• In tegenstelling tot veel andere evolutionaire algoritmen zijn de resultaten van GP
variabel in grootte, wat een belangrijk pluspunt is. Zo moet de operator niet op
voorhand een bepaalde grootte instellen (bijvoorbeeld bij GA het aantal neuronen,
het aantal verborgen lagen, ...), de evolutie gaat namelijk zelf op zoek naar een
individu dat voldoet, van welke grootte dan ook. In veel probleemdomeinen is
het behoorlijk moeilijk om de grootte vast te leggen, wat deze eigenschap zeer
waardevol maakt.
• Er is weinig of geen verwerking van de resultaten nodig, ieder individu stelt een
programma voor dat onmiddellijk kan uitgevoerd worden. Er gaat dus geen re-
kentijd verloren door het omzetten van de ene representatie naar de andere. De
leesbaarheid van deze programma's is echter doorgaans wel beperkt.
• GP bezit de eigenschap om vaak met robuuste oplossingen te komen. Zo worden
onnauwkeurigheden in de invoer, bijvoorbeeld door ruis, doorgaans goed opgevan-
gen door GP.
• Doordat er met populaties van individuen gewerkt wordt, kunnen deze onafhan-
kelijk van elkaar geëvalueerd worden. De evaluatie van de individuen, meestal
de grootste component in de rekentijd, kan dus heel gemakkelijk geparallelliseerd
worden. Dit levert voordelen op voor de uitvoering op clusters van computers,
maar ook op moderne processors met meerdere kernen. Omdat rekentijd in evo-
lutionaire algoritmen soms sterk oploopt is dit een handige eigenschap.
• Robotsturingen bestaan meestal uit hiërarchisch samengevoegde basisgedragsre-
gels. GP is dus door zijn hiërarchische en modulaire opbouw goed geschikt voor
het evolueren van hiërarchische programma's [40].
• In [34] wordt verdedigd dat GP over een compressiedruk bezit die leidt tot korte,
algemene en elegante oplossingen. GP volgt dus het principe van Occam's scheer-
mes dat stelt dat men best de kortste van twee mogelijke oplossingen kiest, omdat
de korte oplossing doorgaans generieker is. Dit is ook de normale gang van zaken
in de natuur, waar eenvoudige, maar toch algemene oplossingen de voorkeur krij-
gen. Deze eigenschap leidt dus mogelijk tot meer robuuste programma's die ook
13
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
toepasbaar zijn in andere omgevingen dan enkel de speci�eke �tness cases van
tijdens de evolutie.
We merken hierbij wel op dat er onderscheid moet gemaakt worden tussen de
e�ectieve lengte en de absolute lengte van programma's gegenereerd door GP. De
absolute lengte van de programma's heeft inderdaad vaak de neiging om steeds
groter te worden gedurende de evolutie. Echter in deze programma's zitten vaak
introns, programmadelen die nooit uitgevoerd worden. Deze zijn vergelijkbaar
met het junk-DNA uit de natuur, dat geen functionele waarde heeft. Wanneer
we deze introns weglaten, dan resulteert dit in een programma met de e�ectieve
lengte.
In [34] wordt wel opgemerkt dat deze eigenschap ook een nadeel kent, zo is het
mogelijk dat deze eigenschap te sterk wordt, leidt tot vroegtijdige convergentie,
en dus resulteert in een korte maar onvolledige oplossing. Het is dus belangrijk
om deze druk optimaal te balanceren.
• Doordat er een zeer grote variatie in computerprogramma's mogelijk is, zijn heel
gecompliceerde structuren mogelijk [44], bijgevolg kan GP toegepast worden in
een groot aantal domeinen. Deze generieke eigenschap resulteerde reeds in een
heel divers toepassingsgebied [19]. GP werd onder andere al succesvol toegepast
in schakelontwerpen, robotsturingen, digitale signaalverwerking, regeltechniek, ...
2.4 Resultaten met GP in evolutionaire robotica
Evolutionaire robotica is een nog jonge discipline, en het onderzoek biedt potentieel om
nog heel sterk te groeien. Door gebruik te maken van GA werden al mooie resultaten
bereikt [15, 32, 33, 45]. Vaak zijn de experimenten beperkt tot simulaties, toch werd in
sommige gevallen gebruik gemaakt van echte robots.
GP werd voor evolutionaire robotica veel minder vaak gebruikt. Bovendien zijn veel
experimenten enkel in een vereenvoudigde simulatie uitgevoerd. We geven een kort
overzicht van enkele representatieve resultaten behaald met GP.
2.4.1 Ontwijken van objecten
Obstacle avoidance of het ontwijken van objecten (voorwerpen, muren, ...) is een vaak-
gebruikt experiment binnen de robotica. In [35] werd met behulp van steady-state GP
een controller ontwikkeld voor de besturing van de Khepera-robot. Er werd gebruik
gemaakt van een populatie van 50 individuen, wat klein is in vergelijking met andere
experimenten. Dit werd getest in twee verschillende trainingsomgevingen. De �theids-
14
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
functie bestond uit een positief gedeelte: snel en recht vooruitrijden, en een negatief
gedeelte: de som van alle sensorwaarden. In 200-300 generaties werden goede sturingen
ontwikkeld voor beide omgevingen. Er werd getraind op de echte robot, en de input
bestond uit zes sensorwaarden, die door het programma omgezet moesten worden in
twee waarden die zorgen voor de aansturing van beide motoren van de robot. Als func-
tieverzameling werden allemaal low-level operaties (add, sub, mul, shl, shr, xor, or,
and) gebruikt. Het resulterende programma is robuust, in die zin dat ook in andere
omgevingen succesvol objecten worden ontweken.
2.4.2 Volgen van muren
Een andere veelgebruikt experiment binnen de robotica is het volgen van muren met
een robot, het zogenaamde wall following. Dit is een basisvaardigheid die nodig is in
veel verschillende complexere taken. In [22] werden hiervoor succesvolle programma's
ontwikkeld dankzij GP. Er werd gebruik gemaakt van een populatie van 1000 individu-
en en 100 generaties.
We merken op dat deze experimenten niets te maken hebben met een realistisch robot-
platform. Zo bestaat de simulatieomgeving uit cellen voorgesteld als een matrix. De
�robot� kan zich met behulp van één enkele terminaal exact een cel verplaatsen. De
sensors werden perfect verondersteld en geven dus aan of op een naburige cel een muur
aanwezig is. Dergelijke vereenvoudigde simulaties vormen een basis, maar zijn geenszins
te vergelijken met meer geavanceerde aanpakken in een realistische simulatieomgeving
of op een echte robot.
2.4.3 Gangenstelsels volgen
Een andere toepassing, corridor following werd beschreven in [42]. In dergelijke expe-
rimenten is het de bedoeling om met een robot op een e�ciënte manier een bepaald
gangensysteem te volgen naar de uitgang, zonder tegen de muren aan te rijden. Om
dit op een robuuste manier te verwezenlijken werd zowel aan de sensorwaardes als aan
het stuurmechanisme ruis toegevoegd. Dankzij steady state GP werden hiervoor in si-
mulatie redelijk succesvolle sturingen ontwikkeld.
Naast de vaste plaatsing van negen sensoren (aan de hand van negen terminalen) werd
in een andere experiment ook de plaatsing en de hoeveelheid sensoren overgelaten aan
de evolutie. Men spreekt dan van morfologie van sensoren, we komen hierop terug in
Hoofdstuk 4. Het evolutieproces beschikte over een sensorfunctie waaraan een bepaal-
de hoek meegeven kon worden, waarvoor vervolgens de corresponderende sensorwaarde
berekend werd. Virtueel waren er dus 360 mogelijke sensoren. Om het aantal werkelijk
15
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
gebruikte sensoren te beperken mocht een programma niet groter worden dan vijfen-
dertig knopen.
Waar de oplossing voor de opstelling met vaste sensors reeds gevonden werd in de
initiële populatie (dus via random search, waarschijnlijk gefaciliteerd door de sterke
vereenvoudiging van het probleem), was in het tweede opzet GP wel degelijk nodig.
Met een populatie van 2000 individuen en het equivalent van 15 generaties (gereali-
seerd via steady state GP), werd een sturing geëvolueerd die, op één gangenstelsel na,
telkens correct kon navigeren.
Er werden in dit experiment een aantal vereenvoudigingen doorgevoerd. Zo rijdt de ro-
bot in de simulatieomgeving met een constante snelheid vooruit, de robotsturing moet
dus alleen bepalen op welk moment over welke hoek gedraaid wordt. Bovendien werden
de gangen net smal genoeg gemaakt zodat de robot niet kan draaien en in de verkeer-
de richting verder rijden. Ook zijn de gangenstelsels waarin de robot moet navigeren
eerder kort.
2.4.4 Robotvoetbal
Tot slot willen we nog kort de robotsturingen vermelden die met behulp van GP ont-
wikkeld werden voor de deelname aan de IJCAI/RoboCup97 -wedstrijd [26]. Dit zijn
voetbalwedstrijden voor teams van 11 robots die in simulatie plaatsvinden. Daarbij
werd het GP-resultaat in competitie getest tegen verschillende andere handgecodeerde
oplossingen. Deze GP-aanpak won twee wedstrijden tegen handgecodeerde oplossingen.
2.5 De probleemstelling in detail
De hoofddoelstelling van dit werk is om de haalbaarheid na te gaan om een algemene
e�ciënte robotsturing te ontwikkelen voor een realistisch robotplatform die in staat is
om door gangenstelsels te navigeren (corridor following). De robot moet zonder bot-
singen van het beginpunt van het gangenstelsel naar de uitgang navigeren.
Concreet maken we gebruik van het robotplatform van de EyeBot (S4 Soccerbot)1, waar-
van de nieuwste generatie te zien is in Figuur 2.5. Dit platform bestaat niet enkel uit de
robot, er is ook een simulatieomgeving beschikbaar. Code voor de simulatieomgeving
is onmiddellijk overdraagbaar naar de echte robot.
Onze opstelling verschilt van deze in [42] (zoals samengevat in paragraaf 2.4.3) in ver-
schillende opzichten. Enerzijds streven we er naar om een algemene oplossing te reali-
seren. Niet enkel een oplossing die werkt voor de trainingsvoorbeelden, we willen ook
1http://robotics.ee.uwa.edu.au/eyebot/
16
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Figuur 2.5: De EyeBot S4 Soccerbot.
nagaan of de robotsturing ook andere gangenstelsels succesvol kan volmaken. Verder
is de simulatie niet vereenvoudigd. Zo zijn de gangen veel breder dan de robot zelf,
het is dus mogelijk dat deze draait en in de verkeerde richting verder rijdt. De robot
rijdt niet met een constante snelheid vooruit, zowel sturen als vooruitrijden zal door de
evolutie moeten opgelost worden. De gangenstelsels bevatten zowel bochten van 90◦ als
van 180◦. Gangenstelsels zijn variabel in lengte en in aantal bochten.
2.6 Aanpak
De parameters en technieken die we zullen gebruiken als uitgangspunt voor onze expe-
rimenten worden in de volgende paragrafen uitgewerkt. Zo zullen we onze keuze van
terminalen en functies toelichten, alsook de gebruikte �theidsfunctie en de standaard-
parameters.
2.6.1 Keuze van terminalen en functies
In Tabel 2.1 staan de terminalen en functies opgesomd die we in de experimenten als
basisopstelling zullen gebruiken. Er valt op dat we voornamelijk gebruik gemaakt heb-
ben van instructies op hoog niveau zoals een zekere afstand vooruit of achteruit rijden,
draaien, ... Enerzijds is dit omdat deze zeer geschikt zijn voor de omgeving waarin
de robot zal gebruikt worden. Anderzijds worden deze standaard door de API van de
EyeBot aangeboden. Dit is dan ook de aangewezen manier waarop programmeurs de
robot aansturen.
De functie IF-LESS-THEN-ELSE (in de code afgekort tot IF_LESS) ligt voor de hand.
Deze evalueert de eerste twee argumenten (beide mogelijks volledige deelbomen). Wan-
17
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Terminalen Resultaat
moveforward Rijdt 10 cm vooruit, geeft -1 terug
movebackward Rijdt 10 cm achteruit, geeft -1 terug
turnleft Draait 90◦ naar links, geeft -1 terug
turnright Draait 90◦ naar rechts, geeft -1 terug
high Geeft constante 150 terug
low Geeft constante 75 terug
psdleft Afstand tot eerstvolgende object in mm
psdright Afstand tot eerstvolgende object in mm
psdfront Afstand tot eerstvolgende object in mm
Functies Ariteit
IF_LESS 4
PROGN2 2
Tabel 2.1: Gebruikte functies en terminalen
neer het resultaat van het eerste argument kleiner is dan het tweede, dan wordt het
derde argument uitgevoerd, in het andere geval wordt het vierde argument uitgevoerd.
Om deze functie zinvol te kunnen gebruiken is het dus nodig dat iedere terminaal, naast
de eventuele actie die deze uitvoert, een waarde teruggeeft. Omdat dit voor sommige
terminalen niet op een zinvolle wijze kan gebeuren, wordt dan -1 teruggegeven. Op
deze manier is de functie robuust en wordt voldaan aan de sluitingseis. Bovendien kan
ze ook gebruikt worden om telkens sequentieel drie dezelfde opdrachten uit te voeren
(waarbij de eerste twee argumenten telkens -1 teruggeven, zodat altijd hetzelfde uitge-
voerd wordt).
Voor de functie PROGN2 is dit resultaat niet van belang. Deze neemt twee argumenten
aan, voert eerst het eerste uit en daarna het tweede. Er wordt geen rekening gehouden
met de resultaten die worden teruggegeven. Deze functie laat toe om hiërarchische
constructies mogelijk te maken. Beide functies worden vaak gebruikt binnen GP.
Verder werden ook nog twee constantes opgenomen, deze kunnen gebruikt worden om
de sensorwaarden mee te vergelijken, en op basis hiervan beslissingen te nemen. Deze
kunnen dus functioneren als drempelwaarden. Net als de sensoren geven deze enkel een
waarde terug, er is geen actie mee gekoppeld.
De PSD-sensoren tenslotte worden gebruikt via psdleft, psdright en psdfront. Om de
ontwikkelde sturing achteraf van de simulatieomgeving te kunnen overbrengen naar
de echte robot, zullen we initieel gebruik maken van de sensorplaatsingen zoals deze
18
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Figuur 2.6: De standaardsensors op de EyeBot.
standaard op robot aanwezig zijn. Dit is te zien in Figuur 2.6.
2.6.2 Fitheidsfunctie
De �theidsfunctie geeft aan hoe goed het gedrag van een bepaald individu voldoet
aan de vooropgestelde doelstellingen. Naast de keuze van de terminalen is de keuze
van de �theidsfunctie van groot belang om tot een succesvolle evolutie te komen. Het
evolutieproces zal immers zoeken in de ruimte die gecreëerd wordt door alle mogelijke
programma's af te beelden op alle mogelijke �theden. Als algemene regel geldt dat de
�theidsfunctie niet te speci�ek mag gekozen worden om de evolutie voldoende vrijheid
te laten in het oplossen van het probleem. Omdat dit niet voor de hand ligt, wordt
vaak een �theidsfunctie gekozen aan de hand van trial and error.
Verder is het ook belangrijk dat deze �theidsfunctie in alle stadia van de evolutie bruik-
baar is [33], en voldoende onderscheid kan maken tussen (licht) verschillend presterende
individuen. Zo moet zelfs al in de eerste stappen van de evolutie een onderscheid kunnen
gemaakt worden tussen slecht presterende en net iets beter presterende individuen om
de evolutie goed te kunnen sturen. Analoog zal ook in latere stadia van de evolutie het
verschil tussen zeer goede en uitstekende individuen gemaakt moeten kunnen worden.
In [10] werd voorgesteld om een raamwerk, de Fitness Space2, te gebruiken om ge-
makkelijker �theidsfuncties te kunnen opstellen, evalueren, en vergelijken. Dit is een
driedimensionale ruimte: de functionele- en gedragsdimensie, de externe-interne di-
mensie, en de expliciete-impliciete dimensie. Omdat de keuze van de �theidsfunctie
van fundamenteel belang is, geven we een kort overzicht.
Functionele- en gedragsdimensie
De eerste dimensie beschrijft de verhouding tussen de oorzaken van het gedrag (functi-
onele dimensie) ten opzichte van de gevolgen van het gedrag (gedragsdimensie) van een
2Dit is niet hetzelfde als het Fitness Landscape, dit is de ruimte die alle �theidswaarden corresponderend
met alle mogelijke programma's bevat.
19
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
individu in de �theid. Het functionele luik zal resulteren in een sterke overeenkomst met
het gewenste gedrag, maar laat dikwijls nog maar weinig mogelijkheden aan het evolu-
tieproces over. Bovendien is het mogelijk dat wanneer de mechanische eigenschappen
of omgevingsfactoren niet exact in rekening werden gebracht, niet het gewenste resul-
taat zal bereikt worden. De gedragsdimensie zal veel meer vrijheid overlaten aan de
evolutie, maar het resultaat zal mogelijks niet exact voldoen aan de verwachtingen van
de operator. Zo zal bijvoorbeeld een robot waarvan gevraagd wordt om zich voort te
bewegen niet al stappend, maar al kruipend te werk gaan. Op deze manier laat men
veel meer vrijheid over aan de creativiteit van het evolutieproces.
Externe-interne dimensie
De externe component van de �theidsfunctie bevat elementen die niet rechtstreeks door
de robot kunnen worden waargenomen. Zo zal bijvoorbeeld de afstand tot het doel
waarschijnlijk niet door de robot, maar enkel door de simulatieomgeving of een externe
waarnemer gekend zijn. Interne componenten zijn wel direct waarneembaar door de
robot. Zo is bijvoorbeeld de toestand van de sensoren doorgaans wel gekend door de
robot zelf. Vaak zal externe informatie veel preciezer zijn, en is deze ook beschikbaar
voor de simulatie. Toch gaat de voorkeur uit om zeker ook interne componenten op te
nemen. Anders is het mogelijk dat het evolutieproces er niet in slaagt om het gewenste
gedrag te ontwikkelen omdat dit niet door de (interne) karakteristieken van de robot
kan worden beschreven noch herkend.
Expliciete-impliciete dimensie
Deze dimensie wordt voornamelijk bepaald door het aantal beperkingen dat in de �t-
heidsfunctie vervat zit. Ruwweg betekent dit hoe meer componenten, hoe explicieter
de �theidsfunctie. Meer componenten opnemen kan tot twee problemen leiden. Ten
eerste moeten al deze componenten op een bepaalde wijze gecombineerd (additief, mul-
tiplicatief, ...) en gewogen (een component kan belangrijker zijn dan andere) worden.
Ten tweede zullen op deze manier waarschijnlijk meerdere lokale optima ontstaan. Dit
maakt dat het probleem te moeilijk kan worden voor het evolutieproces, vooral tijdens
de eerste generaties. Bovendien zal in het geval van te expliciete �theidsfuncties het
evolutieproces mogelijks beperkt zijn in oplossingsmogelijkheden.
Resultaat
Rekening houdend met deze informatie zullen we gebruik maken van een �theidsfunctie
bestaande uit drie additieve componenten.
20
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Figuur 2.7: De verschillende componenten uit de �theidsfunctie.
• De basiscomponent (in Figuur 2.7 aangeduid met het nummer 1) bestaat uit de
afgelegde afstand, gerekend in vogelvlucht vanaf het startpunt tot het punt waarop
de robot de simulatie beëindigde. Deze component zorgt ervoor dat ook in de
eerste generaties duidelijk onderscheid kan gemaakt worden tussen een individu
dat helemaal niets kan en een individu met meer potentieel.
• Bovenop deze basiscomponent komt een vaste bonus (plus drie) voor ieder individu
dat het einde van het gangenstelsel haalt. Daarbovenop wordt een variabele bonus
toegekend voor het resterend aantal bewegingen, namelijk vier maal het resterend
aantal bewegingen gedeeld door het maximaal aantal bewegingen. Op deze manier
kan ook een onderscheid gemaakt worden tussen goede en nog betere sturingen.
De e�ciëntste sturing die zonder omwegen (bijvoorbeeld een stuk terugkeren) en
zonder botsingen het eindpunt bereikt zal op deze manier een hogere score krijgen
dan een redelijke sturing die iets meer bewegingen nodig had. In Figuur 2.7 wordt
de nog af te leggen afstand ten opzichte van de huidige positie van de robot tot
het behalen van de bonus aangeduid met het nummer 2.
• Omdat de robots niet tegen de muren aan mogen rijden, worden deze ook bestraft.
Er wordt een penalty opgelegd telkens een robot te dicht tegen een muur aankomt.
Deze straf houdt in dat het totaal aantal bewegingen dat de robot mag uitvoeren
wordt verminderd met drie. Om deze strafmaat intern te houden voor de robot,
zal deze gebruik maken van de sensors van de robot zelf, met een bijkomende
sensor achteraan. Figuur 2.7 toont met het nummer 3 aan dat de afstand tot de
muren, en dus de sensorwaarden, niet te klein mogen worden.
21
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Tijdens de evaluatie mag ieder individu 500 bewegingen (vooruit, achteruit, draaien)
maken. Dit volstaat ruimschoots om volledig door de omgevingen te kunnen navige-
ren. Deze limiet kan vergeleken worden met een beperkte batterijduur; binnen deze tijd
moet de robot een zo goed mogelijk parcours a�eggen. Door de strafcomponent zullen
slecht presterende individuen dus minder simulatietijd krijgen doordat ze veel botsingen
veroorzaken. Dit is wenselijk omdat op deze manier geen simulatietijd verloren gaat
aan slecht presterende sturingen.
Met deze �theidsfunctie willen we dus individuen evolueren die e�ciënt (zonder om-
wegen) en zonder botsingen het gangenstelsel volgen. Hoe de robot dit gangenstelsel
exact moet volgen hebben we niet gespeci�eerd. We konden dit wel gedaan hebben
door bijvoorbeeld te stellen dat op ieder moment de sensoren van de robot een zo groot
mogelijke waarde moeten hebben. Op deze manier zou de robot telkens zoveel mogelijk
in het midden tussen twee muren rijden. Om het evolutieproces zoveel mogelijk vrijheid
te geven, hebben we hier dus geopteerd om een gedragscomponent te gebruiken, en niet
zozeer een functionele component.
Om nu te komen tot een genormaliseerde waarde kleiner dan 1, zullen we tweemaal
de volgende transformatie doorvoeren: bij het resultaat wordt 1 opgeteld en dit getal
wordt vervolgens geïnverteerd.
2.6.3 Standaardparameters
In Tabel 2.2 werden de standaardparameters die we zullen gebruiken in onze experimen-
ten opgesomd. Wanneer verder niet expliciet gesteld wordt wat de waarde van bepaalde
parameters is, dan werden deze standaardwaarden gebruikt.
Om de rekentijd beperkt te houden, is onze standaardwaarde voor de populatiegrootte
bewust eerder laag gehouden in vergelijking met wat in de literatuur gangbaar is. Ver-
der zullen we, in lijn met de standaardkeuzes bij GP, geen gebruik maken van mutaties.
Omdat GP een probabilistisch algoritme is, leiden verschillende uitvoeringen meestal
tot een verschillende oplossing, afhankelijk van de seed die gebruikt werd. Sommige
uitvoeringen zullen nooit het globale optimum vinden, bijvoorbeeld omdat ze prema-
tuur convergeren naar een suboptimale oplossing. Omdat deze kans niet helemaal uit
te sluiten valt, kan gebruik worden gemaakt van meerdere uitvoeringen, telkens met
een verschillende seed. Opnieuw om de rekentijd niet te sterk te laten toenemen zullen
we gebruik maken van telkens drie onafhankelijke uitvoeringen.
22
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
Algemeen
Aantal generaties per simulatie 50
Populatiegrootte 300
Aantal onafhankelijke simulaties per experiment 3
Generatie van initiële populatie
Methode ramped half-and-half
Minimale diepte 2
Maximale diepte 6
Selectie en genetische operatoren
Selectiemethode Tornooiselectie met grootte 7
Kruisingsprobabiliteit 90%
Reproductieprobabiliteit 10%
Mutatieprobabiliteit 0%
Selectie van functies als kruisingspunten 90%
Selectie van terminalen als kruisingspunten 10%
Maximale diepte van deelboom geselecteerd voor kruising 17
Tabel 2.2: Standaardparameters
2.7 Simulatie versus echte robot
In de literatuur is al veel verschenen over het gebruik van een simulator dan wel een
echte robot [2, 12, 15, 16, 32, 33, 42, 45]. Zo is bijvoorbeeld geregeld kritiek te lezen
over het gebruik van een simulator, zonder achteraf te veri�ëren op een echte robot
[32, 33]. Bovendien wordt soms gebruik gemaakt van te sterk vereenvoudigde simulaties,
zoals eenvoudige rastervoorstellingen. Verder zullen we het enkel hebben over meer
realistische simulaties waarbij de modellering gebaseerd is op echte robots.
2.7.1 Afwegingen bij gebruik van simulaties
We bespreken kort de belangrijkste afwegingen die moeten gemaakt worden bij het al
dan niet gebruik van een simulator voor het uitvoeren van GP.
• Uitvoeren van individuen, vooral in de eerste generaties, kan robots beschadigen
doordat de sturingen nog niet goed functioneren. Zo is het mogelijk dat robots
beschadigd raken door tegen hoge snelheid aanrijdingen te veroorzaken.
• Batterijen hebben meestal een beperkte levensduur, een duurzame energievoorzie-
23
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
ning met behulp van een kabel kan in sommige gevallen de simulatie bemoeilijken.
Bovendien moet de robot in veel gevallen terug gepositioneerd worden binnen een
bepaald oppervlak. Zo is het mogelijk dat een bepaalde sturing moet starten met
de robot tegen een muur (een nadelige situatie), omdat de vorige sturing tegen de
muur gereden is. Ook het opnieuw positioneren van objecten in de omgeving kan
problemen opleveren.
• Evolutionaire berekeningen kunnen veel tijd in beslag nemen; dagen en zelfs weken
zijn geen uitzonderingen. Deze kunnen veel sneller verlopen in simulatie dan op
echte robots. Bovendien kan dit op meerdere computers tegelijk gebeuren, zonder
dat er ook werkelijk meerdere robots ter beschikking zijn.
• In simulatie kan de analyse van de prestatie van robots soms veel eenvoudiger zijn
dan op echte robots. In het laatste geval zijn vaak beeldverwerkingstechnieken
nodig, terwijl in simulatie vaak veel parameters onmiddellijk beschikbaar zijn.
• Wanneer simulaties niet voldoende realistisch gebeuren, dan worden de resultaten
al snel onbruikbaar. Zo is het mogelijk dat sturingen die in simulatie perfect wer-
ken, niet voldoen op een echte robot. Onder andere doordat de simulatie van de
sensoren en actuatoren niet correct genoeg gebeurde. Omdat dit laatste een moei-
lijk probleem is, is dit steeds een gevaar bij het gebruik van simulaties. Bovendien
bestaat de mogelijkheid dat de evolutie toevalligheden of onvolmaaktheden in de
simulator zal uitbuiten om tot een oplossing te komen. Deze oplossing is dan
doorgaans onbruikbaar in de realiteit.
Het gebruik van simulaties is dus zonder meer voordelig op voorwaarde dat we over
een realistische simulator beschikken. Er zijn een aantal methodes om een realistische
simulator te implementeren [33].
Zo werd reeds gesuggereerd om gebruik te maken van minimale simulaties (minimal
simulations). Hierbij worden enkel de karakteristieken die relevant zijn voor het ge-
wenste gedrag accuraat gemodelleerd in de simulator. De andere aspecten, die niet
relevant zijn voor het gedrag dat moet aangeleerd worden, worden willekeurig gekozen
en iedere simulatie opnieuw veranderd. Op deze manier kan de evolutie op basis van
deze aspecten geen verkeerde a�eidingen maken, en zal enkel gebruik gemaakt worden
van de relevante eigenschappen. De ontwikkelde sturing zal bovendien robuuster zijn.
Een andere mogelijkheid bestaat erin om een simulator te maken gebaseerd op wiskun-
dige modellen van de robot en de omgeving. Deze basisversie kan dan verbeterd worden
door vervolgens op basis van empirische resultaten, zoals een grote hoeveelheid metin-
gen op echte robots, aanpassingen door te voeren om de realistische eigenschappen van
24
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
sensoren, motoren, ... correct te modelleren. Deze aanpak zal leiden tot een betere
simulator, maar is nog steeds niet perfect. Zo vertonen echte sensoren en actuatoren
heel vaak kleine afwijkingen. Daardoor wijkt het gedrag van twee (mechanisch en elek-
tronisch) identieke robots vaak toch licht van elkaar af.
Omdat het maken van een perfecte simulator een complexe aangelegenheid is, worden
vaak tussenoplossingen gebruikt. Zo kan men het evolutieproces starten in simulatie en
na een zeker aantal generaties overgaan tot enkele veri�catiegeneraties op echte robots.
Met dit resultaat gaat men dan enkele generaties verder in simulatie om dan opnieuw
te wisselen, en zo verder [12]. Op deze manier zal verhinderd worden dat door een niet
perfecte simulatie de evolutie verkeerd convergeert.
Bovendien zijn er reeds een aantal evolutionaire experimenten beschreven waarbij de in
simulatie geëvolueerde sturingen achteraf succesvol naar een echte robot overgebracht
werden.
We concluderen dat simulaties heel voordelig zijn wanneer deze precies genoeg zijn, of er
bijzondere voorzorgsmaatregelen genomen worden zodat de evolutie niet de kans krijgt
om imperfecties en toevalligheden in de simulatie uit te buiten. Dit kan bijvoorbeeld
door het toevoegen van een zekere willekeurigheid of ruis opgelost worden [15, 16, 42].
2.7.2 Simulatieomgeving
We zullen hier zoals reeds aangehaald gebruik maken van het EyeBot-platform. Deze
bestaat uit het RoBIOS besturingssysteem dat beschikbaar is voor verschillende types
robots. Bovendien is een simulatieomgeving (EyeSim) beschikbaar met dezelfde API
als echte robots. Programma's kunnen dus snel overgedragen worden van simulatie
naar realiteit en omgekeerd. In [2, 16] worden meer details over de simulatieomgeving
uitgewerkt.
Verder kan het sturen van de motoren zowel op hoog als laag niveau gebeuren, en kun-
nen een groot aantal parameters ingesteld worden met betrekking tot het aantal en
de plaatsing van de sensoren, de omgeving, ... Ook de simulatiesnelheid kan ingesteld
worden.
De belangrijkste feature is echter de mogelijkheid om ruis toe te voegen aan zowel sen-
soren als actuatoren. Voor de PSD-sensoren en de sturingen werd hiervoor gebruik
gemaakt van een additief model met witte ruis, gemodelleerd door een normaal ver-
deelde distributie met gemiddelde nul. De standaarddeviatie kan worden ingesteld. Dit
model is uitermate geschikt omdat op deze manier eerder willekeurige waarden wor-
den toegevoegd, zodat toevalligheden en onvolmaaktheden in de simulatie niet kunnen
uitgebuit worden door de evolutie. Echter, omdat deze implementatie iets te weinig
25
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
�exibel is voor onze doeleinden, maakten we gebruik van een eigen implementatie3, zij
het met identiek hetzelfde model.
Voor de eigenlijke GP-functionaliteit maakten we gebruik van ECJ (versie 18)4, een on-
derzoeksplatform dat verschillende evolutionaire algoritmen ondersteund, en geschreven
is in Java. Het is een �exibel systeem dat werd ontwikkeld aan het Evolutionary Com-
putation Laboratory, ECLab aan de George Mason Universiteit.
2.8 Robuustheid van de oplossing
Om een zo robuust mogelijke oplossing mogelijk te maken, worden in [48] een aantal
mogelijkheden opgesomd. Omdat we hier streven naar een oplossing die algemeen
geldig is, en niet enkel voor de �tness cases van tijdens de evolutie, zullen we deze
mogelijkheden dan ook maximaal gebruiken. Om de perfecte oplossing te verkrijgen
is het voldoende om alle mogelijke situaties waarmee het programma geconfronteerd
kan worden op te nemen als �tness cases. Echter, in quasi elke realistische toepassing
is dit wegens e�ciëntieredenen onmogelijk. De volgende technieken kunnen hiervoor
uitkomst bieden.
Meerdere leervoorbeelden
Het gebruik van meerdere leervoorbeelden (i.e. �tness cases) zal meer generieke oplos-
singen opleveren dan telkens slechts een enkel leervoorbeeld te gebruiken. Anders is het
mogelijk dat het algoritme dit voorbeeld eenvoudigweg �memoriseert� in plaats van een
algemene techniek te ontwikkelen.
Belangrijk hier is om een afweging te maken inzake hoeveel leervoorbeelden nodig zijn.
Te weinig voorbeelden zullen leiden tot broze (brittle) oplossingen. Deze zijn speci�ek
geldig voor de leervoorbeelden, maar falen vaak in andere situaties. Te veel voorbeelden
zullen alleen maar de rekentijd sterk laten oplopen. Bovendien verloopt de marginale
meeropbrengst bij bijkomende leervoorbeelden dalend.
Wisselen van de leerverzameling
Door gedurende de evolutie regelmatig de verzameling van leervoorbeelden te wisselen,
zal men verhinderen dat convergentie naar een bepaalde verzameling van voorbeelden
optreedt. Opnieuw is deze techniek aangewezen om een algemeen algoritme te ontwik-
kelen in plaats van een algoritme dat werkt voor een bepaalde groep voorbeelden. Bij
3Aan de hand van de polaire Box-Muller transformatie.4http://www.cs.gmu.edu/ eclab/projects/ecj/
26
HOOFDSTUK 2. GENETISCH PROGRAMMEREN
grotere leerverzamelingen zal deze techniek doorgaans minder invloed hebben.
Toevoegen van ruis
Tenslotte zal het toevoegen van ruis ook vaak een positieve invloed hebben op de
robuustheid van de geëvolueerde programma's. Ruis zal er toe leiden dat toevallig
geïntroduceerde verbanden in de leervoorbeelden niet door de evolutie kunnen uitgebuit
worden om een oplossing te construeren. Deze techniek werd bijvoorbeeld succesvol
toegepast in [42], waar ruis toegevoegd werd aan de sensorwaarden van de robot. Op
deze manier kan men doorgaans ook sneller en met een grotere succesprobabiliteit de
transfer van simulatie naar de echte robot mogelijk maken.
Co-evolutie
Co-evolutie is een vierde techniek die wordt aangehaald. We zullen er hier echter geen
gebruik van kunnen maken.
27
Hoofdstuk 3
Evolutie van robotsturingen
In dit hoofdstuk geven we een overzicht van de experimenten voor de automatische
evolutie van een algemene robotsturing voor het volgen van gangenstelsels door een
mobiele robot. We benadrukken dat het niet alleen de bedoeling is om een sturing te
ontwikkelen die in staat is om één bepaalde omgeving succesvol te kunnen doorlopen.
Meestal bestaat het resultaat dan uit een programma dat een bepaald stappenplan uit-
voert dat slechts correct is voor één bepaalde omgeving. De sturing zal deze omgeving
als het ware memoriseren. Een dergelijke aanpak, hoewel regelmatig gebruikt in de lite-
ratuur, is te weinig algemeen en heeft slechts een beperkt praktisch nut. Daarom zullen
we niet alleen gebruik maken van verschillende omgevingen waarin getraind wordt, de
robot zal na het evolutieproces ook getest worden in omgevingen waarop niet getraind
werd. Deze tests zullen ons toelaten om de robuustheid van een sturing te beoordelen.
We vervolgen dit hoofdstuk met een kort overzicht van de basisopstelling die verder zal
gebruikt worden in de verschillende experimenten. Daarna geven we aan waarom we
zullen gebruik maken van diversiteitsmaten. Vervolgens bespreken we kort de omgevin-
gen waarin de verschillende experimenten zullen worden uitgevoerd. Hierna geven we
een overzicht van de uitgevoerde experimenten. We beginnen met experimenten in een
perfect veronderstelde simulatieomgeving. We gaan eerst na of het mogelijk is om een
sturing te ontwikkelen die in staat is om in de omgevingen waarop getraind werd suc-
cesvol te kunnen navigeren. Daarnaast veri�ëren we ook of de ontwikkelde sturing ook
in andere omgevingen kan worden gebruikt. Later voegen we ruis toe aan de sensoren
om meer algemene sturingen te kunnen ontwikkelen. Tenslotte gaan we na of we de
resultaten in simulatie ook kunnen overbrengen naar de realiteit en wat de complicaties
zijn die hiermee gepaard gaan.
28
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
3.1 Basisopstelling
Als basisopstelling zullen we gebruik maken van de parameters zoals deze in paragraaf
2.6 werden beschreven. Wanneer we bepaalde parameters aanpassen of uitbreidingen
maken op dit standaardmodel, worden deze keuzes toegelicht. Wanneer we bepaalde
instellingen niet vermelden dan blijven deze onveranderd in vergelijking met de stan-
daardopstelling.
Tenzij anders vermeld zullen we telkens gebruik maken van drie onafhankelijke uitvoe-
ringen van hetzelfde evolutieproces. Omdat GP een probabilistische techniek is, zullen
deze uitvoeringen verschillende resultaten opleveren, afhankelijk van de initiële wille-
keurige waarde die werd gebruikt. Omdat het evolutieproces heel wat tijd in beslag
neemt, gebruiken we slechts drie uitvoeringen. In het optimale geval zou dit aantal iets
meer bedragen, maar dit is niet opportuun gegeven de benodigde rekentijd.
We gebruiken, in vergelijking met de literatuur eerder beperkte populatiegroottes. Ener-
zijds om de rekentijd te beperken, anderzijds omdat al enkele malen werd aangetoond
dat het vaak beter is om meerdere korte uitvoeringen te hanteren in plaats van één
lange, waarbij in totaal het aantal geëvalueerde individuen hetzelfde is [11, 25].
Bij het toekennen van de penalty voor botsingen maken we gebruik van een extra mar-
ge. We bestra�en namelijk de robot niet enkel bij een botsing, maar ook wanneer deze
te dicht (minder dan 1 cm) tegen een muur aankomt. Zo bouwen we een kleine ex-
tra veiligheid in voor foutmarges van de sensorwaarden op de echte robot. Wanneer
we achteraf de prestaties van de sturing bespreken, en deze ook uittesten op nieuwe
gangenstelsels (waarop niet getraind werd), laten we deze extra veiligheidsmarge weg.
3.2 Diversiteitsmaten
Om de diversiteit binnen een populatie voor te stellen, worden een aantal verschillende
diversiteitsmaten gebruikt. Voor een uitgebreid overzicht hiervan verwijzen we naar
[49] en [48, hoofdstuk 5]. Hier benadrukken we dat, vooral in de eerste generaties, het
zeer belangrijk is dat de populatie een grote diversiteit bezit. Op deze manier wordt
de zoekruimte van het evolutieproces groter en worden dus meer mogelijkheden onder-
zocht. Wanneer de diversiteit te laag wordt, bestaat de kans dat er ofwel te weinig
selectiedruk aanwezig is, ofwel vroegtijdige convergentie optreedt naar een niet optima-
le oplossing.
Binnen de diversiteitsmaten kunnen we twee grote groepen onderscheiden. Zo zijn er
deze die di�erentiëren op basis van de boomstructuur (genotypische diversiteitsmaten),
en deze op basis van de �theid (fenotypische diversiteitsmaten). In dit werk zullen we
29
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.1: Enkele van de gebruikte leervoorbeelden van eenvoudig naar moeilijker. Ieder voor-
beeld komt uit één van de vijf categorieën van telkens drie omgevingen waarover de gemiddelde
�theid berekend wordt. Iedere categorie bevat telkens omgevingen die net iets moeilijker zijn
dan de voorgaande. Bijlage B bevat een overzicht van alle omgevingen.
vooral gebruik maken van de entropie [43]. Deze behoort tot de klasse van fenotypische
diversiteitsmaten. Omdat de boomstructuur vaak zeer gevoelig is voor de aanwezigheid
van intronen, die het beeld dat genotypische diversiteitsmaten schetsen sterk kunnen
beïnvloeden, is dit een te verdedigen keuze. De entropie is gebaseerd op de distributie
van de �theidswaarden, wat kan voorgesteld worden in �theidshistogrammen. De entro-
pie wordt voornamelijk gebruikt in de informatietheorie om de hoeveelheid informatie
(of de onzekerheid) aan te duiden. Hier zal een hogere entropie dus corresponderen met
een grotere diversiteit (cfr. onzekerheid). Wanneer we pk gebruiken als voorstelling
voor de fractie van programma's met een bepaalde �theid uit de volledige populatie,
dan wordt de entropie uitgedrukt als volgt: −∑k pk · log pk.
3.3 Omgevingen
Om geleidelijk leren toe te laten, en de evolutie niet onmiddellijk voor een moeilijke
opdracht te plaatsen, maken we gebruik van leervoorbeelden (i.e. omgevingen) die op-
lopend zijn in moeilijkheidsgraad. Iedere evaluatie van de �theid zal gebeuren door
de prestatie uit te middelen over uitvoeringen in drie verschillende omgevingen van een
gelijkaardig niveau. Hiervoor werden vijf categorieën met oplopende moeilijkheidsgraad
samengesteld. Enkele representatieve voorbeelden zijn te zien in Figuur 3.1.
Op deze manier houden we ook rekening met de basiscomponent (i.e. afstand) van de
�theidsfunctie. Zo zal bij de eerste categorie de afgelegde afstand in vogelvlucht op elk
moment ook werkelijk overeenkomen met de robot die het verst in het gangenstelsel
kwam. Bij meer gevorderde categorieën is dit niet langer het geval. Dit is echter geen
probleem omdat individuen uit de corresponderende generaties meestal het volledige
gangenstelsel kunnen volgen, er wordt dan vooral onderscheid gemaakt op de manier
waarop (aantal botsingen, al dan niet terugrijden, ...) het individu navigeert.
30
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Categorie Bochten van 90◦ Bochten van 180◦ Lengte
Heel eenvoudig 4 0 54
Eenvoudig 10 1 64
Gemiddeld 12 2 79
Gevorderd 13 4 130
Moeilijk 12 10 148
Tabel 3.1: De vijf categorieën van omgevingen bevatten telkens drie omgevingen van een ge-
lijkaardige moeilijkheidsgraad. Iedere volgende categorie bevat iets moeilijkere gangenstelsels,
in termen van het aantal en type bochten dat werd opgenomen, en de lengte van het optimale
pad door de gangen. Deze lengte is uitgedrukt in het aantal muren van 40cm langs het op-
timaal pad doorheen het gangenstelsel. De gegevens in de tabel sommeren de waarden van
ieder gangenstelsel per categorie.
Het evolutieproces zal dus gebruik maken van een combinatie van meerdere leervoor-
beelden (uitgemiddeld over drie omgevingen) en wisselende leerverzamelingen (iedere
zes generaties wordt van categorie gewisseld1). Dit zijn twee van de opties om het resul-
terende programma robuuster te maken (zie paragraaf 2.8). Deze aanpak is gebaseerd
op gelaagd leren (zie 2.2.2). Zo zullen eerst de basisvaardigheden geleerd worden, met
name rechtdoor rijden zonder tegen muren aan te rijden en een eenvoudige bocht van
90◦ nemen. Eenmaal dit succesvol lukt, kan overgegaan worden naar opeenvolgende
bochten, en in een later stadium ook bochten van 180◦ en combinaties van beide. Dat
de categorieën een stijgende moeilijkheidsgraad vertonen is te zien in Tabel 3.1, waar
de kenmerken van iedere categorie samengevat werden.
3.4 Evolutie in simulatie
In deze sectie willen we nagaan of het met behulp van GP mogelijk is om sturingen voor
mobiele robots te evolueren die in staat zijn om gangenstelsels te volgen in simulatie.
Wanneer dit geen bruikbare resultaten oplevert, is het niet opportuun om verder te gaan
met de evolutie van robotsturingen voor toepassing in de realiteit. Hiervoor zullen we
een aantal experimenten opzetten.
In de eerste plaats willen we nagaan of het mogelijk is om sturingen te ontwikkelen
die in staat zijn om succesvol door de gangenstelsels te navigeren waarin tijdens het
evolutieproces getraind werd. Verder gaan we ook na of deze sturingen in staat zijn om
1De laatste categorie wordt gebruikt voor alle resterende generaties.
31
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
algemene gangenstelsels op te lossen. Daarvoor maken we gebruik van vijf omgevingen
waarop niet getraind werd, allen minstens even moeilijk op te lossen als deze behorend
tot de categorie moeilijk van de leervoorbeelden.
De rekentijd van de meeste van deze experimenten is iets meer dan dertien uur op een
low-end PC2. We merken wel op dat dit een niet-geoptimaliseerde simulatie betreft.
Wanneer dit echt van belang is, zou de implementatie sneller kunnen gemaakt worden.
3.4.1 Experimenten in een perfecte wereld: opstelling
In een eerste reeks experimenten zullen we zowel sensoren als actuatoren perfect ver-
onderstellen. Zo zullen de sensoren altijd de juiste waarde teruggeven en zal vooruit
rijden altijd over dezelfde afstand gebeuren. Dit is een eenvoudige opstelling om na te
gaan of het mogelijk is om met GP een sturing te ontwikkelen die in staat is om in een
simulatieomgeving correct door een gangenstelsel te navigeren.
In Tabel 3.2 wordt de opstelling van de eerste reeks experimenten samengevat. Met de-
ze experimenten willen we een aantal parameters onderzoeken, we bespreken ze hierna
kort.
Aantal generaties en populatiegrootte
Het aantal generaties en de populatiegrootte zijn twee belangrijke parameters, enerzijds
voor het resultaat, anderzijds voor de rekentijd. We namen een aantal verschillende
con�guraties op.
Leerverzameling en aantal leervoorbeelden
We willen ook nagaan wat de beste aanpak is voor de samenstelling van de leerverza-
meling en het aantal leervoorbeelden. Hiervoor hebben we een aantal mogelijkheden
gede�nieerd.
Standaard De standaardaanpak werd reeds uiteengezet in sectie 3.3. Deze maakt gebruik
van een leerverzameling van drie omgevingen met dezelfde moeilijkheidsgraad.
Iedere zes generaties wordt de leerverzameling opgebouwd uit drie moeilijkere
omgevingen.
Gemengd Naast de standaard zullen we ook een gemengde aanpak testen waarbij ie-
dere categorie iets meer gediversi�eerd wordt. Zo wordt in iedere categorie een
moeilijkere of gemakkelijkere omgeving toegevoegd, naargelang de inhoud van de
2AMD Athlon 64 3800+ (2,4 GHz)
32
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
categorie respectievelijk vooral uit eenvoudige dan wel moeilijke omgevingen be-
staat. Hierbij bestaat de leerverzameling nog steeds uit drie voorbeelden, en wordt
er om de zes generaties gewisseld. Wanneer we de leervoorbeelden uit de stan-
daardaanpak nummeren van 0 tot 14, dan is de volgorde hier 0, 2, 11, 3, 5, 13, 1,
7, 8, 6, 9, 10, 4, 12, 14.
Schuivend venster Een andere aanpak is om in plaats van telkens de volledige leerverza-
meling te vervangen, iedere keer één leervoorbeeld uit de verzameling te vervangen
door een nieuw leervoorbeeld. De volgorde die gebruikt wordt is dezelfde als bij
de gemengde aanpak. We gebruiken als het ware een venster met grootte drie, dat
geleidelijk doorheen de lijst met alle leervoorbeelden schuift. Verder is de snelheid
(in aantal generaties) waarmee het venster verschuift parametriseerbaar. Om de
evolutie initieel de kans te laten om de basisvaardigheden op te bouwen, blijft de
leerverzameling de eerste acht generaties vast. Met deze aanpak willen we nagaan
of het voordelig is om heel vaak de leerverzameling te veranderen.
Gradueel Omdat de omgevingen telkens moeilijker worden, is het mogelijk dat de evo-
lutie voor de opeenvolgende categorieën telkens iets meer tijd nodig heeft. Deze
graduele aanpak zal dus het evolutieproces toelaten om op iedere nieuwe categorie
(op basis van de gemengde aanpak) langer te leren. Concreet zijn 7, 8, 9, 11 en
15 generaties voorzien voor respectievelijk de eerste tot de vijfde categorie.
Alle vijftien Tenslotte bekijken we ook of het wel de moeite loont om met categorieën
van leervoorbeelden te werken. We gaan na of iedere generatie gebruik maken
van telkens alle vijftien leervoorbeelden ook goede resultaten oplevert. Omdat
bij deze opstelling de rekentijd, door het grote aantal evaluaties, hoog oploopt
(3,5 dagen), zullen we uitzonderlijk slechts één uitvoering beschouwen. Om de
vergelijking mogelijk te maken, maken we in experiment 6 gebruik van dezelfde
opstelling, maar met gemengde leerverzamelingen.
Penalty
De grootte van de strafmaat bij een botsing is één van de parameters uit onze �theids-
functie die moeilijk a priori vast te leggen is. Enige vorm van empirische sturing voor
de keuze van deze waarde is dus niet te vermijden. De waarden waarvan we gebruik
maakten, zijn te zien in Tabel 3.2. Een goede waarde vinden is belangrijk omdat bij
een te kleine strafmaat de robot tegen de muren zal aanrijden omdat hij hiervan toch
weinig nadeel ondervindt bij de evaluatie.
33
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Drempelwaarden
Tot slot voegden we in sommige experimenten een extra drempelwaarde (medium) toe.
In deze experimenten wordt de waarde van high gewijzigd van 150 naar 300, en medium
krijgt de waarde 150 toegekend. Op deze manier moeten de robots in staat zijn om
correct te navigeren, ook zonder in de buurt van een muur te blijven.
3.4.2 Experimenten in een perfecte wereld: resultaten
De resultaten van deze eerste reeks experimenten werden samengevat in Tabel 3.3. We
onderscheiden twee gedeeltes in de tabel.
Een eerste bevat de belangrijkste gegevens in verband met het evolutieproces. In de
kolom met als titel Beste, wordt de �theid van het beste individu uit de drie uitvoerin-
gen weergegeven. Deze �theid is de uitgemiddelde waarde over de drie laatste, en dus
meest representatieve omgevingen. We merken op dat de waarden in deze kolom enkel
exact vergelijkbaar zijn tussen experimenten waarbij dezelfde penalty gehanteerd werd.
De volgende kolom bevat de gemiddelde �theid van het beste individu over de drie
uitvoeringen. Deze waarde correspondeert niet met de prestatie van een werkelijk be-
staande sturing, maar is wel heel belangrijk voor het vergelijken van de resultaten tussen
de verschillende opstellingen. Omdat GP een probabilistische methode is, is het immers
mogelijk dat de resultaten van de verschillende uitvoeringen sterk van elkaar verschillen.
Omdat we gebruik maken van slechts drie uitvoeringen, is het dus moeilijk conclusies te
trekken enkel en alleen op basis van het beste individu. Zo is het perfect mogelijk dat
een vierde uitvoering een beter resultaat geeft voor een bepaalde opstelling, waardoor
deze eigenlijk beter is dan een andere opstelling. Door ook het gemiddelde te beschou-
wen, zullen we in staat zijn om algemenere conclusies te maken.
Om de spreiding tussen de verschillende uitvoeringen weer te geven werd gebruik ge-
maakt van de standaardafwijking. Deze laat ons opnieuw toe om meer algemene con-
clusies te trekken over een methode. Wanneer de standaarddeviatie tussen de beste
individuen uit de drie verschillende uitvoeringen klein is, zal de opstelling meestal ge-
lijkaardige resultaten opleveren. Wanneer dit niet het geval is, is het mogelijk dat het
beste resultaat van de drie een uitschieter is, en de methode dus misschien maar zelden
een dergelijk resultaat zal opleveren.
De entropie en gemiddelde entropie (over de beste individuen van de drie uitvoeringen)
tonen de resterende diversiteit van de populatie in de laatste generatie. De entropie
van de populatie uit de eerste generaties is doorgaans ongeveer twee. Empirisch stelden
we vast dat waarden die niet signi�cant hoger zijn dan één er meestal op wijzen dat de
diversiteit in de populatie in die mate is gezakt dat grote verbeteringen in de �theid
34
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
weinig waarschijnlijk zijn. Dit zou dus een mogelijk stopcriterium voor het evolutie-
proces kunnen zijn. Dergelijke vaststellingen laten ook toe om de evolutie automatisch
opnieuw te laten starten wanneer te lage waarden te vroeg in de evolutie bereikt werden.
Gelijkaardige technieken worden besproken in [25], we gaan er hier echter niet verder
op in.
De laatste kolom van het eerste gedeelte geeft aan hoeveel van de vijftien gangenstelsels
waarop getraind werd door de beste sturing konden worden doorlopen van begin tot
einde, eventueel met botsingen.
Nr Generaties Populatie Penalty Medium Omgevingen
1 50 300 1 nee standaard
2 50 300 1 nee gemengd
3 50 500 1 nee standaard
4 100 200 1 nee standaard
5 30 300 5 nee alle 15
6 30 300 5 nee gemengd
7 50 300 3 ja venster 2
8 75 300 3 ja venster 3
9 50 300 3 ja gradueel
Tabel 3.2: Opstellingen van de eerste reeks experimenten.
Evolutie Veri�catie
Nr Beste Gemid. StDev E E /15 Botsingen Bewegingen /5 Score
1 0,87211 0,80782 0,056 0,76 0,65 14 47 2342 2 0,82072
2 0,90769 0,86914 0,034 0,46 0,72 15 25 1087 5 0,91402
3 0,90933 0,85658 0,065 1,01 1,06 15 31 1667 3 0,88443
4 0,90341 0,85866 0,072 0,65 0,60 15 126 1356 5 0,89780
5 0,84892 1,34 5 46 1899 0 0,77552
6 0,86412 0,86 9 65 2319 0 0,73036
7 0,90046 0,86386 0,032 1,31 1,30 15 14 1879 4 0,89054
8 0,89983 0,87373 0,029 1,12 1,29 12 0 2320 2 0,84608
9 0,89722 0,87331 0,026 0,88 0,84 14 15 2347 1 0,81579
Tabel 3.3: Resultaten van de eerste reeks experimenten. Voor experimenten 5 en 6 werd één
uitvoering beschouwd, alle andere experimenten werden telkens drie keer uitgevoerd.
35
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Het tweede gedeelte van de tabel bevat gegevens over de prestatie van de beste sturing
op de vijf veri�catieomgevingen (i.e. omgevingen waarop niet getraind werd). Deze
zijn moeilijk, en verschillen meer dan voldoende van de gangenstelsels waarop getraind
werd. De eerste en tweede kolom geven het totaal aantal botsingen, respectievelijk be-
wegingen op de vijf veri�catiegangenstelsels aan. Bewegingen bestaan zowel uit bochten
als rechtdoor rijden. Deze twee parameters geven aan hoe precies en e�ciënt de beste
sturing is. Een robot die onnodig veel draait of vaak een stuk terugkeert zal een hoog
aantal bewegingen hebben. Robots die er niet in slagen om de uitgang te bereiken
zullen een nog veel hoger aantal bewegingen hebben (maximaal 500 per gangenstelsel).
De volgende kolom geeft aan hoeveel van de vijf veri�catieomgevingen succesvol kunnen
worden doorlopen door de beste sturing. Dit is een goede maat voor de robuustheid
van de ontwikkelde sturing.
De laatste kolom tenslotte, geeft de �theid aan uitgemiddeld over de vijf veri�catieom-
gevingen. We hebben in de tabel de naam score gebruikt, omdat deze waarde e�ectief
vergeleken mag worden tussen alle experimenten in de tabel. Hiervoor hebben we de
�theid bepaald op basis van één en dezelfde �theidsfunctie, namelijk deze met als pe-
nalty drie. Deze score geeft aan hoe robuust de beste sturing is.
We merken op dat het verschil tussen de �theidswaarden soms klein is. Echter, we
willen hierbij benadrukken dat kleine verschillen in �theidswaarden een relatief sterk
verschillend gedrag aanduiden doordat de �theidswaarde herschaald werd om kleiner te
zijn dan één. Zo is het verschil in prestatie tot en met het derde cijfer na de komma
signi�cant. Het verschil van één honderdste is doorgaans heel duidelijk.
Hierna zetten we de belangrijkste resultaten uit de eerste reeks van experimenten op
een rij. Algemeen stelden we vast dat bij het voorstellen van de �theidshistogrammen
er meestal duidelijk een evolutie te zien is van hoofdzakelijk lage �theden in de eerste
generaties over meer verspreide �theden in de verdere generaties tot voornamelijk hoge
�theidswaarden in de laatste generaties.
Aantal generaties en populatiegrootte
Het enige verschil tussen experiment 1 en 3 is de populatiegrootte van 300 respectieve-
lijk 500. Wanneer we de resultaten vergelijken dan zien we dat, zowel bij de omgevingen
waarop getraind werd als bij de veri�catieomgevingen achteraf, een grotere populatie-
grootte loont. Dit is volledig in lijn met de verwachtingen. We merken op dat dit
wel leidt tot een grote meerkost in rekentijd, namelijk 75.000 (3 x 500 x 50) evaluaties
tegenover 45.000, of dus 67%. Wanneer we betere prestaties kunnen bereiken op een
andere manier dan de populatiegrootte aan te passen krijgt dit dus de voorkeur.
Zoals te zien bij de resultaten voor experiment 4, leidt een groter aantal generaties, zelfs
36
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
met minder evaluaties, tot net iets betere resultaten voor de veri�catieomgevingen. Al-
gemeen kan over het verschil tussen experiment 3 en 4 echter weinig met zekerheid
geconcludeerd worden. Beide presteren ongeveer even goed, de ene iets beter dan de
andere bij de trainingsvoorbeelden, en omgekeerd bij de veri�catieomgevingen. Ze zijn
wel duidelijk beter dan het experiment met minder generaties en een kleinere popula-
tiegrootte. Ook zijn de resultaten van beide opstellingen iets minder voorspelbaar dan
experiment 1, waarbij de standaarddeviatie duidelijk lager ligt. Hoewel experiment 4
er in slaagde om alle omgevingen succesvol te doorlopen, zijn er toch duidelijk meer
botsingen dan bij de andere opstellingen.
Leerverzameling en aantal leervoorbeelden
Grotere populaties en meer generaties leiden tot betere resultaten maar brengen een
grote rekenkost met zich mee. Hier willen we deze omzeilen door onze leerverzamelin-
gen goed te kiezen. Bij de gemengde aanpak in experiment 2 is dit duidelijk geslaagd.
Het resultaat is, vooral op de veri�catieomgevingen, beter dan bij de standaard aanpak
met dezelfde parameters uit experiment 1. Wat belangrijker is, is dat deze aanpak, met
beduidend minder generaties en een kleinere populatie toch beter presteert dan expe-
rimenten 3 en 4. Opnieuw is vooral de prestatie op de veri�catiedoolhoven duidelijk
beter. De gemengde aanpak scoort dus duidelijk beter op gebied van robuustheid dan
de standaard aanpak. Ook de herhaalbaarheid van het resultaat is hoger dan bij expe-
rimenten 1, 3 en 4, getuige de lagere standaarddeviatie en de relatief hoge gemiddelde
waarde. Door gebruik te maken van gemengde leerverzamelingen kunnen we dus een
groot aantal generaties en/of een grote populatie vermijden en toch betere resultaten
verkrijgen. Deze opstelling is in staat om op een e�ciënte manier, gelet op het kleine
aantal bewegingen, alle gangenstelsels te doorlopen met een beperkt aantal aanrijdin-
gen.
Waarom de gemengde aanpak duidelijk beter scoort heeft twee redenen. Ten eerste
zal dit leiden tot een grotere selectiedruk omdat er een grotere diversiteit aan �theden
bestaat. Dit wordt veroorzaakt doordat verschillende programma's, die in allemaal ge-
lijkaardige omgevingen dezelfde �theid vertonen, nu verschillende �theden toegekend
krijgen omdat ze in meer diverse omgevingen getest worden. In dergelijke omgevingen
komen kleinere verschillen in functionaliteit wel tot uiting. Dit wordt bevestigd in Fi-
guur 3.2, waar het gemiddelde entropieverloop van de beste sturingen uit experimenten
1 en 2 wordt voorgesteld. Er blijkt duidelijk dat, vooral tijdens de eerste vijftien gene-
raties, de diversiteit in de populatie met de gemengde aanpak groter is.
Ten tweede is ook de diversiteit aan leervoorbeelden groter, waardoor de sturingen al-
gemener moeten zijn van bij de start van de evolutie. Door een grotere diversiteit in
37
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.2: Het verloop van de gemiddelde entropie (over de drie uitvoeringen) van de beste
sturingen geëvolueerd met de gemengde en de standaard opstelling uit experimenten 1 en 2.
Figuur 3.3: De �theidsevolutie van de gemiddelde waarden voor de beste individuen van de drie
uitvoeringen van experimenten 1, 2, 3 en 4. De laatste 50 generaties van experiment 4 leverden
geen signi�cante verbetering in �theid op. We hebben deze waarden om het overzichtelijk te
houden dan ook niet opgenomen.
38
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
omgevingen wordt dus ook de kans op vroegtijdige convergentie verminderd.
Dat de gemengde aanpak robuuster is, ook al tijdens de evolutie, wordt aangegeven in
Figuur 3.3. Deze stelt het verloop voor van de gemiddelde �theden van de beste sturing
van ieder experiment. Waar bij de andere drie experimenten duidelijk sterke dalingen
van de �theid optreden bij het wisselen van de leerverzameling, is dit veel beperkter bij
de gemengde aanpak. Dit is het best zichtbaar rond generatie twintig.
De gelaagd leren aanpak is hier dus toepasbaar, maar enkel op voorwaarde dat de ver-
scheidenheid in omgevingen voldoende groot is, zodat de basis waarop verder geleerd
wordt voldoende algemeen is.
We merken op dat het verloop dat we te zien krijgen in deze �guur niet correspondeert
met hetgeen gebruikelijk is in de literatuur. Dit is te verklaren door het voortdurende
wisselen van leervoorbeelden. Experiment 5 vertoont wel een continu niet dalend ver-
loop; hier wordt de verzameling leervoorbeelden inderdaad niet gewisseld.
Door combinatie van Figuur 3.2 en Figuur 3.3 bevestigen we onze eerdere vaststelling
dat eenmaal de entropie niet signi�cant verschilt van één, er nog maar weinig kans
op sterk verbeterde �theidswaarden is. Inderdaad, vanaf generatie 25, waarbij experi-
menten 1 en 2 de entropie voor het eerste in de buurt van één komt, is er voor deze
experimenten geen grote verbetering in �theid meer te noteren.
Over experiment 5, waar de leerverzameling telkens bestaat uit alle vijftien omgevin-
gen, kunnen we kort zijn. Dit voldoet geenszins aan de eisen. Het evolutieproces is niet
in staat om een oplossing te ontwikkelen, ondanks de grote rekentijd (3,5 dagen) die
beschikbaar was. Het is dus zonder meer voordelig om de leerverzameling beperkt te
houden en te wisselen om met een kortere rekentijd betere resultaten te verkrijgen.
De laatste drie experimenten hebben een laag aantal botsingen. Vooral de gemiddelde
waarden van deze opstellingen zijn zeer hoog. We verwachten dat deze opstellingen
bij de meeste uitvoeringen redelijk goede resultaten opleveren. Experiment 8 slaagt
er in om geen enkele aanrijding te veroorzaken op de veri�catieomgevingen. Echter,
op de andere vlakken zijn de resultaten voor dit experiment te zwak gegeven de extra
rekentijd. De resultaten voor experiment 9 zijn op het vlak van robuustheid slecht: de
veri�catiescore is zwak. Dit wordt mogelijks verklaard doordat iets te lang op dezelf-
de omgevingen getraind wordt, waardoor (beperkte) convergentie optreedt vooraleer
de laatste en belangrijkste leerverzameling aan bod kwam. Experiment 7 scoort wel
redelijk goed voor robuustheid. Bovendien is de resterende entropie nog relatief hoog,
waardoor mogelijk met enkele extra generaties betere resultaten mogelijk zijn. Zowel
de graduele aanpak als die met het schuivend venster zijn dus zeker opties die we ver-
der zullen bekijken. De robuustheid van geen enkele van deze experimenten is echter
vergelijkbaar met die van de gemengde aanpak.
39
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Penalty
De strafmaat moet duidelijk hoger zijn dan één. De eerste vier experimenten maken
gebruik van één als straf, de stimulans die dit oplevert is te beperkt. Zowel tijdens
de evolutie als achteraf wordt er vaak tegen muren aangereden. Voor vijf als penalty
(experimenten 5 en 6) kunnen we geen absolute conclusies trekken omdat het resultaat
te slecht is. De oorzaak moet echter niet (alleen) gezocht worden bij de strafparameter,
eerder bij de andere instellingen. We besluiten dat drie een minimumwaarde voor de
strafmaat is.
Drempelwaarden
We stellen vast dat de bijkomende drempelwaarde medium er niet toe leidt dat het
evolutieproces niet langer in staat is om een goede sturing te ontwikkelen. Zo zijn er bij
de laatste drie experimenten minder botsingen, deels te verklaren doordat preciezere
vergelijking met de sensorwaarden mogelijk is.
Grootte van de individuen
Een bekend probleem als gevolg van de variabele grootte van de oplossingen bij GP
is codegroei. In sommige probleemdomeinen waar GP gebruikt wordt, stelt men vast
dat de grootte van de geëvolueerde individuen (sterk) stijgt in de loop der generaties.
Dit probleem wordt uitgebreid beschreven en behandeld in [48]. Zoals reeds eerder
opgemerkt wordt dit vaak veroorzaakt door intronen en kan de functionele code wel
een aanvaardbare grootte hebben. Wanneer we hier de absolute lengte van de code
beschouwen voor bijvoorbeeld de beste uitvoering, dan stellen we inderdaad een (lichte)
vorm van codegroei vast. De gemiddelde absolute grootte van de individuen uit de
eerste 30 generaties schommelt tussen 100 en 150 knopen. Vanaf generatie 35 loopt dit
al op tot rond 250 om vanaf generatie 40 reeds de 300 te overschrijden. De gemiddelde
absolute grootte van de programma's uit de laatste generatie is 350 knopen met een
gemiddelde diepte van 14. Het beste individu is van de grootteorde van 400 knopen.
We merken op dat, ondanks de relatief beperkte grootte, de sturing niet langer leesbaar
is, vooral door de vele (diep) geneste constructies.
Wanneer we de code iets beter bekijken, dan kunnen we echter al snel redelijk wat
knopen schrappen die nooit zullen worden uitgevoerd. Verder blijft een programma
bestaande uit 400 knopen zeker bruikbaar, ook zonder de intronen te verwijderen. Een
dergelijk programma vormt absoluut geen probleem om uitgevoerd te worden op een
mobiele robot met een beperkte processor en klein geheugen.
40
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.4: Het parcours dat de beste robot uit experiment 2 volgt in respectievelijk omgeving
14 en veri�catieomgeving 2.
Beste sturing
De sturing die de beste resultaten haalde, zowel in de omgevingen waarop getraind
werd als in de veri�catieomgevingen, is deze uit experiment 2 met de gemengde aanpak.
Bovendien was een eerder beperkte populatiegrootte en aantal generaties voldoende. In
Figuur 3.4 is het parcours van de robot te zien. Deze sturing volgt een wall following
aanpak door steeds zo dicht mogelijk bij de linkermuur te blijven. Initieel is te zien
hoe de robot zoekt naar deze linkermuur, eenmaal deze gevonden, wordt correct de
muur gevolgd. Deze aanpak wordt mogelijks ingegeven door het feit dat de robot
in dit experiment slechts over twee drempelwaarden beschikt om mee te vergelijken.
Aangezien deze eerder laag zijn, kan de robot blijkbaar e�ciënter zijn door dicht tegen
de muren te blijven. Het parcours dat de robot volgt is logisch en redelijk e�ciënt.
Echter de methode is nogal vreemd daar de robot achteruit rijdt, terwijl hij niet over
een sensor achteraan beschikt. Daarom draait de robot af en toe 90◦ om met een sensor
op de zijkant te controleren of de volgende muur nog veraf is. Deze methode is niet
altijd correct. Wanneer bijvoorbeeld twee muren korter na elkaar staan dan gewoonlijk
rijdt de robot tegen de muur aan. Dit gedrag is mogelijks te wijten aan het te beperkt
bestra�en van botsingen. Dit kan perfect verholpen worden door een hogere penalty in
te stellen en de andere parameters onveranderd te laten.
Besluit
Algemeen besluiten we dat ons opzet om een sturing te ontwikkelen met GP voor het
volgen van een gangenstelsel in een perfect veronderstelde simulatieomgeving voor om-
gevingen waarop tijdens de evolutie getraind werd zonder meer mogelijk is. Verschillen-
de opstellingen waren in staat om dit te verwezenlijken, zij het met soms verschillende
41
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
rekentijden. We merken wel op dat er ook op de getrainde gangenstelsels nog botsingen
gebeuren. Dit is in de beste sturing wel beperkt tot een totaal van vijf voor alle vijftien
omgevingen. De penalty zou hiervoor iets hoger mogen ingesteld worden.
De tweede doelstelling was dat de sturing ook robuust zou zijn, in die zin dat ook om-
gevingen waarop niet getraind werd haalbaar moeten zijn. Twee experimenten leverden
dergelijke resultaten op. Omwille van e�ciëntieredenen krijgt de gemengde aanpak uit
experiment 2 de voorkeur. Ook hier gebeuren nog enkele botsingen. Opnieuw kunnen
we dit eenvoudig oplossen door de penalty te verhogen.
We stelden dus vast dat de aanpak met gelaagd leren goede resultaten oplevert. Wel
moet de diversiteit in de leerverzameling voldoende groot zijn om te voorkomen dat
de basis waarop verder geleerd wordt te speci�ek is. Dit is immers de oorzaak van het
falen van de standaardaanpak. Bij de gemengde methode werd dit succesvol aangepast.
3.4.3 Experimenten met ruis op de sensorwaarden: opstelling
In sectie 3.4.2 toonden we aan dat met perfect veronderstelde sensoren en actuatoren het
zonder meer mogelijk is om sturingen te ontwikkelen voor het volgen van gangenstelsels
in simulatie. We gaan niet verder in op deze opstelling omdat gekend is dat dit in de
praktijk niet het geval is. Sensoren en actuatoren zijn immers onderhevig aan ruis.
Bovendien hebben verschillende robots van hetzelfde type quasi nooit exact dezelfde
karakteristieken.
We gaan daarom een stap verder door het toevoegen van ruis aan de sensoren. Zoals
eerder aangehaald zullen we gebruik maken van een normaal verdeelde ruiscomponent
met gemiddelde nul en met een standaarddeviatie van drie. Concreet zullen we de
willekeurig gegenereerde waarde uit de normaalverdeling als een percentage beschouwen
dat aangeeft in welke mate we de echte sensorwaarde aanpassen. Dit betekent dat
99,73% van de ruiscomponenten die we toevoegen ten hoogste 9% afwijking op de
sensorwaarde veroorzaken.
Deze aanpak laat ons toe om enerzijds een stap dichterbij een realistische oplossing te
zetten, maar laat ons ook toe om algemenere oplossingen te ontwikkelen omdat het
toevoegen van ruis doorgaans zorgt voor robuustere oplossingen.
We beschouwen vijf experimenten, zoals samengevat in Tabel 3.4. Experiment 10 en
11 gaan verder met de beste aanpak uit de vorige reeks experimenten, zij het met een
penalty van drie. Experiment 13 maakt gebruik van de graduele methode. De beste van
de drie uitvoeringen van dit experiment wordt gebruikt om nog een aantal generaties
verder te evolueren in experiment 14.
42
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Nr Generaties Populatie Penalty Medium Omgevingen
10 50 300 3 nee gemengd
11 50 300 3 ja gemengd
12 75 300 3 ja venster 3
13 50 300 3 ja gradueel
14 68 300 3 ja gradueel
Tabel 3.4: Opstelling van de tweede reeks experimenten.
Evolutie Veri�catie
Nr Beste Gemid. StDev E E /15 Botsingen Bewegingen /5 Score
10 0,90922 0,86332 0,040 1,13 1,00 14 25 1777 2 0,85497
11 0,87860 0,86663 0,013 1,44 1,31 9 26 2433 0 0,68938
12 0,90154 0,88645 0,013 0,77 0,88 15 42 1827 4 0,89167
13 0,91174 0,91077 0,002 1,50 1,43 15 0 1575 3 0,88553
14 0,91234 1,08 14 2 871 5 0,91711
Tabel 3.5: Resultaten van de tweede reeks experimenten.
3.4.4 Experimenten met ruis op de sensorwaarden: resultaten
De resultaten van de tweede reeks experimenten worden weergegeven in Tabel 3.5. Er
blijkt dat de gemengde aanpak die zeer succesvol was in de ruisvrije simulatie minder
geschikt is in een omgeving met toegevoegde ruis. De resultaten tijdens de evolutie zijn
nog steeds goed en vergelijkbaar met deze in de situatie zonder ruis, maar de robuust-
heid is te laag om ook in de veri�catieomgevingen goed te scoren. Mogelijks is dit te
wijten aan de relatief korte leertijd die beschikbaar is voor de gemiddelde en gevorder-
de categorieën, terwijl deze toch een signi�cante extra moeilijkheidsgraad bezitten. Bij
de graduele aanpak is de leertijd voor deze types omgevingen wel langer dan voor de
eenvoudigere types omgevingen. Dit leidt duidelijk tot een beter resultaat.
De methode met het schuivend venster uit experiment 12 scoort beter dan de vorige
twee, maar wel ten koste van extra rekentijd. Dit is dus geen optie.
De best presterende con�guratie is zonder meer de graduele aanpak, waarbij geleide-
lijk aan langer getraind wordt op de moeilijker wordende categorieën. Deze graduele
gelaagd leren aanpak leidt tot een goed resultaat in experiment 13. Heel belangrijk
hierbij is het extreem hoge gemiddelde en zeer lage standaarddeviatie waardoor deze
aanpak in de meeste uitvoeringen tot goede resultaten zal leiden. Bovendien wordt op
43
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.5: De sensorencon�guratie van de standaardrobot kan problemen opleveren. De
sensor vooraan is actief, maar detecteert de verticale muur niet.
geen enkele van de veri�catieomgevingen een botsing veroorzaakt. Omdat de entropie
na 50 generaties nog steeds relatief hoog is, gingen we na of er nog evolutie mogelijk
was. De beste uitvoering lieten we verder evolueren totdat de entropie dicht genoeg één
benaderde, in dit geval tot generatie 68. Er blijkt dat de �theid inderdaad nog steeg,
en wat belangrijker is, alle veri�catieomgevingen kunnen met de resulterende sturing
opgelost worden. We merken op dat met deze sturing wel één getrainde omgeving niet
kan worden opgelost. Het betreft een omgeving uit de tweede categorie.
De reden voor het falen van deze sturing in de betre�ende omgeving wordt deels ver-
oorzaakt door de gebrekkige sensorencon�guratie op de standaard uitvoering van de
robot. Dit wordt gevisualiseerd in Figuur 3.5. De sensor vooraan, net als op de echte
robot niet centraal opgesteld, is niet in staat om de verticale muur te detecteren, waar-
door de robot vastraakt tegen deze muur. Hetzelfde probleem stelden we vast bij de
twee veri�catieomgevingen die niet succesvol doorlopen werden door het beste individu
uit generatie 50. Het evolutieproces was in staat om dergelijke situaties grotendeels te
vermijden, aangetoond door de sturing in generatie 68 die wel in staat was om de twee
problematische omgevingen te doorlopen. Echter een algemenere oplossing is wenselijk.
We geven hiervoor de voorkeur aan een betere sensorencon�guratie met een groter be-
reik. Hiervoor verwijzen we naar Hoofdstuk 4.
Wanneer we het gedrag van de beste sturing uit experiment 14 nader bekijken, stellen
we vast dat opnieuw een wall following-aanpak aan de basis ligt. Soms wordt iets meer
afgeweken van de muur, maar doorgaans blijft de robot dicht in de buurt. Deze sturing
is veel e�ciënter dan deze uit experiment 2, waar te veel gedraaid werd. Dit wordt
bevestigd door het veel kleinere aantal bewegingen. Een voorbeeld van het navigatie-
gedrag is te zien in Figuur 3.6. Naast een occasionele overbodige bocht zoals in het
rechtse deel van de �guur, is de sturing heel e�ciënt. Deze extra bocht is te verklaren
doordat de sturing controleert of de robot wel degelijk de meest linkse hoek bereikt
heeft, zodat met zekerheid nog steeds de linkermuur gevolgd zal worden. Anders is het
44
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.6: Het parcours dat de beste sturing uit experiment 14 volgt in respectievelijk om-
geving 14 en veri�catieomgeving 2.
mogelijk dat de robot draait en in de verkeerde richting verder gaat. Deze techniek
wordt ook gebruikt in een aantal andere omgevingen. In tegenstelling tot experiment 2
rijdt de robot altijd vooruit en maakt bijgevolg beter gebruik van de aanwezige sensoren
zonder daarvoor te moeten draaien. Deze sturing is dus duidelijk e�ciënt, robuust en
bruikbaar.
De grootte van deze sturing is groter dan deze ontwikkeld in de vorige reeks experimen-
ten. Opnieuw stellen we een lichte vorm van codegroei vast. Deze is overigens zichtbaar
in bijna alle experimenten die we uitvoerden. Hier is de absolute grootte tot generatie
25 kleiner dan 300, na generatie 50 is dit al opgelopen tot meer dan 500. De resulte-
rende sturing in generatie 68 is van de grootteorde van 650 knopen, het gemiddelde in
deze generatie is 623 met een diepte van 16,23. Opnieuw is deze grootte aanvaardbaar
voor uitvoering op de robot zelf.
3.5 Van simulatie naar realiteit
Uit de vorige sectie bleek duidelijk dat het voordelig is om ruis toe te voegen aan de
sensoren om te komen tot algemenere sturingen. Op deze manier kan het evolutieproces
immers minder gebruik maken van toevalligheden of onvolmaaktheden in de simulatie.
Bovendien is een dergelijke simulatie een goede test met het oog op het gebruik van
deze sturing op de echte robot. Nu kunnen we immers met grote waarschijnlijkheid
stellen dat het inderdaad mogelijk is om een dergelijke sturing te ontwikkelen.
Echter, willen we een programma dat succesvol de navigatie van de echte robot kan
voltooien, dan zullen we ook ruis moeten toevoegen aan het sturingsmechanisme. Door
het verschil in grip op de ondergrond en de lichte afwijkingen van de elektronische
45
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Evolutie Veri�catie
Nr Beste Gemid. StDev E E /15 Botsingen Bewegingen /5 Score
15 0,91404 0,91000 0,004 2,08 1,31 15 4 1759 5 0,91982
16 0,91504 0,90118 0,022 0,98 1,00 14 42 3846 3 0,88149
Tabel 3.6: Resultaten van de derde reeks experimenten.
en mechanische onderdelen zal de werkelijk afgelegde afstand of draaihoek nooit exact
overeenstemmen met de opgegeven waarden. Dit zou kunnen opgelost worden met een
kompas of andere technieken. Hier aanvaarden we de imperfecties, en zullen we de stu-
ring voldoende robuust maken zodat deze hiermee rekening kan houden. We gaan na of
dit mogelijk is door het toevoegen van ruis. We gebruiken opnieuw dezelfde additieve
ruiscomponent voor de sensoren als in de vorige experimenten. Voor het stuurmecha-
nisme maken we gebruik van dezelfde distributie, maar met een standaarddeviatie van
twee.
Tot hiertoe kon de robot enkel bochten van 90◦ nemen. Door de fouten op de echte
hardware zou dit echter vaak sterk afwijken3. Dit kan dan moeilijk of niet e�ciënt
gecompenseerd worden. Daarom zullen we hier gebruik maken van bochten van 15◦ als
basis. Deze zijn voldoende klein om precies sturen toe te laten, bezitten een kleinere
absolute fout, en kunnen gemakkelijker gecompenseerd worden. Hierdoor zullen we ook
het maximaal aantal simulatiestappen (bewegingen) verhogen van 500 naar 1500.
3.5.1 Evolutie in simulatie
Een dergelijk experiment is duidelijk complexer dan de vorige opstellingen. Echter met
de kennis uit de voorgaande experimenten moet het mogelijk zijn om de resultaten
op te schalen naar een moeilijkere opstelling. Wel blijft de vraag in welke mate de
extra complexiteit moet doorgerekend worden naar de populatiegrootte en het aantal
generaties. In experimenten 15 en 16 maken we gebruik van een populatiegrootte van
500 en het aantal generaties wordt respectievelijk op 100 en 200 ingesteld4. Dit heeft
tot gevolg dat de rekentijd sterk vergroot, namelijk bijna twee dagen voor experiment
15. Voor alle andere parameters maken we gebruik van dezelfde opstelling als deze in
experiment 14; het beste resultaat tot nu toe.
De resultaten van deze experimenten worden voorgesteld in Tabel 3.6. Merk op dat
3Bij een eenvoudige test op de robot bleek inderdaad dat een bocht van 90◦ in sommige gevallen een
foutmarge had van meer dan 15◦.4De wissels van leerverzamelingen worden nu doorgevoerd na generaties 14, 30, 50, 74 respectievelijk 25,
55, 95, 140.
46
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.7: Het parcours dat de beste sturing uit experiment 15 volgt in respectievelijk om-
geving 14 en veri�catieomgeving 2.
wegens het aangepaste aantal bewegingen het niet meer mogelijk is om de resultaten te
vergelijken met deze uit de vorige experimenten. Experiment 15 leidt duidelijk tot het
beste resultaat. Niet alleen slaagt het in alle omgevingen waarop getraind werd, ook
alle veri�catieomgevingen worden succesvol afgewerkt. Het resultaat voor experiment
16 voor de leeromgevingen is nog beter, maar de veri�catieomgevingen leiden tot veel
problemen. Dit wordt waarschijnlijk verklaard doordat we het evolutieproces iets te
veel tijd hebben gegeven voor het leren per leerverzameling. Dit zal mogelijks geleid
hebben tot vroegtijdige convergentie, en tijdens de laatste generaties tot te vergaande
specialisatie in de laatste leeromgevingen. De vroegtijdige convergentie wordt bevestigd
door een sterk gedaalde entropie vroeg in het evolutieproces. Na het wisselen van de
leervoorbeelden stijgt deze weliswaar opnieuw.
Experiment 15 levert dus goede resultaten met slechts de helft van de rekentijd van
experiment 16. We stellen wel vast dat het moeilijk is en blijft om in te schatten wat
de geschikte populatiegrootte en aantal generaties zijn. Een zekere mate van trial en
error valt niet uit te sluiten.
In Figuur 3.7 zijn twee voorbeelden te zien van het gedrag van de beste sturing uit ex-
periment 15. De sturing maakt vaak gebruik van vloeiende bochten en rijdt rechtdoor
waar mogelijk. Dit is bijgevolg een e�ciënte sturing. Dat het nog beter kan wordt
duidelijk doordat de robot af en toe een klein stukje achteruit rijdt wanneer deze te
dicht tegen een muur komt. Dit geheel leidt tot een robuuste sturing die in staat is om
alle geteste omgevingen te doorlopen.
Opnieuw valt op dat de onderliggende strategie van deze sturing een wall following
is. De robot volgt steeds, zij het met enige tussenafstand, de linkse muur. Alle goed
presterende sturingen tot nu toe maakten gebruik van een dergelijke aanpak. Dit is
47
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
(a) Sturing 15 in een doolhof. (b) Sturing 16: vloeiend gedrag.
Figuur 3.8: (a) Het parcours dat de sturing uit experiment 15 volgt in een eenvoudig doolhof.
De strategie bestaat duidelijk uit het volgen van de linkse muur. (b) De sturing uit experiment
16 in veri�catieomgeving 4. Het verloop is duidelijk veel vloeiender en golvender.
waarschijnlijk ook de beste oplossing om niet in de verkeerde richting verder te rijden.
Deze strategie wordt mooi geïllustreerd in Figuur 3.8a. Daar wordt het parcours aange-
geven dat de robot volgt wanneer deze in een eenvoudig doolhof wordt geplaatst. Ook
hier is deze in staat, door de linkse muur te volgen, de uitgang te bereiken.
Overigens is het programma achter deze sturing heel kort; minder dan 200 knopen.
Dit is een duidelijk verschil met de sturingen in de vorige experimenten. Hier wordt
aangetoond dat GP inderdaad kan leiden tot korte en toch algemene programma's. Dit
programma werd als voorbeeld opgenomen in Bijlage A.
Experiment 16 leidt tot een sturing die minder robuust is. De sturing is echter wel heel
e�ciënt op de omgevingen waar ze succesvol is. In Figuur 3.8b is het gedrag van deze
sturing te zien. Er wordt heel vloeiend genavigeerd. Dat dit iets e�ciënter is, wordt
ook bevestigd door de hogere �theid na de evolutie.
Wanneer we extra ruis toevoegen op de sensoren en motoraansturing (respectievelijke
standaarddeviaties van vijf en drie) dan worden nog steeds alle veri�catieomgevingen
succesvol afgelegd; weliswaar met twee extra botsingen. Zelfs met een standaardde-
viatie van 10 op beide ruiscomponenten worden alle veri�catieomgevingen nog steeds
doorlopen. In dit geval wel met in totaal zes aanrijdingen. Om het aantal aanrijdingen
naar nul terug te brengen kan de penalty voor botsingen verhoogd worden. Ook meer
of beter geplaatste sensoren zijn een optie.
48
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.9: Schematische voorstelling van een omgeving waarin de echte robot getest werd.
De robot start linksbovenaan en moet navigeren naar het punt centraal op de �guur.
3.5.2 Transfer naar echte robot
In de literatuur werd al aangetoond dat de transfer van simulatie naar echte robot (voor
eenvoudige taken) zonder veel problemen mogelijk is [28, 30]. Voorwaarde is wel dat
de simulatie voldoende precies is. Pas dan zal er een goede overeenkomst tussen het
gedrag in simulatie en realiteit mogelijk zijn. Bovendien kan door het toevoegen van
ruis in de simulatie deze overeenkomst nog verbeteren.
Soms wordt ook een duidelijke daling van de �theid vastgesteld bij de transfer van si-
mulatie naar realiteit [37]. Deze reality gap wordt grotendeels verklaard door de niet
perfecte modellering van de echte wereld.
We gebruikten de sturing ontwikkeld in experiment 15 om de echte robot aan te sturen.
Daarvoor maakten we gebruik van verschillende gangenstelsels, meestal korter dan deze
uit de laatste generaties. Ook verschillende moeilijkheidsgraden werden getest.
We stelden wel degelijk een daling in de �theid vast. Dit werd veroorzaakt doordat
de sensoren op de robot objecten die heel dichtbij zijn niet als dusdanig waarnemen.
Concreet zullen de sensoren vanaf een afstand van minder dan 10 cm meestal waarden
weergeven die duidelijk hoger zijn (tot meer dan 200 mm) dan de werkelijke afstand.
Wanneer de robot vanaf deze afstand naar de muur toe rijdt, dan stijgen de sensor-
waarden in plaats van te dalen. Omdat tijdens de simulatie geen rekening gehouden
werd met deze eigenschap was de robot hier niet op voorbereid. Schommelingen op de
sensorwaarden vormen geen enkel probleem, maar dergelijke grote veranderingen zijn
dat wel. Omdat de kleinste drempelwaarde waarvan de robot gebruik kan maken 75
mm is, zijn hier dus inderdaad problemen mogelijk. Na deze vaststelling hebben we,
om het probleem te beperken, op de echte robot deze waarde gewijzigd naar iets meer
dan 100. Dan blijkt duidelijk dat het aangeleerde gedrag in simulatie ook kan herhaald
49
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
Figuur 3.10: Enkele foto's van het parcours dat de echte robot volgt met behulp van de sturing
uit experiment 15. In deze omgeving is de robot e�ciënt en treden er geen botsingen op.
50
HOOFDSTUK 3. EVOLUTIE VAN ROBOTSTURINGEN
worden in realiteit. De linkse muur kan redelijk rechtlijnig gevolgd worden, kleine af-
wijkingen worden bijgestuurd en ook bochten worden succesvol genomen. In sommige
omgevingen, iets meer dan in simulatie, stelden we wel een botsing vast. Dit wordt
vooral veroorzaakt door de gebrekkige werking van de echte sensoren.
Om het gedrag van de robot in realiteit te illustreren zullen we gebruik maken van de
in Figuur 3.9 schematisch voorgestelde omgeving. Om de robuustheid van de sturing
na te gaan, gingen we uit van andere verhoudingen en muurlengtes dan in de simulatie-
omgevingen. Verder hebben we de robot, in plaats van loodrecht, schuin laten starten.
Merk op dat in het rechtse stuk van het gangenstelsel de rechtermuur deels weggelaten
werd. Dit om aan te tonen dat de strategie van de robot wel degelijk uit het volgen van
de linkse muur bestaat.
In Figuur 3.10 zijn enkele foto's van het navigatiegedrag te zien. De robot volgt eerst
een rechte lijn maar doordat deze schuin moest starten, wordt al snel bijgestuurd en
gaat de robot quasi loodrecht verder. Telkens wanneer de robot iets te dicht tegen
een muur aankomt, wordt bijgestuurd. Bochten van zowel 90◦ als 180◦ worden in deze
omgeving telkens e�ciënt aangesneden.
3.6 Besluit
We besluiten dat het zonder meer mogelijk is om met een relatief beperkte rekentijd stu-
ringen te evolueren die in staat zijn om succesvol te navigeren in de omgevingen waarop
getraind werd. Door gebruik te maken van een licht aangepaste vorm van gelaagd leren
waarbij we de diversiteit binnen de leerverzamelingen voldoende hoog houden is het
bovendien ook mogelijk om sturingen te ontwikkelen die succesvol zijn in omgevingen
waarop niet getraind werd. We stelden ook vast dat het toevoegen van ruis inderdaad
leidt tot robuustere oplossingen.
Om over te gaan van simulatie naar realiteit maakten we gebruik van kleinere bochten
en ruis op zowel sensoren als actuatoren. Deze opschaling van het probleem kon succes-
vol aangepakt worden in simulatie en leidde opnieuw tot robuuste oplossingen. Hiervoor
maakten we gebruik van een graduele gelaagd leren aanpak met voldoende diversiteit
binnen de leerverzamelingen. We merkten op dat het wel moeilijk is om a priori vast
te leggen wat de minimale eisen zijn voor het aantal generaties en de populatiegrootte
om tot een succesvolle oplossing te komen.
Tenslotte stelden we ook vast dat, ondanks een niet perfecte overeenkomst tussen simu-
latie en realiteit, het toch mogelijk was om het basisgedrag van de robot in simulatie
over te brengen naar de realiteit. We merkten wel op dat er meer botsingen waren in de
realiteit dan in simulatie. Dit werd grotendeels veroorzaakt door gebrekkige sensoren.
51
Hoofdstuk 4
Evolutie van robotmorfologie
Tot hiertoe hebben we steeds sturingen ontwikkeld voor een bestaande robot, zonder te
raken aan de bouw of eigenschappen van de robot zelf. Echter, in de natuur ondergaat
het volledige organisme de evolutie. Niet alleen de hersenen, ook het lichaam wordt
aangepast in de loop van het evolutieproces. Voor het ontwikkelen van robots kunnen
we dit biologisch adaptatieproces doortrekken. Zo is het mogelijk om gelijktijdig het
gedrag en de bouw (i.e. morfologie) van de robot te evolueren. Hierdoor zal zowel de
sturing als de morfologie geëvolueerd worden om zo goed mogelijk een bepaalde taak
uit te voeren. Deze co-evolutionaire aanpak kan er toe leiden dat GP beter geschikte
en e�ciëntere robots en sturingen evolueert. Op deze manier ontstaat een geautomati-
seerd ontwerpproces van zowel gedrag als morfologie, waarbij beide op elkaar afgestemd
kunnen worden.
Co-evolutie van gedrag en bouw kan niet alleen sneller leiden tot betere resultaten, het
kan ook voordelig zijn bij de eigenlijke bouw van de robot. Zo is het mogelijk dat on-
derdelen of functies die men als menselijke ontwerper aan de robot zou toevoegen door
de evolutie niet als voordelig geëvalueerd worden. Het weglaten van dergelijke onnodige
onderdelen kan leiden tot een goedkopere en betere robot. Bovendien is de optimale
bouw van een robot sterk afhankelijk van de taak die zal moeten uitgevoerd worden.
De indeling van dit hoofdstuk ziet er uit als volgt. Eerst gaan we iets dieper in op het
concept achter gelijktijdige evolutie van sturing en morfologie. Daarna zetten we uiteen
wat de mogelijkheden zijn en hoe we juist te werk zullen gaan. Tenslotte geven we een
overzicht van de uitgevoerde experimenten. We beschouwen drie reeksen, elk met hun
speci�eke eigenschappen.
52
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
4.1 Situering
Deze techniek is relatief recent en gebaseerd op de Hox -genen uit natuurlijke organis-
men. Deze coderen voor de bouw van het organisme. Aanpassen van dergelijke genen
zal dus leiden tot organismen met een andere bouw [27].
Er werd reeds aangetoond dat een goed ontworpen morfologie kan leiden tot een eenvou-
digere en robuustere sturing. Beide samen evolueren kan dus leiden tot een meer comple-
te en samenhangende totaaloplossing. Echter, in onder andere [1] werd de mogelijkheid
vastgesteld dat een beter resultaat niet zozeer het gevolg is van een betere morfologie
met aangepaste sturing, maar ook van de extradimensionale verbinding (extradimen-
sional bypass) in de zoekruimte. Door co-evolutie van het gedrag en de bouw van de
robot kan het evolutieproces sneller tot een oplossing komen die door de opbouw van
het �theidslandschap anders niet of veel moeilijker bereikbaar zou zijn geweest. Con-
creet kunnen door het toevoegen van extra (morfologische) parameters verbindingen in
de geïntroduceerde hogere dimensies van de zoekruimte ontstaan. Deze verbindingen
vormen een connectie tussen pieken van hoge �theden die in lagere dimensies sterk
van elkaar gescheiden waren. Toevoegen van extra dimensies kan er dus voor zorgen
dat het �theidslandschap meer gladgestreken wordt, waardoor het zoekwerk voor het
evolutieproces eenvoudiger wordt. Dit kan leiden tot een kortere rekentijd en/of beter
resultaat.
In de literatuur is al gebruik gemaakt van evolutionaire morfologieën voor robots door
middel van verschillende technieken. Bijna altijd worden genetische algoritmen ge-
bruikt. Meestal wordt dit beperkt tot een aantal parameters van de morfologie, vaak
de sensoropstelling, zowel in simulatie [38] als in realiteit [24]. Echter, in [41] worden
in simulatie ook volledige elektromechanische systemen geëvolueerd. Ook een gecom-
bineerde aanpak van GP en GA werd reeds onderzocht [23, 27]. De sturing werd
ontwikkeld door GP, terwijl de morfologie evolueerde met behulp van GA. Hiervoor
werd gebruik gemaakt van een lijst reële getallen die de bouw (grootte, wielbasis, ...)
van de robot vastleggen. Co-evolutie van sturing en morfologie enkel door GP is nog
maar zelden toegepast. Echter, in [42] werd hiervan, weliswaar in vereenvoudigde vorm,
reeds succesvol gebruik gemaakt.
4.2 Werkwijze
Hoewel het mogelijk is om het ontwerp van volledige robots over te laten aan GP zul-
len we hier de evolutie van de morfologie beperken tot de sensorplaatsingen. Omdat
sensoren de belangrijkste bron van informatie voor de robot zijn is dit een goed ver-
53
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
dedigbare keuze. Dat dit een interessante optie is, werd trouwens al duidelijk bewezen
door het gedrag van de sturing beschreven in Sectie 3.4.4. De robot was in staat om
goed te navigeren in zowel omgevingen waarop getraind werd als in volledig nieuwe
omgevingen. Echter, de robuustheid van de ontwikkelde sturing was beperkt door de
gebrekkige sensorencon�guratie van de robot. Omdat het bereik van de sensoren te
beperkt was, kon een bepaalde muur niet gedetecteerd worden waardoor de robot er
niet in slaagde om tot de uitgang verder te rijden. Beter geplaatste sensoren zouden
dit probleem kunnen oplossen. In plaats van zelf extra sensoren toe te voegen, kunnen
we ook de evolutie laten onderzoeken wat de beste plaatsingen voor de sensoren zijn.
Bovendien is het mogelijk om sensoren relatief goedkoop aan een bestaande robot toe
te voegen. Daar waar een volledige robot bouwen vanaf nul vaak heel duur is, kan deze
relatief eenvoudige aanpassing wel gemakkelijk doorgevoerd worden. Daarom gaan we
in dit hoofdstuk na of het mogelijk is om de plaatsing van de sensoren en de sturing
samen te laten evolueren.
In de meeste experimenten gerelateerd met morfologie van sensoren is het de bedoeling
om automatisch een sensorencon�guratie te evolueren met zo weinig mogelijk sensoren
[4, 38]. Een dergelijke minimale sensorencon�guratie is niet alleen goedkoper, deze laat
meestal ook toe om een eenvoudigere sturing te gebruiken.
Om met GA in simulatie een minimale sensorencon�guratie te evolueren werd in [38]
een aangepaste �theidsfunctie gebruikt. Deze kende een bonus toe per niet gebruikte
sensor voor alle individuen die het doel bereikten. De sensorposities lagen vast, maar
GA bepaalde welke gebruikt werden, de richting en hun bereik. Omdat hier slechts
telkens op één omgeving getraind werd, waren de geëvolueerde robots wel succesvol in
de getrainde omgeving, maar niet in andere omgevingen. De sturing en sensorplaatsing
was dus sterk gespecialiseerd voor één bepaalde omgeving. Er werd gebruik gemaakt
van verschillende types sensoren (UV-, IR-, en tastsensoren). Uit de evolutie bleek dat
IR-sensoren niet nodig waren, wat bij het bouwen van de robot dus een besparing kan
opleveren.
In [42] werden met behulp van GP succesvol de sturing en de morfologie van een ro-
bot in een vereenvoudigde simulatie geëvolueerd. Hier werd geen gebruik gemaakt van
een aangepaste �theidsfunctie. Om het aantal sensoren te beperken werd de grootte
van de geëvolueerde programma's gelimiteerd. Het evolutieproces had de keuze uit 360
sensoren; één voor iedere mogelijke hoek ten opzichte van het middelpunt van de cir-
kelvormige robot.
Om met behulp van GP tot een opstelling te komen die in staat is om de sturing van
de robot gelijktijdig met de morfologie van de sensoren te evolueren zijn er een aantal
mogelijkheden. We vatten ze hier kort samen.
54
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
4.2.1 Onveranderde en aangepaste �theidsfuncties
Meestal zal gebruik gemaakt worden van aangepaste �theidsfuncties om de co-evolutie
te sturen. Zo zal men om een minimale sensorencon�guratie te evolueren doorgaans
een bonus toekennen die evenredig is met het aantal niet gebruikte sensoren. Hierbij
kan een onderscheid gemaakt worden om deze bonus enkel toe te kennen bij succesvolle
sturingen (bijvoorbeeld bij het bereiken van de uitgang) of voor alle sturingen.
Wanneer gebruik gemaakt wordt van een niet-gewijzigde �theidsfunctie, dus zonder
bonus voor minder sensoren, wordt doorgaans geen minimale sensorencon�guratie na-
gestreefd. De robot kan dan vrij gebruik maken van alle sensoren. Dit zal mogelijks
leiden tot complexere sturingen. Om met deze aanpak het aantal sensoren te beperken
kan bijvoorbeeld wel de grootte van het programma beperkt worden.
4.2.2 Sensoren als terminalen of als functie
Bij co-evolutie van morfologie en sturing door GP kunnen we de sensoren op twee
manieren ter beschikking stellen. Een eerste bestaat eenvoudigweg uit het toevoegen
van een unieke terminaal per sensor. Iedere sensor op de robot zal dus door exact één
instructie uit het programma aangesproken worden. Dit is een eenvoudige oplossing,
maar zal al snel leiden tot een groot aantal terminalen. Dit kan voor het evolutieproces
leiden tot een (te) moeilijk probleem.
De tweede mogelijkheid maakt gebruik van één functie met een aantal parameters. Deze
argumenten speci�ëren dan de exacte plaatsing van de sensoren op de robot. In dit geval
moeten wel voldoende constantes en/of wiskundige operatoren, als parameters voor de
functie, toegevoegd worden. Opnieuw zijn dus een aantal extra terminalen nodig. Bij
deze methode is het echter mogelijk om met een relatief beperkt aantal constantes toch
een groot aantal mogelijke sensorencon�guraties voor te stellen.
In plaats van constantes toe te voegen is het ook mogelijk om voor ieder programma
initieel willekeurige waarden te genereren als invoer voor de sensorfunctie, zoals het
geval was in [42]. We merken op dat, in beide gevallen, de functie wel voldoende
robuust moet zijn. Zo is het mogelijk dat argumenten geschikt voor het bepalen van de
horizontale plaatsing van de sensor ten opzichte van de robot niet geschikt zijn voor het
aangeven van de hoek waarmee de sensor geplaatst wordt. Een standaardkeuze voor
dergelijke mogelijkheden dringt zich op.
55
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
4.3 Experimenten
In dit onderdeel geven we een overzicht van onze experimenten voor de gelijktijdige
evolutie van sturing en morfologie van de sensoren. We beginnen met een eerder naïef
experiment om aan te geven wat de mogelijkheden en beperkingen van deze techniek
zijn. Daarna komen nog twee andere opstellingen aan bod.
Als basisopstelling gaan we verder met deze uit experiment 13 uit het vorige hoofdstuk.
We maken enkel gebruik van hoeken van 90◦, er wordt ruis toegevoegd op de gemeten
sensorwaarden en we maken gebruik van de graduele aanpak. Onafhankelijk van de
sensorencon�guratie die ontwikkeld wordt zullen we voor het bestra�en van botsingen
opnieuw gebruik maken van dezelfde vier standaardsensoren zoals vroeger.
Uit de vorige experimenten bleek dat met goed gekozen instellingen de resultaten over de
drie uitvoeringen een heel hoog gemiddelde en uiterst lage standaardafwijking hebben.
Dit was zonder meer het geval in experiment 13 met de graduele aanpak. Omdat
de resultaten van de verschillende uitvoeringen voor deze instellingen heel gelijkaardig
zijn, zullen we in dit hoofdstuk telkens slechts één uitvoering beschouwen. Zo kan de
rekentijd, met slechts een heel beperkt resultaatsverlies, heel sterk ingekort worden.
De simulatieomgeving van de EyeBot laat niet toe om gebruik te maken van meer dan
10 sensoren. Daarom ontwikkelden we een uitbreiding die geen limiet kent voor het
beschikbare aantal sensoren. Net zoals in de originele implementatie kunnen sensoren
overal op de robot geplaatst worden in om het even welke hoek en is het bereik beperkt
tot één meter.
4.3.1 Experiment met 35 sensoren
In deze eerste twee experimenten plaatsen we 35 sensoren verspreid over de volledige
robot. Dit wordt schematisch voorgesteld in Figuur 4.1a. Er worden negen sensoren
centraal vooraan geplaatst, vijf op iedere hoek en drie op de twee �anken. Voor het
volgen van gangen zou dit aantal zeker moeten volstaan.
Om de evolutie aan te sporen een goede sturing te ontwikkelen met zo weinig mogelijk
sensoren zullen we aan de �theidsfunctie een extra component toevoegen. De �theid
wordt, enkel wanneer de robot succesvol is, verhoogd met tweemaal de fractie van het
aantal sensoren dat niet gebruikt wordt. Een blind rijdende robot zal dus de maximale
bonus van twee krijgen wanneer deze succesvol het einde bereikt.
Het evolutieproces krijgt de 35 sensoren aangeboden als afzonderlijke terminalen, waar-
bij we de terminalen van de sensoren uit de vorige experimenten weglaten. Dat deze
aanpak redelijk naïef is, wordt duidelijk wanneer we het resulterende aantal basisblok-
ken beschouwen. Waar in de vorige experimenten maximaal 12 basisblokken gebruikt
56
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
(a) De plaatsing van alle 35 sensoren.
3
21
27
26
15
(b) Resultaat van experiment 18.
Figuur 4.1: (a) Schematische voorstelling van alle 35 sensoren waaruit het evolutieproces de
beste kan selecteren. (b) De sensoren die gebruikt worden door de sturing ontwikkeld in
experiment 18. De nummering komt overeen met deze in Figuren 4.3 en 4.2.
werden is dit nu 44. Dit betekent een enorme uitbreiding van de zoekruimte voor het
evolutieproces. Meestal wordt in GP gebruik gemaakt van zo weinig mogelijk basisblok-
ken die toch zo expressief mogelijk zijn. In dit experiment is dit zeker niet het geval.
Zo kunnen we nagaan wat de beperkingen zijn van een groot aantal basisblokken.
Tabel 4.1 toont de belangrijkste parameters voor ieder experiment, de resultaten tijdens
de evolutie en de veri�catiegegevens achteraf. De kolommen P en G bevatten de popu-
latiegrootte respectievelijk het aantal generaties. De inhoud van de overige kolommen
is reeds gekend.
De uitvoeringstijden van de experimenten zijn respectievelijk iets meer dan twee en een
halve dag en iets meer dan vijf dagen. Uiteraard speelt de grootte van de populatie
hierin de belangrijkste rol. Echter, ook de tijd voor het verzamelen van de verschillen-
de statistieken en gedetailleerde informatie over het sensorgebruik van ieder individu
draagt bij tot de rekentijd.
In Figuur 4.1b zijn de sensoren te zien die door de evolutie in experiment 18 werden ge-
kozen. Deze zijn inderdaad zeer geschikt voor het volgen van de linkermuur, en maken
het mogelijk om ook objecten frontaal voor de robot in alle omstandigheden te detecte-
ren. Fouten zoals reeds aangehaald in experimenten 13 en 14 zijn met deze con�guratie
niet langer mogelijk. Bovendien is de robot ook steeds in staat om botsingen tegen de
rechtermuur te vermijden. Het bijkomend nut van de diagonale sensor rechtsonder op
de robot is niet duidelijk. Mogelijks is deze voordelig in de bochten omdat dan langer
57
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
Opstelling Evolutie Veri�catie
Nr P G Penalty Beste E /15 Botsingen Bewegingen /5 Score
17 500 100 3 0,86649 1,71 2 102 2661 0 0,79084
18 1000 100 3 0,86317 1,47 4 50 2361 0 0,78805
Tabel 4.1: Resultaten van de eerste reeks experimenten voor gelijktijdige evolutie van sturing
en morfologie. Iedere robot kreeg de keuze uit 35 vooraf vastgelegde sensoren.
feedback is over de positie van de robot ten opzichte van de rechtermuur. Echter, even
waarschijnlijk is dit een sensor die in verdere generaties niet langer zal gebruikt worden.
In Figuur 4.2 wordt de evolutie van het sensorgebruik van het beste individu doorheen
de generaties voorgesteld. Daarvoor werden de exacte aantallen verzameld van het
totale sensorgebruik bij navigatie door de drie omgevingen uit de laatste categorie leer-
voorbeelden. We merken op dat de sensorencon�guratie reeds rond generatie 60 vastligt,
vanaf dan wordt vooral aan de sturing gewijzigd. Dit is niet te vroeg, in generatie 60
zijn immers alle types bochten al ingevoerd, dus kan de sensorencon�guratie inderdaad
reeds grotendeels vastliggen. Verder blijkt ook dat het aantal gebruikte sensoren reeds
vroeg in het evolutieproces afgebouwd wordt. Tenslotte levert de �guur ondersteuning
voor de hierboven gestelde hypothese dat sensor 27 in verdere generaties mogelijks niet
langer zal gebruikt worden. Het gebruik van de betre�ende sensor neemt immers sterk
af, en is in generatie 60 reeds zeer beperkt.
In Figuur 4.3 wordt eveneens de evolutie van het sensorgebruik voorgesteld. Dit keer
wordt aangegeven hoeveel van de 50 beste individuen per generatie gebruik maken van
een bepaalde sensor. Initieel is het sensorgebruik bijna uniform verdeeld, later treedt
duidelijk convergentie op, die rond generatie 80 zijn de�nitieve vorm aanneemt. Alle
50 beste individuen maken dan gebruik van dezelfde 5 geselecteerde sensoren.
De door de evolutie gekozen sensoren zijn inderdaad goed geschikt voor de navigatie in
gangenstelsels. De resultaten van de geëvolueerde sturing zijn echter minder bruikbaar.
Zowel in omgevingen waarop getraind werd als in compleet nieuwe omgevingen haalt de
robot geen aanvaardbaar niveau. We stellen wel een hoge entropie op het einde van de
evolutie vast. Waarschijnlijk is het dus met meer generaties, en eventueel een grotere
populatie, wel mogelijk om het resultaat te verbeteren. Om de rekentijd te beperken
is dit hier helaas niet mogelijk. Dit mag duidelijk gezien worden als een illustratie van
de risico's bij het gebruik van te veel basisblokken. Het mogelijke aantal programma's
is in deze opstelling enorm. De zoekruimte voor het evolutieproces explodeert als het
ware, wat een te hoge rekentijd vereist om te resulteren in een succesvol programma.
58
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
Figuur 4.2: Een overzicht van de evolutie van het sensorgebruik van het beste individu. Hori-
zontaal worden alle 35 sensoren aangeduid, verticaal wordt aangegeven hoeveel keer het beste
individu van een bepaalde generatie een bepaalde sensor gebruikt, gesommeerd over de drie
omgevingen in de laatste categorie. In de diepte wordt de evolutie van het sensorgebruik over
de generaties heen voorgesteld. Vanaf generatie 60 zijn de wijzigingen heel beperkt.
Figuur 4.3: Een overzicht van de evolutie van het sensorgebruik van de 50 beste individuen.
Horizontaal worden alle 35 sensoren aangeduid, verticaal wordt aangegeven hoeveel van de 50
beste individuen gebruik maken van de betre�ende sensor. In de diepte wordt de evolutie van
het sensorgebruik over de generaties heen voorgesteld. Vanaf generatie 80 zijn de wijzigingen
heel beperkt.
59
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
(a) De plaatsing van
alle 8 sensoren.
(b) Het resultaat van
experiment 21.
Figuur 4.4: (a) Voorstelling van alle 8 sensoren waaruit het evolutieproces vrij kan selecteren.
We onderscheiden de sensoren Vooraan, Achteraan, Links, Rechts, Vooraan Links, Vooraan
Rechts, Links Diagonaal en Rechts Diagonaal. De hoofdletters zullen verder gebruikt wor-
den ter identi�catie van de sensoren. (b) De sensoren die gebruikt worden door de sturing
ontwikkeld in experiment 21.
4.3.2 Experiment met 8 sensoren
In deze sectie gebruiken we dezelfde opstelling als bij de vorige twee experimenten. Ech-
ter, nu met keuze uit slechts acht sensoren in plaats van 35. Deze worden voorgesteld
in Figuur 4.4a. Door zelf een beperkt aantal verschillende types sensoren te de�niëren
kunnen we het evolutieproces versnellen en in een kortere tijd tot een beter resultaat
komen. Zo is de zoekruimte voor het evolutieproces veel beperkter: 17 ten opzichte van
44 basisblokken. In deze opstelling is de uitbreiding van de zoekruimte ten opzichte van
deze in de experimenten uit het vorige hoofdstuk veel beperkter. We verwachten dan
ook dat het evolutieproces binnen een beperkte tijd tot goede resultaten kan leiden.
Vandaar ook de beperktere populatiegrootte en het kleinere aantal generaties.
Alle gegevens voor deze experimenten worden samengevat in Tabel 4.2. Het verschil
tussen experiment 19 en 20 is dat ze gebruik maken van een andere �theidsfunctie. In
experimenten 19 en 21 wordt namelijk een extra bonus toegevoegd aan de �theid wan-
neer de robot het doel bereikt. Deze is gelijk aan de fractie van het aantal niet gebruikte
sensoren. Op deze manier moet de evolutie op zoek naar een minimale sensorencon-
�guratie. In experiment 20 daarentegen wordt geen bonus toegekend bij gebruik van
minder sensoren. We willen nagaan of de evolutie in dat geval zelf het aantal sensoren
reduceert om te komen tot een goede oplossing. Verder merken we op dat experimen-
60
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
Opstelling Evolutie Veri�catie
Nr P G Penalty Beste E /15 Botsingen Bewegingen /5 Score
19 500 43 3 0,86830 1,07 10 45 2376 0 0,72844
20 500 43 3 0,91544 1,05 12 23 1551 3 0,89121
21 500 50 5 0,90886 1,78 15 7 1684 4 0,90545
Tabel 4.2: Resultaten van de tweede reeks experimenten voor gelijktijdige evolutie van sturing
en morfologie. Iedere robot kreeg de keuze uit 8 vooraf vastgelegde sensoren.
ten 19 en 20 na generatie 43 stopgezet werden wegens de sterk gedaalde entropie, en
dus weinig kans op een beter resultaat. Experiment 21 nam iets meer dan één dag in
beslag.
Experiment 19 leidt niet tot goede resultaten op het gebied van sturing. Dit wordt
allicht verklaard doordat alle acht sensoren gebruikt worden. Een e�ciënte sturing
ontwikkelen met behulp van acht sensoren is immers niet zo eenvoudig. Zonder bonus
die minder sensoren stimuleert, is de evolutie niet in staat om zelf het aantal gebruikte
sensoren te verminderen om zo eenvoudigere sturingen te kunnen ontwikkelen, nochtans
zou dit, gezien de andere resultaten, zeker mogelijk moeten zijn.
De resultaten van experimenten 20 en 21 zijn duidelijk beter. Met name experiment
21 levert goede resultaten op. Slechts één van de veri�catieomgevingen wordt niet suc-
cesvol afgewerkt. Er blijkt echter dat de robot net voor het eindpunt zijn totaal aantal
bewegingen heeft opgebruikt. De reden hiervoor ligt bij het soms ine�ciënt gedrag van
de sturing. Er worden vooral enkele overbodige draaibewegingen gemaakt. Gelet op
de nog heel hoge entropie is het echter perfect mogelijk om de sturing nog sterk te
verbeteren. Bovendien werd slechts één dag gerekend aan dit resultaat.
Het beste individu uit experiment 21 maakt gebruik van slechts drie sensoren1. Ze wor-
den voorgesteld in Figuur 4.4b. Net zoals in de vorige reeks experimenten verkiest de
evolutie dus schuin geplaatste sensoren. Deze hebben inderdaad een veel groter bereik
dan loodrecht geplaatste sensoren. Bovendien zal de fout van de niet gedetecteerde
verticale muur met deze con�guratie niet meer kunnen voorkomen. Dit illustreert de
kracht van de evolutie van morfologie. Immers, de standaard robot werd ontwikkeld
met drie loodrechte sensoren en de bijhorende nadelen. Na dit experiment echter, blijkt
duidelijk dat de robuustheid van de robot sterk kan verhoogd worden met diagonaal
geplaatste sensoren. Dit is een interessante overweging bij het ontwerp van de robot.
Figuur 4.5a is een uitstekende illustratie voor de convergentie van de populatie, voorge-
1Het beste individu uit experiment 20 maakt gebruik van vier sensoren, namelijk L, R, VL en VR.
61
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
(a) Evolutie van het sensorgebruik van de 50 beste
individuen.
(b) Evolutie van het sensorgebruik van het beste
individu.
Figuur 4.5: (a) De evolutie van het sensorgebruik voor de 50 beste individuen per generatie.
De �guur geeft aan hoeveel van de 50 beste individuen gebruik maken van een bepaalde
sensor in de loop van de generaties. Rond generatie 30 is de convergentie grotendeels voltooid
en worden door alle 50 beste individuen dezelfde sensoren gebruikt. (b) De evolutie van
het sensorgebruik van de beste robot per generatie. Er wordt aangegeven hoeveel keer een
bepaalde sensor gebruikt wordt bij navigatie in de drie omgevingen uit de laatste categorie
leervoorbeelden.
steld door de 50 beste individuen, naar de uiteindelijke sensorencon�guratie in experi-
ment 21. Heel geleidelijk wordt het gebruikte aantal sensoren verminderd. De sensoren
V, A en R worden relatief vroeg in de evolutie weggelaten; intuïtief zijn deze inderdaad
minder geschikt dan schuin geplaatste sensoren. Omdat het volgen van de linkermuur
belangrijk is, zijn de sensoren gericht op de linkerkant belangrijker dan de andere. Deze
worden dan ook pas later in het evolutieproces geconfronteerd met selectie. In Figuur
4.5b wordt de evolutie van het sensorgebruik van het beste individu uit experiment 21
getoond. Opnieuw worden de totalen gebruikt over de drie omgevingen uit de laatste
categorie leervoorbeelden.
4.3.3 Experiment met 1617 sensoren
In dit experiment maken we gebruik van een �exibelere oplossing. In plaats van een
unieke terminaal voor iedere sensor, voegen we een functie met drie argumenten als ba-
sisblok toe. Twee argumenten geven de horizontale en verticale plaatsing van de sensor
op de robot aan, het derde argument bepaalt de hoek van de sensor ten opzichte van
de robot. Om gebruik te kunnen maken van een groot aantal verschillende sensorplaat-
singen voegen we negen constantes2 toe als terminalen. Omdat de grotere waarden, die
2Dit zijn: 0, 15, 30, 45, 60, 75, 90, 135, 180.
62
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
Opstelling Evolutie Veri�catie
Nr P G Penalty Beste E /15 Botsingen Bewegingen /5 Score
22 1000 100 5 0,88564 2,26 6 24 2448 0 0,79552
Tabel 4.3: Resultaten voor experiment 22 betre�ende de gelijktijdige evolutie van sturing en
morfologie.
interessant zijn voor het de�niëren van de hoek, niet geschikt zijn als argument voor
de verticale of horizontale plaatsing, zullen we voorzorgen moeten nemen. Hetzelfde
geldt voor argumenten, zoals moveforward, die -1 teruggeven. Om aan de sluitingsei-
genschap te voldoen worden de argumenten van de sensorfunctie gecontroleerd. Indien
deze buiten het zinvol bereik vallen, wordt een standaard waarde3 voor het betre�ende
argument toegekend. Bijkomend wordt gebruik gemaakt van een extra functie (NEG)
die het teken van het enige argument wijzigt. Zo wordt het aantal beschikbare sensor-
plaatsingen nog sterk verhoogd.
Samengevat beschikken we nu over 77 mogelijke plaatsingen op de robot, elk met nog
21 verschillende hoeken. Dit resulteert in totaal in 1617 mogelijke sensoren. Toch heb-
ben we hiervoor slechts twee functies en negen terminalen toegevoegd. We gebruiken
in dit experiment dus slechts 20 basisblokken (de drie oorspronkelijke PSD-terminalen
werden weggelaten) in plaats van 44. Toch beschikken we over een grotere �exibiliteit
en meer mogelijkheden dan in de vorige experimenten.
Het evolutieproces kan vrij kiezen hoeveel sensoren gebruikt worden. De �theidsfunctie
wordt dus niet uitgebreid met een bonus voor minder sensoren. Verder wordt ook een
penalty van vijf toegekend voor botsingen. We beschouwen een populatie van 1000 in-
dividuen gedurende 100 generaties. Dit experiment vereiste een rekentijd van ongeveer
vijf dagen.
De resultaten worden voorgesteld in Tabel 4.3. Algemeen is het resultaat net iets beter
dan het experiment met 35 sensoren. De sturing is niet algemeen bruikbaar, slechts in
sommige omgevingen bereikt de robot de uitgang. Verder is deze niet e�ciënt, er wordt
veel overbodig (ook ter plaatse) gedraaid. Soms wordt zelfs kort achteruit gereden, ge-
faciliteerd doordat zowel voor- als achteraan sensoren opgesteld zijn. Dit resulteert
echter niet in de meest eenvoudige sturing.
Het resulterende programma is, met meer dan 800 knopen, het grootste van alle expe-
rimenten tot nu toe. Er is in de loop der generaties inderdaad een duidelijke codegroei.
Dit wordt het best geïllustreerd door het sensorgebruik. Zo wordt voor de argumenten
3Overeenkomstig met het argument voor de sensor vooraan, zoals standaard op de robot.
63
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
Figuur 4.6: Het navigatiegedrag van de sturing uit experiment 22 in omgeving 12, één van de
zes omgevingen die wel succesvol voltooid kunnen worden.
van de sensorfunctie vaak gebruik gemaakt van het resultaat van andere sensormetin-
gen. In plaats van de 1617 mogelijke sensorplaatsingen die we voorzien hadden, werden
dus veel meer con�guraties beschouwd. De zoekruimte wordt dus nog veel groter. Noch-
tans is het voor deze taak niet opportuun om het verschil tussen een sensor in een hoek
van 60◦ of 62◦ te onderzoeken.
Het resulterende programma gebruikt niet minder dan 155 unieke sensoren, opnieuw ge-
meten bij navigatie in de laatste 3 leervoorbeelden. Echter, de meeste daarvan worden
slechts één keer gebruikt. Dit zijn meestal intronen die wel uitgevoerd worden, maar
weinig of geen functionele waarde bezitten. Zo worden 112 sensoren slechts één keer en
135 sensoren maximaal vijf keer gebruikt. Een groot aantal daarvan werden dynamisch
gede�nieerd aan de hand van andere sensorwaarden. Slechts 7 sensoren, verspreid over
de robot, worden minstens 30 keer gebruikt, deze zorgen wel voor een functionele meer-
waarde. Opnieuw stellen we vast dat vooraan op de robot enkel diagonaal geplaatste
sensoren gebruikt worden. Links en rechts op de robot staan daarentegen wel loodrecht
gerichte sensoren.
Een belangrijke conclusie is dat de verhoogde �exibiliteit kan leiden tot betere resul-
taten. Het resultaat is immers iets beter dan dat uit het experiment met 35 vaste
sensoren. Hoewel de zoekruimte in experiment 22 veel groter is, werd met dezelfde
rekentijd dus toch een beter resultaat behaald. De reden hiervoor is niet onmiddellijk
duidelijk. Hoogstwaarschijnlijk is dit niet dankzij een e�ciëntere sensorencon�guratie.
Mogelijks kon het evolutieproces wegens de grotere vrijheid wel op een e�ciëntere ma-
nier het �theidslandschap verkennen; de reeds vermelde extradimensional bypass. Meer
onderzoek is echter nodig om het verschil tussen enerzijds meer �exibiliteit met minder
64
HOOFDSTUK 4. EVOLUTIE VAN ROBOTMORFOLOGIE
basisblokken en anderzijds een groter aantal sterk afgelijnde basisblokken beter in te
kunnen schatten.
Tenslotte merken we op dat het evolutieproces nog niet convergeerde. De entropie zakt
tijdens het volledige evolutieproces slechts een heel beperkt aantal keer onder de twee.
In de laatste generatie is dit met 2,26 nog steeds heel hoog. Om werkelijk te convergeren
zou echter nog veel bijkomende rekentijd nodig zijn. De zoekruimte is in deze opstelling
voor één enkele standaard PC te groot om op een beperkte tijd onderzocht te worden.
65
Hoofdstuk 5
Besluit
Hieronder geven we een overzicht van de belangrijkste resultaten en conclusies van
dit werk. We onderscheiden de resultaten in simulatie, in realiteit, en co-evolutie van
sturing en morfologie.
5.1 In simulatie
Ten eerste hebben we aangetoond dat het mogelijk is om met behulp van GP een stu-
ring voor autonome mobiele robots te ontwikkelen die in staat is om in gangenstelsels
waarin getraind werd, succesvol naar de uitgang te navigeren. Hiervoor werd, in te-
genstelling tot veel andere opstellingen in de literatuur, geen gebruik gemaakt van een
sterk vereenvoudigde simulatieomgeving. We voerden de experimenten uit in de simu-
latieomgeving van het realistische robotplatform van de EyeBot.
Bovendien was het evolutieproces in staat om een sturing te ontwikkelen die ook suc-
cesvol navigeert in omgevingen waarin tijdens de evolutie niet getraind werd. Het was
dus mogelijk om een algemene sturing te ontwikkelen.
Om dit te realiseren bleken een aantal technieken zeer geschikt. Vooreerst maakten
we gebruik van meerdere leervoorbeelden omdat anders enkel de omgeving wordt ge-
memoriseerd, zonder een algemene strategie te ontwikkelen. Bovendien werken deze
gecombineerd in een variant op de gelaagd leren aanpak waarbij eerst de basisgedra-
gingen aangeleerd worden en de moeilijkere gedragingen pas daarna aan bod komen.
Concreet maakten we gebruik van vijf categorieën met omgevingen die stelselmatig
moeilijker worden, maar met voldoende diversiteit binnen iedere categorie. Zo werd
in iedere categorie met drie leervoorbeelden telkens één omgeving toegevoegd die dui-
delijk moeilijker of gemakkelijker was dan de andere. Deze diversiteit bleek van heel
groot belang, want een aanpak met allemaal gelijkaardige omgevingen gaf niet het ge-
wenste resultaat. Ook een experiment waarbij we alle omgevingen in iedere generatie
66
HOOFDSTUK 5. BESLUIT
gebruikten, zonder afwisselende categorieën, leverde, zelfs met veel meer rekentijd, geen
aanvaardbaar resultaat op.
Om te bepalen in welk tempo en op welke manier de categorieën best afgewisseld wor-
den, testten we een aantal strategieën. De graduele methode, waarbij iedere moeilijkere
categorie telkens iets meer generaties de tijd krijgt, leverde in een omgeving met ruis
veruit de beste resultaten op. Bovendien levert deze methode, zelfs met veel minder
rekentijd, betere resultaten dan gelijkaardige technieken waarbij de categorieën wel uit
allemaal voorbeelden van dezelfde moeilijkheidsgraad bestaan.
Het toevoegen van ruis aan de sensoren bleek in deze omstandigheden, zoals reeds op-
gemerkt in de literatuur, inderdaad heel positief. De oplossing die ontwikkeld werd met
ruis was duidelijk robuuster dan deze zonder.
Tenslotte stelden we vast dat, in alle succesvolle oplossingen, dezelfde strategie aan de
basis lag. Het evolutieproces ontdekte namelijk dat door het volgen van de linkermuur
geen problemen zoals het rijden in de verkeerde richting konden optreden. Dit is een
mooie illustratie van de kracht van het evolutieproces om te komen tot eenvoudige maar
zeer robuuste oplossingen.
5.2 Van simulatie naar realiteit
Het uiteindelijke doel van de evolutie is uiteraard om de sturing te kunnen gebrui-
ken op een echte robot. In simulatie maakten we daarom gebruik van kleine bochten
die gemakkelijk kunnen bijgestuurd worden, wat in realistische omgevingen wegens de
tractieverschillen tussen verschillende ondergronden altijd nodig is. Bovendien werd
ruis toegevoegd op zowel sensoren als actuatoren. Dit geheel leidt tot een signi�cante
opschaling van het probleem. Toch kon dit succesvol aangepakt worden met dezelfde
technieken, mits iets meer rekentijd. Een overblijvend probleem is dat de optimale po-
pulatiegrootte niet a priori kan bepaald worden, zodat meestal een aantal con�guraties
moeten getest worden.
Nadat het volledige evolutieproces in simulatie werd uitgevoerd, waren we in staat om
het gedrag dat geëvolueerd werd over te brengen op de echte robot. Wel stelden we de
gekende reality gap vast, het gedrag in realiteit was iets minder goed dan dat in simula-
tie. Toch was de robot in staat om succesvol te navigeren, werd rechtdoor gereden waar
mogelijk, en werden de bochten e�ciënt aangesneden. Bovendien is het resulterende
programma met slechts 200 knopen eerder kort.
67
HOOFDSTUK 5. BESLUIT
5.3 Co-evolutie van sturing en morfologie
We toonden aan dat het heel belangrijk is om het aantal basisblokken dat gebruikt
wordt beperkt te houden. Anders dreigt de zoekruimte veel te groot te worden, waar-
door het evolutieproces ofwel heel veel rekentijd nodig heeft (meer dan 5 dagen) ofwel
geen aanvaardbare oplossing kan vinden.
Verder bleek duidelijk dat de co-evolutie van sturing en morfologie van sensoren voor-
delig kan zijn. Het evolutieproces was in staat om goed geplaatste sensoren te kiezen
om zo een e�ciënte maar toch eenvoudige sturing te ontwikkelen. Om tot dit resultaat
te komen was het wel nodig om in de �theidsfunctie een extra bonuscomponent in te
bouwen zodat de evolutie er werd toe aangezet om zuinig om te gaan met het aantal
gebruikte sensoren.
Telkens observeerden we een geleidelijke evolutie van het sensorgebruik tijdens het evo-
lutieproces. We stelden vast hoe de evolutie de minst belangrijke sensoren eerst wegliet,
om uiteindelijk enkel de beste over te houden. Bovendien werd duidelijk dat schuin ge-
plaatste sensoren duidelijk de voorkeur verdienen. Deze hebben immers het grootste
bereik. Dit is een ontwerpkeuze die bij het ontwerp van de echte robot over het hoofd
werd gezien, standaard beschikt deze immers enkel over loodrechte sensoren.
Bij gebruik van één functie voor alle sensorfunctionaliteit, in plaats van een unieke ter-
minaal per sensor, zien we verschillende mogelijkheden voor verder onderzoek. Zo zou
de �theidsfunctie nog kunnen ver�jnd worden, of kan het aantal beschikbare sensoren
dynamisch (tijdens de evolutie) gereduceerd worden. Ook �lters om naburige sensoren
samen te voegen zijn een optie. Tenslotte stelden we vast dat meer onderzoek nodig is
om het verschil tussen een beperkt aantal �exibele functies en een groter aantal sterk
afgelijnde basisblokken goed in te kunnen schatten.
68
B¼lage A
Voorbeeldprogramma
Dit is het programma geëvolueerd door GP zoals beschreven in experiment 15.
( IF_LESS high ( IF_LESS ( PROGN2 high psdright )
( IF_LESS ( PROGN2 moveforward low ) ( IF_LESS
( PROGN2 ( PROGN2 high psdright ) ( IF_LESS ( PROGN2 medium high )
( IF_LESS psdleft high ( PROGN2 ( PROGN2 medium high )
( IF_LESS moveforward medium moveforward low ) ) psdleft )
( PROGN2 ( PROGN2 psdright psdfront ) ( PROGN2
( PROGN2 psdright psdfront )
( IF_LESS moveforward medium moveforward low ) ) )
( IF_LESS psdfront psdleft medium psdleft ) ) )
( IF_LESS psdleft high ( IF_LESS ( PROGN2 ( PROGN2
( IF_LESS psdleft high ( IF_LESS ( PROGN2
( PROGN2 psdright psdfront )
( IF_LESS moveforward medium moveforward low ) )
( IF_LESS psdfront psdleft medium psdleft )
( IF_LESS psdfront turnright moveforward psdright )
( IF_LESS psdleft high ( IF_LESS
( IF_LESS psdfront medium turnright low )
( IF_LESS psdfront medium turnright low ) ( PROGN2 medium low )
( PROGN2 ( IF_LESS psdfront medium turnright low )
moveforward ) ) psdleft ) ) psdleft ) psdfront ) psdfront )
( IF_LESS psdfront medium turnright low ) ( PROGN2 medium low )
( IF_LESS psdleft high ( IF_LESS ( IF_LESS psdfront
medium turnright low ) psdfront ( IF_LESS
( PROGN2 psdfront psdleft ) ( PROGN2 moveforward psdfront )
69
B�LAGE A. VOORBEELDPROGRAMMA
( PROGN2 medium high ) ( IF_LESS psdleft high
( IF_LESS ( IF_LESS psdfront medium turnright low )
( IF_LESS psdfront medium turnright low )
( PROGN2 medium low ) ( PROGN2 turnright moveforward ) )
psdleft ) ) ( PROGN2 turnright moveforward ) )
psdleft ) ) psdleft ) medium ( IF_LESS psdleft
medium movebackward turnleft ) )
( IF_LESS psdfront turnright moveforward psdright )
( IF_LESS psdfront psdleft medium psdleft ) ) psdright medium )
( PROGN2 psdright high ) ( IF_LESS psdleft medium
( IF_LESS psdfront turnright moveforward psdright ) turnleft ) )
70
B¼lage B
Simulatiebestanden
B.1 Robi-bestand met instellingen voor de robot
# Robi description file for the EyeBot simulator EyeSim 6.0
# The name of the robi
name S4
# Robot diameter in mm
diameter 186
# Max linear velocity in mm/s
speed 600
# Max rotational velocity in deg/s
turn 300
# The file name of the OpenInventor model used for this robot
model S4.ms3d
# PSD sensor definition (names followed by id in "hdt_sem.h")
# Name, id, relative pos. to robi center(x,y,z), angle in x-y plane
psd PSD_FRONT -200 60 20 30 0
psd PSD_LEFT -205 56 45 30 90
psd PSD_RIGHT -210 56 -45 30 -90
psd PSD_BACK -212 -60 20 30 180
71
B�LAGE B. SIMULATIEBESTANDEN
# Added for experiment with 8 sensors
psd PSD_FRONTLEFT -201 70 48 30 -50
psd PSD_FRONTRIGHT -202 70 -48 30 50
psd PSD_LEFTDIAG -203 -70 48 30 20
psd PSD_RIGHTDIAG -204 -70 -48 30 -20
# Wheel diameter [mm], max. rotational velocity [deg/s],
# encoder ticks/rev., wheel-base distance [mm]
wheel 54 3600 1100 90
# Motors and encoders for low level drive routines
# Diff.-drive: left motor, left encoder, right motor, right encoder
drive DIFFERENTIAL_DRIVE MOTOR_LEFT QUAD_LEFT MOTOR_RIGHT QUAD_RIGHT
72
B�LAGE B. SIMULATIEBESTANDEN
B.2 Trainingsgangenstelsels
_____________
| ___________|o
| | |
| | |
| | |
| | |
| | |
|S|___________|
400
O__________
|_________ |
| | |
| | |
| | |
| | |
| | |
|_________|S|
400
O _________
| | |
| | |
| |_________|
|_________ |
| | |
| | |
|_________|S|
400
___________
|_____ |
| _ | |
| | | |_____|
| | |_______|o
| | |
| | |
|S|_________|
400
________O
| | |
| ___| |
| | _ _|
| | | |
|___| | |
| ___| |
|S|_______|
400
_____________
| | _______|o
| _| | |
| | _|_______|
| | | _____ |
| |___| | |
| | |
|___________|S|
400
73
B�LAGE B. SIMULATIEBESTANDEN
O____________
|___ | |
| | |___ |
| |___ |___|
| |___ |
| | |
| | |
|___________|S|
400
___________
| _________|o
|_______ | |
| | | |
|_______| | |
| _______| |
| | |
|S|_________|
400
___________ O
|___ |___| |
| | | ___|
| | | | | |
| | | | | |
| | |___| | |
| |_______|___|
|S|___________|
400
_____________
| ____________|o
| | _________|
| | | _____ |
| |_| | | |
|_____| | |
| | |
|___________|S|
400
_____________
| ___________|o
| | ___ |
| |_| | |
|_____| |_ |
|_____|_ | |
|_______| | |
|S________|___|
400
_____________
| ____________|o
|________ | |
| _______| |
| |___________|
|___________ |
| ___________|
|S|___________|
400
74
B�LAGE B. SIMULATIEBESTANDEN
_____________
| ____________|o
|________ | |
| _____| |
| |_________|
|___________ |
| ___________|
|S|___________|
400
_____________
| | _____|o
| | |___ |
| ___|___ | |
|_| ___ | | |
| _| | | | |
| | |___| |
|S|__________ |
400
_______________
| | | ______|o
| | | |___ | |
| | |_______| | |
| | | | ____|_|
| | | | |______ |
| | | |_________|
|S|___|_________|
400
75
B�LAGE B. SIMULATIEBESTANDEN
B.3 Veri�catiegangenstelsels
___________________________________
| _ _______________________________|o
|_ |___ |
| | | | |
| |___| |_______________________ |
| |_______________________ | |
|_____________________________| | |
|S______________________________|___|
400
_______________
| | _________|o
| | |_______ |
| |_______ | |
|________ | _|_|
| |_____| | |
| | | _____| |
|S|___|_________|
400
_____________
| ____________|o
|____ | |
| ___|_______|
| |_______| |
|___________| |
|_____| ______|
|S______|_____|
400
___________ _______
| |_|_|_|___| _____|o
|_|_|_|_|___|___ | |
| _ |_|___|___| | |
| |_|_ |___| ____|_|
| |_|_|_ |_|_____ |
| |_|_|_|___ |___| |
|S|_|_|_|___|_______|
400
_______________
|_______ | |o
| ___ | | |
|_ __ | |_ ___| |
|_| _|_ | ___|
| _| | | | |
| | |___| |
|S|_____________|
400
76
Bibliogra�e
[1] J.C. Bongard and C. Paul. Making Evolution an O�er it can't Refuse: Morphology
and the Extradimensional Bypass. Lecture Notes in Computer Science, pages 401�
412, 2001.
[2] T. Bräunl. Embedded Robotics: Mobile Robot Design and Applications With Em-
bedded Systems. Springer-Verlag, 2nd edition edition, 2006.
[3] G. Buason, N. Bergfeldt, and T. Ziemke. Brains, bodies, and beyond: Compe-
titive co-evolution of robot controllers, morphologies and environments. Genetic
Programming and Evolvable Machines, 6(1):25�51, 2005.
[4] M.D. Bugajska and A.C. Schultz. Co-evolution of form and function in the design
of autonomous agents: Micro air vehicle project. In GECCO-2000 Workshop on
Evolution of Sensors in Nature, Hardware and Simulation, pages 240�244. Cam-
bridge, Mass: MIT Press, 2000.
[5] J.A. Bullinaria. From biological models to the evolution of robot control systems.
Philosophical Transactions of the Royal Society A: Mathematical, Physical and
Engineering Sciences, 361(1811):2145�2164, 2003.
[6] J.A. Bullinaria and X. Li. An introduction to computational intelligence techniques
for robot control. Industrial Robot: An International Journal, 34(4):295�302, 2007.
[7] C. Darwin. On the Origin of Species by Means of Natural Selection, or the Pre-
servation of Favoured Races in the Struggle for Life. John Murray, London, UK,
1859.
[8] J.F. Dupuis and M. Parizeau. Evolving a Vision-Based Line-Following Robot Con-
troller. In Proceedings of the The 3rd Canadian Conference on Computer and Robot
Vision, page 75. IEEE Computer Society Washington, DC, USA, 2006.
77
BIBLIOGRAFIE
[9] D. Floreano and J. Urzelai. Evolutionary On-Line Self-Organization of Autono-
mous Robots. In Proceedings of the 5th International Conference on Arti�cial Life
and Robotics, pages 431�443, 2000.
[10] D. Floreano and J. Urzelai. Evolutionary Robots: The Next Generation. In The
7th International Symposium on Evolutionary Robotics (ER2000): From Intelligent
Robots to Arti�cial Life, pages 231�266, 2000.
[11] C. Gathercole, P. Ross, and S. Bridge. Small populations over many generations
can beat large populations over few generations in genetic programming. In JR
Koza (eds.). The Second Genetic Programming Conference, pages 111�118. Morgan
Kaufmann, 1997.
[12] T. Goosen, R. Brule, J.H. Janssen, and WFG Haselager. Interleaving Simulated
and Physical Environments Improves Evolution of Robot Control Structures. In
M.M. Dastani and E. de Jong, editors, BNAIC 2007: Proceedings of the 19th
Belgium-Netherlands Arti�cial Intelligence Conference, November 5-6, Utrecht, the
Netherlands, BNAIC 19, pages 135�142. Utrecht University, 2007.
[13] S. Gustafson and W. Hsu. Genetic programming for strategy learning in soccer
playing agents: A kdd-based architecture. In Graduate Student Workshop of the
Genetic and Evolutionary Computation Conference, Las Vegas, USA, pages 277�
280, 2000.
[14] S.M. Gustafson and W.H. Hsu. Layered Learning in Genetic Programming for a
Cooperative Robot Soccer Problem. Lecture Notes in Computer Science, 2038:291�
301, 2001.
[15] N. Jakobi, P. Husbands, and I. Harvey. Noise and the reality gap: The use of
simulation in evolutionary robotics. Lecture Notes in Computer Science, 929:704�
720, 1995.
[16] A. Koestler and T. Bräunl. Mobile Robot Simulation with Realistic Error Models.
In International Conference on Autonomous Robots and Agents, ICARA, pages
46�51, 2004.
[17] J.R. Koza. Genetically breeding populations of computer programs to solve pro-
blems in arti�cial intelligence. In Tools for Arti�cial Intelligence, Proceedings of
the 2nd International IEEE Conference on, pages 819�827, 1990.
[18] J.R. Koza. Evolution and co-evolution of computer programs to control
independently-acting agents. In From Animals to Animats. Proceedings of the
78
BIBLIOGRAFIE
First International Conference on Simulation of Adaptive Behavior. MIT Press,
Cambridge, MA, pages 366�375, 1991.
[19] J.R. Koza. Genetic Programming: On the programming of computers by Means of
natural selection. MIT Press, Cambridge, Massachusetts, 1992.
[20] J.R. Koza. Genetic Programming II: Automatic discovery of reusable programs.
MIT Press, Cambridge, Massachusetts, 1994.
[21] J.R. Koza, M.A. Keane, and M.J. Streeter. What's AI done for me lately? Genetic
programming's human-competitive results. Intelligent Systems, IEEE, 18(3):25�
31, 2003.
[22] C. Lazarus and H. Hu. Using Genetic Programming to Evolve Robot Behaviours.
In Proceedings of the 3rd British Conference on Autonomous Mobile Robotics &
Autonomous Systems, 2001.
[23] W.P. Lee. Evolving Autonomous Robot: From Controller to Morphology. IEICE
Transactions on Information and Systems, 83(2):200�210, 2000.
[24] L. Lichtensteiger and P. Eggenberger. Evolving the morphology of a compound
eye on a robot. In Advanced Mobile Robots, Third European Workshop on, pages
127�134, 1999.
[25] S. Luke. When short runs beat long runs. In Proceedings of the Genetic and
Evolutionary Computation Conference, pages 74�80. Morgan Kaufmann, 2001.
[26] S. Luke et al. Genetic programming produced competitive soccer softbot teams
for robocup97. Genetic Programming, pages 214�222, 1998.
[27] H.H. Lund, J. Hallam, and W.P. Lee. Evolving robot morphology. In IEEE
International Conference on Evolutionary Computation, pages 197�202, 1997.
[28] H.H. Lund and O. Miglino. From simulated to real robots. In Evolutionary Com-
putation, Proceedings of IEEE International Conference on, pages 362�365, 1996.
[29] H.H. Lund, O. Miglino, L. Pagliarini, A. Billard, and A. Ijspeert. Evolutionary
robotics-a children's game. In Evolutionary Computation Proceedings, IEEE World
Congress on Computational Intelligence, pages 154�158, 1998.
[30] O. Miglino, H.H. Lund, and S. Nol�. Evolving mobile robots in simulated and real
environments. Arti�cial Life, 2(4):417�434, 1995.
79
BIBLIOGRAFIE
[31] J. Miller and P. Thomson. Cartesian genetic programming. In Proceedings of the
Third European Conference on Genetic Programming (EuroGP2000), volume 1802,
pages 121�132. Springer-Verlag, 2000.
[32] A.L. Nelson, E. Grant, J.M. Galeotti, and S. Rhody. Maze exploration behaviors
using an integrated evolutionary robotics environment. Robotics and Autonomous
Systems, 46(3):159�173, 2004.
[33] S. Nol� and D. Floreano. Evolutionary Robotics: The Biology, Intelligence, and
Technology of Self-Organizing Machines. MIT Press Cambridge, 2000.
[34] P. Nordin and W. Banzhaf. Complexity compression and evolution. In L.J. Es-
helman, editor, Proceedings of the Sixth International Conference on Genetic Al-
gorithms, pages 240�245. Morgan Kau�man, 1995.
[35] P. Nordin and W. Banzhaf. Genetic programming controlling a miniature robot. In
Working Notes for the AAAI Symposium on Genetic Programming, pages 61�67,
1995.
[36] P. Nordin and W. Banzhaf. Real time control of a Khepera robot using genetic
programming. Control and cybernetics, 26:533�562, 1997.
[37] E.H. Ostergaard and H.H. Lund. Co-evolving complex robot behavior. In In
Proceedings of ICES2003, 2003.
[38] G.B. Parker, P.J. Nathan, C. Coll, and N. London. Co-Evolution of Sensor Morp-
hology and Control on a Simulated Legged Robot. In Computational Intelligence in
Robotics and Automation, 2007. CIRA 2007. International Symposium on, pages
516�521, 2007.
[39] A.L.F. Perez, G. Bittencourt, and M. Roisenberg. Embodied Evolution with a
New Genetic Programming Variation Algorithm. In Autonomic and Autonomous
Systems, ICAS 2008, pages 118�123, 2008.
[40] A.L.F. Perez, G. Bittencourt, and M. Roisenberg. A new approach to control a
population of mobile robots using genetic programming. In SAC '08: Proceedings
of the 2008 ACM symposium on Applied computing, pages 1602�1606, New York,
NY, USA, 2008. ACM.
[41] J. Pollack, H. Lipson, S. Ficici, P. Funes, G. Hornby, and R. Watson. Evolutionary
techniques in physical robotics. In Evolvable Systems: From Biology to Hardware:
Third International Conference, ICES 2000, Edinburgh, Scotland, UK, April 17-
19, 2000: Proceedings. Springer, 2000.
80
BIBLIOGRAFIE
[42] C.W. Reynolds. Evolution of corridor following behavior in a noisy world. In
D. Cli�, P. Husbands, J.-A. Meyer, and S. Wilson, editors, From Animals to
Animats 3: Proceedings of the third International Conference on Simulation of
Adaptive Behavior, pages 402�410. MIT Press, 1994.
[43] J.P. Rosca. Entropy-driven adaptive representation. In J.P. Rosca, editor, Pro-
ceedings of the Workshop on Genetic Programming: From Theory to Real-World
Applications, pages 23�32, 1995.
[44] S. Sette and L. Boullart. Genetic programming: Principles and applications. En-
gineering Applications of Arti�cial Intelligence, 14:727�736, 2001.
[45] J. Urzelai and D. Floreano. Evolutionary Robotics: Coping with Environmental
Change. In Proceedings of the Genetic and Evolutionary Computation Conference,
2000.
[46] J. Walker, S. Garrett, and M. Wilson. Evolving Controllers for Real Robots: A
Survey of the Literature. Adaptive Behavior, 11(3), 2003.
[47] D. Whitley, M. Richards, R. Beveridge, and A. da Motta Salles Barreto. Alternati-
ve evolutionary algorithms for evolving programs: Evolution strategies and steady
state GP. In Maarten Keijzer, Mike Cattolico, and Dirk Arnold et al., editors,
GECCO 2006: Proceedings of the 8th annual conference on Genetic and evolutio-
nary computation, volume 1, pages 919�926, Seattle, Washington, USA, 8-12 July
2006. ACM Press.
[48] B. Wyns. Genetisch programmeren en codegroei. Doctoraatsthesis, Universiteit
Gent, 2007.
[49] B. Wyns, P. De Bruyne, and L. Boullart. Characterizing diversity in genetic pro-
gramming. In P. Liardet, P. Collet, C. Fonlupt, E. Lutton, and M. Schoenauer,
editors, Proceedings of the 9th European Conference on Genetic Programming, vo-
lume 3905 of Lecture Notes in Computer Science, pages 250�259. Springer-Verlag,
2006.
81
Recommended