vysoké uÄenà technické v brnÄ evoluÄnà algoritmy - matlab gate toolbox
vysoké uÄenà technické v brnÄ evoluÄnà algoritmy - matlab gate toolbox
vysoké uÄenà technické v brnÄ evoluÄnà algoritmy - matlab gate toolbox
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
s velkou kapacitou, zvolil jsem raději rychlejší implementaci, byť za cenu vyššího využití<br />
operační paměti. Pole fitness Fz je jednorozměrné dynamické pole typu double. Při každém<br />
iteračním kroku do něj systém Matlab ukládá ohodnocení jedinců. ActVect je pole typu<br />
unsigned char, ukládá se do něj nejlepší jedinec z populace, ActValue pak ohodnocení<br />
nejlepšího jedince. iParam je důležitá vstupní tabulka, jsou zde uloženy rozsahy pro kódování<br />
parametrů do reálných čísel (omezující podmínky optimalizačního problému). sVect je vstupní<br />
parametr pouze pro <strong>algoritmy</strong> HCA, pokud uživatel požaduje začátek výpočtu od konkrétních<br />
bodů. Je to pole hodnot, které reprezentuje tzv. start vektor.<br />
27<br />
Konverzní metody Gray/Bin Int Real<br />
Optimalizační problém je na začátku obvykle zadáván v podobě reálných čísel. Taktéž<br />
ohodnocení jedinců je prováděno na základě účelové funkce, která se pohybuje v prostoru<br />
reálných čísel. Ovšem varianta algoritmů HCA a GA implementovaná v GATE potřebuje<br />
převést reálná čísla do binární podoby, jelikož provádí operace přímo s binárními řetězci. Je<br />
potřeba metod, které převedou reálná čísla do binární formy a zpět. O to se stará sada<br />
konverzních metod implementovaných v jádře COptMethod. Jedná se o Gray2Int, Int2Gray,<br />
Bin2Int, Int2Bin, Int2Real a Real2Int. Tyto metody jsou základním stavebním kamenem pro<br />
správnou funkci všech optimalizačních algoritmů.<br />
Převod reálných čísel probíhá následujícím způsobem: reálné číslo se převede pomocí<br />
kódovacích rozsahů z tabulky iParam na číslo typu unsigned int64 (Real2Int) a poté na číslo<br />
v binárním (Int2Bin) nebo Grayově kódu (Int2Gray), zároveň se bere v potaz, kolika bity je<br />
nutno kódovat daný parametr (nBitParam).<br />
Re − Μin<br />
Int = MaxInt ⋅<br />
(1)<br />
Μax − Μin<br />
Max − Min<br />
Re = Int ⋅ + Min<br />
(2)<br />
MaxInt<br />
Vzorce (1) a (2) udávají převodní vztah pro konverzi mezi reálným a přirozeným<br />
číslem. Int je hodnota celočíselného typu a Re je reálné číslo. Min a Max jsou kódovací rozsahy<br />
parametrů uvedené v tabulce iParam. MaxInt je číslo, jehož hodnota udává maximální hodnotu<br />
pro kódování na nBitParam bitech (3).<br />
nBitParam<br />
MaxInt = 2<br />
(3)<br />
Převodní metody pro převod z přirozených čísel Int do čísel binárních a zpět fungují<br />
tradičním způsobem podle vzorce (4).<br />
Int = a0<br />
⋅2<br />
+ a1<br />
⋅ 2 + ... + ai<br />
⋅ 2 + ... + an−1<br />
⋅2<br />
+ an<br />
⋅2<br />
Kde : a ...a − bity binárního čísla Bin<br />
0<br />
0<br />
n<br />
1<br />
i<br />
n−1<br />
n<br />
(4)<br />
Chromozomy lze také kódovat pomocí Grayova kódování (Int2Gray, Gray2Int).<br />
Uvážíme-li, že v Grayově kódu je mezi dvěma libovolnými sousedními čísly změna pouze<br />
v jediném bitu, jeví se takové kódování jako výhodnější (změna jednoho bitu v chromozomu<br />
způsobí adekvátní změnu v reprezentaci reálného čísla). Převod probíhá nejdříve do binárního<br />
kódu a poté se převede do Grayova kódu pomocí následujícího algoritmu:<br />
1) Dvojková číslice přímého binárního kódu s nejvyšší vahou se ponechá beze změny.<br />
2) Každá následující dvojková číslice přímého binárního kódu se invertuje, pokud jí<br />
v přímém kódu předchází na vyšší váze jednička.