Experiment: spôsoby reprezentácie

Cieľom je porovnať rôzne spôsoby reprezentácie jedincov. Ide o to, ako veľmi jednotlivé reprezentačné schémy napomáhajú alebo prekážajú efektívnemu prehľadávaniu priestoru prehľadávania pri hľadaní riešenia.

Experiment je postavený na úlohe, reprezentovanej typickým kombinatorickým problémom - farbením grafu. Je potrebné vytvoriť politickú mapu Afriky, teda vyfarbiť jednotlivé štáty tak, aby žiadne dva susedné štáty nepoužili rovnakú farbu. Jednotlivé štáty predstavujú uzly grafu, ktorých farbu je potrebné určiť, zatiaľ čo hrany grafu medzi dvojicami uzlov reprezentujú skutočnosť, že štáty, reprezentované týmito uzlami, majú spoločnú hranicu. Každá hrana tak predstavuje ohraničenie, ktoré hľadané riešenie musí spĺňať - uzly spojené hranou musia byť zafarbené rôznymi farbami. Aby farbenie bolo validné, musí spĺňať všetky takéto ohraničenia.

Podstata experimentu

Je daná implementácia algoritmu s jednoduchou realizáciou všetkých typických blokov algoritmu. Je postavená na zvolenom tvare kandidátov na riešenia, spoločne definujúcim priestor kandidátov. Tento tvar využívajú všetky bloky algoritmu, ktoré pracujú s priestorom kandidátov.

Pre definovanie priestoru prehľadávania je použitá reprezentačná schéma, ktorá zrkadlí tvar kandidátov - a teda nie je potrebné dekódovanie reprezentácie kandidáta na samotného kandidáta (aktuálne realizované ako identita). Tvar reprezentácie je zohľadnený všetkými tými blokmi algoritmu, ktoré pracujú s reprezentáciami v priestor prehľadávania.

Výkonnosť algoritmu s použitou reprezentačnou schémou je meraná ako počet generácií, potrebných pre objavenie validného riešenia. Keďže sa jedná o stochastický proces, tak hľadanie riešenia musí byť viackrát opakované pre získanie spoľahlivej vzorky dát. Následne sa určí priemerný počet generácií, ktorý je potrebný pre dosiahnutie riešenia.

Príprava

Pre prípravu experimentu je potrebné nahradiť použitú reprezentačnú schému zvoleným spôsobom reprezentácie. Na základe tohto rozhodnutia je potrebné zmeniť implementáciu všetkých tých blokov algoritmu, ktoré s reprezentáciami pracujú. Je potrebné meniť metódy pre:

  1. dekódovanie reprezentácie jedinca na kandidáta (funkcia decode)
  2. generovanie jedincov (funkcia generate_individual)
  3. mutačné zmeny jedinca (funkcia mutate)
  4. kombinovanie jedincov (funkcia cross)