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.

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.

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

Saved successfully!

Ooh no, something went wrong!