Table of Contents

Evoluční algoritmy pro úlohy s omezeními

Cílem dnešního cvičení je implementace evolučního algoritmu pro úlohy s omezeními. Podobně jako u vícekriteriálního algoritmu NSGA-II i teď stačí implementovat jednoduché úpravy základního evolučního algoritmu. Vyzkoušíme si dvě varianty adaptivní penalizace, které jsem probrali na přednášce:

Pokud úkoly nestihnete na cvičení, dokončete je doma.

Adaptace váhy penalizace

Tato metoda adaptuje váhu $r_g(t)$ v čase následujícím způsobem:

$\beta_1, \beta_2 > 1$ a $\beta_1 \neq \beta_2$

Implementujte tuto adaptivní metodu.

Vstup Aktuální $r_g(t)$
Vstup Informace o přípustnosti nejlepšího řešení v posledních $k$ generacích
Výstup Aktualizovaná hodnota $r_g(t+1)$

Implementujte metodu pro výpočet fitness daného jedince ve tvaru $fitness(x) = f(x) + r_g(t)*\sum_{i=1}^{m+p}G_i(x)$, kde

Vstup $f(x)$
Vstup $G_i(x)$ pro $i = 1 ... m+k$
Vstup $r_g(t)$
Výstup fitness

Implementujte evoluční algoritmus s generační náhradovou strategií, používající implementovanou fitness funkci s adaptovanou váhou penalizace nepřípustných řešení.

Stochastic Ranking

Tato metoda nejprve seřadí jedince v populaci od nejlepšího po nejhoršího pomocí stochastické metody podobné Bubble-sort. Na takto seřazenou populaci potom můžeme aplikovat např. turnajovou selekci, ve které jedinec s nižším pořadím vítězí nad jedincem s vyšším pořadím.

Implementujte metodu stochastického Bubble-sortu, viz přednáška.

Vstup Populace jedinců; každý jedinec má napočítané hodnoty $f(x)$ a $\sum_{i=1}^{m+p}G_i(x)$
Výstup Populace seřazená od nejlepšího k nejhoršímu

Implementujte evoluční algoritmus s generační náhradovou strategií, používající implementovanou metodu stochastického řazení a pořadovou turnajovou selekci.

Experimentální ověření

Jako testovací problém použijeme optimalizaci reálných funkcí se spojitými parametry. Konkrétně problémy g06, g08, g11 a g24 z článku problem_definitions.

Použijte již naimplementované operátory pro reálnou reprezentaci.

Problém g06:

Problém g08:

Problém g11:

Problém g24: