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