Tato stránka je věnována popisu použití optimalizační knihovny, implementující generické algoritmy. Nejprve stáhněte dva soubory:
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.
Get["geneticoperators.m"]; Get["genetic-new.m"];
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ř.
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; $RecursionLimit = 1024; pravdepodobnostMutace = 0.02; pravdepodobnostKrizeni = 0.96; pouzitGrayCode = True; pouzitRuletu = True; debugMode = False;
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.
VektorPromennych = {{x, 0, 5, 16}, {y, 0, 5, 16}};
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.
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}}
A konečně definujeme i samotnou účelovou funkci.
Fitness[{x_,y_}]:=Sin[(x-2.5)^2]+Cos[(y-2.5)]^2;
Může být samozřejmě i více proměnných.
Fitness[{x1_,x2_,x3_,x4_,y1_}]:=Module[{}, ... ];
V prvním kroku nagenerujeme populaci náhodnými jedinci.
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];
PrikladProGenetickeAlgoritmy.nb | ![]() |
4116 bytes |
UcelovaFunkce.png | ![]() |
21496 bytes |
genetic-new.m | ![]() |
7942 bytes |
geneticoperators.m | ![]() |
4700 bytes |