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.
4.5.1 Struktura master XML souboru<br />
V dřívějších kapitolách jsem již zmínil, že komunikace probíhá netradičním způsobem,<br />
a to přes master XML soubor, který zakládá serverová aplikace. Klienty jsou jednotlivé<br />
GATE−DLL sady funkcí, spouštěné v systému Matlab. Zamezení kolizím při zápisu je řešeno<br />
pomocí archivního atributu souboru. Každá zapisující strana nejdříve testuje stav atributu a<br />
pokud není nastaven, nastaví jej a provede čtení/zápis z/do XML. Po dokončení operace jej zase<br />
vrátí do původního stavu.<br />
Popis položek master XML souboru:<br />
nParam - počet parametrů optimalizační úlohy<br />
nBitParam - počet bitů, kolika bude kódován každý parametr<br />
nIndi - velikost populace jedinců<br />
mCode - typ binárního kódování – binární nebo Grayovo<br />
funcOpt - požadavek optimalizace – minimum nebo maximum<br />
funcName - jméno vektorizované účelové funkce (Matlab „m“ souboru)<br />
iParam - intervaly, na kterých jsou kódovány parametry (omezující podmínky)<br />
rndSeed - inicializační hodnota pro generátor náhodných čísel (vždy 0)<br />
GenStep - počet generací GA algoritmu, po kterých hlásí klienti svůj stav server aplikaci<br />
BestFit - celkově nejlepší fitness ze všech připojených klientů<br />
BestBinFit - celkově nejlepší chromozom ze všech připojených klientů<br />
Clients - počet klientů připojených k serveru<br />
Položky, které přidávají jednotliví klienti:<br />
ClientXFit - nejlepší fitness nalezené klientem číslo X<br />
ClientXBinFit - nejlepší chromozom nalezený klientem číslo X<br />
ClientXStatus - stav klienta číslo X (0, 1, 2, 3) ~ (working, restart, stop, starting)<br />
4.5.2 Průběh komunikace:<br />
Komunikace mezi serverem a klienty probíhá následujícím způsobem:<br />
1) Server aplikace založí master XML soubor s celkovým nastavením optimalizační úlohy.<br />
2) Master soubor musí být nasdílen na síti, aby byl pro klienty pracující na různých<br />
výpočetních strojích dostupný.<br />
3) Server poté monitoruje master XML v 3sekundových intervalech, zda se připojil nějaký<br />
nový klient.<br />
4) Spuštěný klient si ihned na začátku načte globální nastavení z XML souboru, zároveň<br />
zvětší hodnotu Clients o 1. Dále nastaví svůj ClientStatus na hodnotu 3 (starting), čímž<br />
dá najevo serveru, že se připojil nový klient a že ještě nemá vypočteno žádné řešení.<br />
Také si načte hodnotu GenStep, která udává, po kolika generacích GA má hlásit stav<br />
výpočtu serveru.<br />
5) Klient dokončí jeden výpočetní cyklus a předá nalezené řešení do XML. Svůj status<br />
nastaví na hodnotu 0 (runing).<br />
6) Server zaznamená při dalším intervalu monitoringu XML souboru, že se připojil nový<br />
klient a načte jeho řešení.<br />
7) Pokud nastane požadavek restartovat nebo zastavit klienta, zapíše do stavu klienta buď<br />
1 (restart), nebo 2 (stop).<br />
8) Klient si v dalším cyklu nejdříve testuje status, pokud je požadavek k ukončení, zastaví<br />
se. Pokud je požadavek k restartu, načte celkovou nejlepší hodnotu serveru BestFit a<br />
porovnává, zda mezitím on sám nenašel lepší hodnotu (komunikace je zpožděna o 1<br />
cyklus klienta). Pokud je celková hodnota serveru lepší, zařadí chromozom BestBinFit<br />
do populace místo nejhoršího jedince a pokračuje ve výpočtech.<br />
9) Při zastavení serveru se odešle všem klientům stav stop.<br />
47