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.

37<br />

Funkce<br />

Popis<br />

FitnessHC(*FzHC)<br />

Odeslání ohodnocení bloku jedinců, kteří jsou optimalizovaní HCA algoritmem, zpět do DLL<br />

Parametr Popis Možné hodnoty<br />

- Matice ohodnocení jedinců, typu double<br />

Parametry - Rozměru (Y x 1)<br />

jednorozměrné<br />

*FzHC<br />

- Rozměr Y zjistíme voláním funkce<br />

double pole<br />

HowMuchAlloc(CoreSize,Method)<br />

Algoritmus GA-HC pracuje stejně jako algoritmus GA, pouze mutace je vylepšena.<br />

V populaci jsou náhodně vybírána jádra o předem zvolené šířce a tato jádra jsou optimalizována<br />

pomocí definovaného algoritmu HCA. Poté je třeba tento nový blok jedinců (blok populace<br />

celých chromozomů se změněnými jádry) ohodnotit v systému Matlab a hodnocení odeslat zpět<br />

do knihovny DLL. Metoda MutationHC tedy není pouze jenom jedna exportní funkce, ale je<br />

součástí tří metod (MutationHC,GetRealHC,FitnessHC). Bez dalších dvou metod by ji nebylo<br />

možné realizovat (vzhledem k tomu, že DLL jádro pracuje interně, ale ohodnocování provádí<br />

externě systém Matlab).<br />

4.3.4 Funkce pro kompatibilitu s původním GATE<br />

Tyto funkce jsou implementovány proto, aby zůstal nový GATE-DLL kompatibilní<br />

s původním GATE <strong>toolbox</strong>em. Uvážíme-li, že knihovna DLL pracuje interně naprosto<br />

autonomně (veškeré struktury a nastavení jsou modifikovány pouze uvnitř), je třeba doplnit<br />

několik funkcí, které by dokázaly exportovat některé struktury do systému Matlab. Jedná se<br />

hlavně o binární populaci jedinců, která je nutná, pokud by se uživatel rozhodl pokračovat ve<br />

výpočtu v původním GATE <strong>toolbox</strong>u. Rozhodnutí udržovat struktury po celou dobu<br />

optimalizačního procesu pouze v DLL knihovně bylo učiněno na základě rychlostních testů.<br />

Když si uvědomíme, že v každém kroku libovolného algoritmu by bylo třeba exportovat celou<br />

binární populaci (jedná se většinou o matici dost velkého rozměru) do systému Matlab, je jasné,<br />

že rychlost výpočtů nového GATE-DLL by zřejmě nebyla o moc vyšší, než u původního<br />

GATE. A GATE-DLL byl zadán s jasným cílem: urychlit stávající výpočty.<br />

Funkce<br />

Popis<br />

Parametry *BinArr<br />

Funkce<br />

Popis<br />

GetBinPool(*BinArr)<br />

- Získání populace jedinců z DLL v binárním tvaru<br />

- Je třeba volat s parametrem naalokované matice správného rozměru!<br />

Parametr Popis Možné hodnoty<br />

SetBinPool(*BinArr)<br />

- Ukazatel na matici typu double<br />

- Matice musí být předem naalokována!<br />

- Rozměr matice musí být (nInd x nParam ∙ nBitParam)<br />

Nastavení interní binární populace jedinců DLL na určité hodnoty<br />

jednorozměrné<br />

double pole<br />

Parametr Popis Možné hodnoty<br />

Parametry - Matice typu double<br />

jednorozměrné<br />

*BinArr<br />

- Rozměr matice musí být (nInd x nParam ∙ nBitParam) double pole<br />

Funkce<br />

Popis<br />

Parametry *BinArr<br />

GetBinActVec(*BinArr)<br />

- Získání nejlepšího chromozmu z DLL v binárním tvaru<br />

- Je třeba volat s parametrem naalokované matice správného rozměru!<br />

Parametr Popis Možné hodnoty<br />

- Ukazatel na matici typu double<br />

- Matice musí být předem naalokována!<br />

- Rozměr matice musí být (1 x nParam ∙ nBitParam)<br />

jednorozměrné<br />

double pole

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

Saved successfully!

Ooh no, something went wrong!