[2] | 1 | == Aanwijzing K.M. Wong ==
|
---|
| 2 | In exerciseThomas.pdf staat een objective function die gemaximaliseerd moet
|
---|
| 3 | worden. De functie neemt als input een vector van n groot (vector y dus) die
|
---|
| 4 | bestaat uit de waarden -1 en +1. Bijvoorbeeld y={-1,+1,+1,-1}, waar n=4.
|
---|
| 5 |
|
---|
| 6 | Voor deze opdracht moet je voor een gegeven lengte n een string zoeken met de
|
---|
| 7 | hoogste output waarde. Je begint met het random genereren van een aantal
|
---|
| 8 | strings. Hiervan kies je de beste strings, waarmee je weer een nieuwe populatie
|
---|
| 9 | (hopelijk) betere strings gaat genereren mbv. crossover en/of mutaties. In
|
---|
| 10 | Table 1 staan de beste output waarden die zijn gevonden voor de gegeven string
|
---|
| 11 | lengtes n. Je hoeft voor deze opdracht die waarden niet te overtreffen (dat zou
|
---|
| 12 | te moeilijk zijn).
|
---|
| 13 |
|
---|
| 14 | De functie in de matlab code (de marit function) is niks anders dan een
|
---|
| 15 | implementatie van de objective function. Voor deze opdracht hoef je niet
|
---|
| 16 | perse matlab te gebruiken. De objective functie kan makkelijk in C of
|
---|
| 17 | C++ geimplementeerd worden.
|
---|
| 18 |
|
---|
| 19 |
|
---|
| 20 | == Aanwijzing J.K Vis ==
|
---|
| 21 | Je moet ongeveer het volgende maken:
|
---|
| 22 | 1. Een evaluatiefunctie die volgens de gegeven 'maximal objective function' een
|
---|
| 23 | waarde toekent aan een string over het alfabet {-1, 1}.
|
---|
| 24 | 2. Een mutatiefunctie die tenminste een element uit zo'n string verandert in
|
---|
| 25 | zijn tegengestelde.
|
---|
| 26 | 3. Een 'crossoverfunctie' die tenminste een combinatie maakt van twee strings
|
---|
| 27 | waarbij het resultaat is dat het eerste deel van de eerste string wordt
|
---|
| 28 | aangevuld met het tweede deel van de tweede string en het eerste deel van de
|
---|
| 29 | tweede string wordt aangevuld met het tweede deel van de eerste string.
|
---|
| 30 | 4. Een evolutionair algoritme: verzin iets dat gebruik maakt van de
|
---|
| 31 | bovenstaande functies op ongeveer de volgende manier:
|
---|
| 32 | a. Initialiseer een populatie (een aantal strings) (random?).
|
---|
| 33 | b. Evalueer de populatie (maak gebruik van de evaluatiefunctie).
|
---|
| 34 | c. Indien er een string goed genoeg is (> 7?): stoppen.
|
---|
| 35 | d. Selecteer het 'beste' deel van de populatie (zijn verschillende manieren
|
---|
| 36 | mogelijk).
|
---|
| 37 | e. Vul het geselecteerde deel van de strings aan met gemuteerde (mutatie en
|
---|
| 38 | crossover) strings uit dat deel tot dat je weer de originele populatiegrootte
|
---|
| 39 | hebt.
|
---|
| 40 | Ga naar stap b.
|
---|