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.
22<br />
minimalizace či maximalizace, odkaz na definici účelové funkce, počet parametrů, kolika bity<br />
jsou kódovány jednotlivé parametry, typ binárního kódování, aj.<br />
Jako servisní metody jsou označovány v GATE <strong>toolbox</strong>u takové funkce, které jsou<br />
nezbytné pro činnost výkonných metod, nebo mají ještě i další pomocné funkce.<br />
Účelovou funkci je třeba sestavit jako vektorizovanou Matlab funkci. Musí být napsána<br />
tak, aby byla schopna vypočítat matici s parametrovými vektory.<br />
Problém celého řešení je, jak jsem již naznačil v úvodu kapitoly, velmi pomalá<br />
implementace. Pro systém Matlab je evidentně velký problém, pokud se snažíme provádět<br />
nějaké binární operace. Veškeré výpočty zřejmě provádí na hodnotách, které převede na datový<br />
typ double. Každá taková hodnota je v paměti počítače zakódována 64 bity, ačkoliv se jedná o<br />
binární číslo, které by bylo možno zakódovat pouze v jediném bitu. Proto je práce v binárních<br />
operacích dost neefektivní.<br />
Více informací a detailní popis struktur a funkcí GATE 2.0 je možno najít v [1].<br />
3.2 Vylepšení GATE – DLL GATE<br />
Počáteční nápad byl použít stávající GATE <strong>toolbox</strong> a k němu připojit externí<br />
dynamicky linkovanou knihovnu DLL, ve které by byly veškeré stěžejní funkce pro práci<br />
s binárním kódem. Postupem času jsem však zjistil, že takto postupovat nelze. GATE uchovává<br />
binární populaci v matici s prvky typu double. Při každé operaci by se tak musela neustále<br />
posílat z Matlabu do DLL velká matice čísel a v zápětí opět matice stejného rozměru zpět do<br />
Matlabu, což by značně snižovalo rychlost celé implementace.<br />
Rozhodl jsem se vytvořit DLL tak, aby pracovalo interně naprosto autonomně. Veškeré<br />
datové struktury jsou uchovávány uvnitř DLL a teprve na požadavek uživatele jsou data (binární<br />
populace) odesílána zpět do systému Matlab. Tato koncepce se později ukázala jako velice<br />
výhodná a vysoce efektivní z hlediska rychlosti výpočtů.<br />
Dále jsem se snažil, aby byl nový GATE-DLL <strong>toolbox</strong> z větší části kompatibilní<br />
s původním <strong>toolbox</strong>em; aby se postup zadávání optimalizačního problému z hlediska uživatele<br />
změnil co možná nejméně. Při inicializačním volání DLL knihovny se jí předá nastavení<br />
z původní datové struktury, která zůstává kompatibilní s původním <strong>toolbox</strong>em.<br />
Nový <strong>toolbox</strong> byl také vylepšen o rozhraní XML, které umožňuje v jakékoliv části<br />
výpočtu uložit nastavení do XML datového souboru. Z tohoto XML je možné spustit znovu celý<br />
optimalizační proces s uloženými parametry a hodnotami. Načtení parametrů z XML lze provést<br />
v jakékoliv části výpočtu, nebo přímo inicializovat nový výpočet pomocí XML souboru.<br />
Další věcí, která je v GATE-DLL nová, je podpora pro distribuované výpočty.<br />
Umožňuje připojit jakýkoliv GATE-DLL před započetím optimalizačního procesu k serveru,<br />
který registruje GATE klienty, umožňuje jejich sledování, automatické předávání lepší hodnoty<br />
nalezeného optima horším klientům, apod. Koncepce klient - server je pojata poněkud<br />
netradičním způsobem. Komunikace probíhá přes master XML soubor, který zakládá serverová<br />
aplikace. Klienti komunikují se serverem prostřednictvím tohoto souboru.<br />
3.2.1 Koncepce GATE-DLL<br />
Jak jsem již zmínil v předchozím odstavci, knihovna DLL zcela nahrazuje většinu<br />
funkcí GATE <strong>toolbox</strong>u a má také vlastní datovou strukturu, ve které uchovává nastavení,<br />
binární populaci, hodnocení populace, aktuální vektor, aj. Všechny výpočty pracují s touto<br />
interní datovou strukturou, čímž se značně zvyšuje výpočetní síla oproti původně navrhované<br />
koncepci volaných funkcí z DLL. Jediné, v čem Matlab zůstává nadále nápomocen výpočtům,<br />
je v ohodnocování jedinců pomocí vektorizované účelové funkce. Definice této funkce zůstává<br />
(opět z důvodů kompatibility) naprosto stejná s původním GATE.