Cvičení 23. 10.
Přirozený výběr: pomáhá selekce?
- práce s populací eoPop
- Cvičení 1 (použijte kód z minulého týdne)
- jak se bude chovat GA, pokud budeme jedince vybírat jen náhodně?
- vyzkoušejte různé selekce
Tournament: třída eoDetTournamentSelect
Roulette wheel: eoProportionalSelect
Random: eoRandomSelect - porovnejte průběh genetického algoritmu s náhodnou selekcí, ruletovou selekcí a turnajovou selekcí (porovnávejte vždy průměr z 10 běhů GA)
2 body: Obrázek srovnávající průběh fitness pro náhodnou, ruletovou a turnajovou selekci.
Elitismus
- Cvičení 2 (upravujte existující kód)
- jednoduchá implementace GA eoSGA neimplementuje elitismus
- použijeme eoEeasyEA
- prohléďněte si kód eoEasyEA
-
eoEasyEA<Indi> gga(checkpoint, eval, select, transform, replace);
- checkpoint : kritérium pro zastavení + statistiky
- eval : vyhodnocení fitness
- select : selekce (zapouzdření, narozdíl od
oeSGA vybírá rovnou dané procento jedinců)
// SELECT // The selection eoProportionalSelect<Indi> selectOne; // is now encapsulated in a eoSelectPerc eoSelectPerc<Indi> select(selectOne); // by default rate==1 (100%)
- transform: zapouzdření selekce a mutace
// CROSSOVER // 1-point crossover for bitstring eo1PtBitXover< Indi> xover; // MUTATION // standard bit-flip mutation for bitstring eoBitMutation< Indi> mutation(P_MUT_PER_BIT); // The operators are encapsulated into an eoTRansform object eoSGATransform<Indi> transform(xover, CROSS_RATE, mutation, MUT_RATE);
- replecament : mechanismus vytvoření nové populace z rodičů (staré populace) a potomků
- stejného efektu jako s eoSGA dosáhneme s eoGenerationalReplecament
- elitu implementujeme pomocí tzv. Survive and Die replacement:
eoDeterministicSaDReplecement(elita_percentage,1.0-elita_percentage); - tzv. slabý eletismus lze pomocí
eoWeakElitistReplacement
// REPLACE // the same generational replacement at the moment :-) eoGenerationalReplacement<Indi> replace_main; // weak elitism eoWeakElitistReplacement<Indi> replace(replace_main);
- porovnejte průběh GA s elitou a bez elity (bez elity: pomocí eoSGA nebo použít replacement eoGenerationalReplacement)
- jak velká elita pomáhá (kolik procent)? kolik už je moc?
3 body: Obrázek srovnávající průběh fitness pro GA s různě velkou elitou. Srovnání náhodné a ruletové selekce při elitě 2% a elitě 30%. Stručný (=stačí věta, dvě) komentář, proč si myslíte, že to tak dopadlo.