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.
|
---|