01.12.2014 Views

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

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!