| At line 1 added 2 lines. |
| [{ALLOW view All}] |
| [{ALLOW edit,upload Trusted}] |
| At line 12 added 7 lines. |
| Tato stránka je věnována popisu použití optimalizační knihovny, implementující generické algoritmy. Nejprve stáhněte dva soubory: |
|
| * [genetic-new.m|genetic-new.m] - obsahuje hlavní optimalizační smyčku a pomocné funkce |
| * [geneticoperators.m|geneticoperators.m] - obsahuje definice genetických operátorů |
|
| Založte nový soubor .nb. Jako první je potřeba natáhnout knihovnu do paměti Mathematického jádra (kernelu). To provedete dvěma řádky. |
|
| At line 24 added 7 lines. |
| Pokud vidíme chybové hlášky |
|
| Get::noopen: Cannot open geneticoperators.m...\\ |
| Get::noopen: Cannot open genetic-new.m...\\ |
|
| Dopíšeme přímo konkrétní cesty k souborům. (předchozí uvedené příkazy fungují pouze pokud jste soubory nakopírovali do aktuálního pracovního adresáře) Např. |
|
| At line 16 changed 1 line. |
| pocetJedincu = 15; |
| Get["c:\geneticoperators.m"]; |
| Get["c:\genetic-new.m"]; |
| }}} |
|
| Správný chod algoritmu se řídí následujícími parametry. Jejich změnou je možné ovlivnit rychlost konvergence. |
|
| {{{ |
| pocetJedincu = 55; |
| At line 48 added 7 lines. |
| Dále je nutné nadefinovat optimalizační proměnné. Definice je dána formou vektoru proměnných, kdy každý prvek má 4 složky. |
|
| * x - název proměnné |
| * 0 - dolní mez prohledávaného prostoru |
| * 5 - horní mez prohledávaného prostoru |
| * 16 - přenost v bitech (např. 16 znamená, že se prohledávaný prostor diskretizuje sití se 2^16 uzlů) |
|
| At line 26 changed 1 line. |
| VektorPromennych = |
| VektorPromennych = {{x, 0, 5, 16}, {y, 0, 5, 16}}; |
| At line 59 added 2 lines. |
| Počet optimalizačních proměnných není omezen, mějme však na paměti, že čím více proměnných máme, tím větší výpočetní výkon potřebujeme. Nicméně vektor optimalizačních proměnných může vypadat i takto. |
|
| At line 30 changed 1 line. |
| Fitness[ |
| VektorPromennych = {{x1, 0, 5, 8},{x2, 0, 5, 8},{x3, 0, 5, 8},{x4, 0, 5, 8}, {y1, -500, 500, 16},{y2, 0, 500, 16},{y3, 100, 500, 16},{z,-5,5,12}} |
| At line 65 added 3 lines. |
|
| A konečně definujeme i samotnou účelovou funkci. |
|
| At line 34 changed 2 lines. |
| ClearAll[Populace]; |
| Populace = Inicializace[pocetJedincu]; |
| Fitness[{x_,y_}]:=Sin[(x-2.5)^2]+Cos[(y-2.5)]^2; |
| At line 72 added 4 lines. |
| [UcelovaFunkce.png] |
|
| Může být samozřejmě i více proměnných. |
|
| At line 39 changed 1 line. |
| OptimalizacniSmycka[20000]; |
| Fitness[{x1_,x2_,x3_,x4_,y1_}]:=Module[{}, ... ]; |
| At line 80 added 1 line. |
| V prvním kroku nagenerujeme populaci náhodnými jedinci. |
| At line 82 added 15 lines. |
| {{{ |
| ClearAll[Populace]; |
| Populace = Inicializace[pocetJedincu]; |
| }}} |
|
| Tímto příkazem se spouští iterativní proces evolučního hledání nových řešení. Parametr určuje počet iterací po jejich vykonání skončí. Funkci je možno po skončení opět spustit, a celý proces optimalizace dále pokračuje. |
|
| {{{ |
| OptimalizacniSmycka[200]; |
| }}} |
| \\ |
| \\ |
| __''Tato knihovna byla vytvořena v rámci příspěvku "Optimalizace sálavého pole v souvislosti s úsporami při radiačním vytápění interiérů".''__ |
| \\ |
| \\ |