Professional Documents
Culture Documents
GA TBX Dokumentacia
GA TBX Dokumentacia
POUŽÍVATEĽSKÁ PRÍRUČKA
Ivan Sekaj
1
Úvod
Toolbox - Genetické algoritmy je určený na použitie v programovom
prostredí Matlab pre riešenie optimalizačných problémov, ktoré používajú
predovšetkým reálnečíselné kódovanie reťazcov. Jeho ďalším špecifikom je,
že je minimalizujúci, čiže za lepšie jedince, ktoré sú preferované, považuje tie,
ktoré dosahujú menších hodnôt účelovej funkcie resp. fitness funkcie. V
prípade maximalizácie sa použije doplnková účelová funkcia. Hodnoty
účelovej funkcie alebo fitness môžu nadobúdať kladné aj záporné
reálnečíselné hodnoty.
2
Prehľad funkcíí
3
Základné funkcie
Charakteristika:
Syntax:
Newpop=genrpop(popsize ,Space)
Príklad:
S = [-10 0 0 0 -1
10 1 10 10 0]
A=genrpop(6 ,S)
4
change - eliminácia duplicitných reťazcov
Charakteristika:
Syntax:
Newpop=change(Oldpop,option,Space)
Príklad:
A=[1 2 3 4 5 space=[ 0 0 0 0 0
4 8 9 3 7 10 10 10 10 10 ]
1 2 3 4 5
1 1 1 1 1
1 2 3 4 5
1 2 3 4 5 B=change(A,0,space)
7 8 6 3 0
1 1 1 1 1]
5
shake - náhodné premiešanie poradia reťazcov v populácii
Charakteristika:
Funkcia vráti novú populáciu, v ktorej budú mať reťazce pôvodnej populácie
náhodne zmenené poradia. Intenzita premiešania môže byť nastavená od
hodnoty 0 - žiadne premiešanie až po hodnotu 1 - maximálne premiešanie.
Syntax:
Newpop=shake(Oldpop,rate);
Príklad:
A=[1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6]
B=shake(A, 0.9)
B=[2 2 2 2
6 6 6 6
3 3 3 3
1 1 1 1
5 5 5 5
4 4 4 4]
6
Kríženie
crossov - kríženie
Charakteristika:
Syntax:
Newpop=crossov(Oldpop,num,sel)
Príklad:
A=[1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6]
B=crossov(A,1,0)
B=[1 1 5 5 5
2 2 3 3 3
3 3 2 2 2
4 4 4 4 6
5 5 1 1 1
6 6 6 6 4]
7
crosgrp - kríženie medzi viacerými rodičmi
Charakteristika:
Funkcia skríži viac rodičov a vytvorí určený počet potomkov, ktorých gény sú
náhodne zdedené od jednotlivých rodičov. Počet rodičov môže byť väčší ako
2. Počet potomkov a rodičov nemusí byť rovnaký.
Syntax:
Newgroup=crosgrp(Oldgroup,num)
Príklad:
A=[0 0 0 0
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
9 9 9 9]
B=crosgrp(A, 10)
B=[ 3 2 4 3
9 5 3 0
5 3 4 5
9 5 2 3
5 9 3 9
0 3 5 0
0 2 2 4
2 2 0 5
3 9 3 3
4 4 2 5]
8
around - medziľahlé kríženie
Charakteristika:
P = R1 + .r.(R2-R1)
Syntax: Newpop=around(Oldpop,sel,alfa,Space)
Príklad:
A =[ 1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5]
B=around(A,1,0.5,space)
9
crosord – permutačné kríženie
Charakteristika:
Syntax:
Newpop=crosord(Oldpop,sel)
Oldpop - stara populacia
sel - sposob vyberu dvojic: 0 - nahodny, 1 - susedne dvojice v
populacii
Príklad:
A =[5 6 7 4 1 8 2 3
6 3 7 1 5 8 2 4
7 2 1 5 4 8 3 6
5 4 2 6 3 1 7 8
4 1 6 8 5 3 2 7
2 4 8 1 3 5 6 7]
B=crosord(A,1)
B=[5 6 7 3 1 8 2 4
6 3 7 5 4 1 8 2
5 4 2 6 1 8 3 7
2 5 4 8 3 1 7 6
4 8 1 6 5 3 2 7
4 1 8 2 3 5 6 7]
10
Mutácia
Charakteristika:
Syntax:
Newpop=mutx(Oldpop,rate,Space)
Príklad:
A=[1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6]
S=[0 0 0 0 0
10 10 10 10 10 ]
B=mutx(A,0.1,S)
11
muta - aditívna mutácia (lokálna mutácia)
Charakteristika:
Syntax:
Newpop=muta(Oldpop,rate,Amp,Space)
Príklad:
A=[1 1 1 1 1 Amp = [ 1 1 1 1 1 ]
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4 S=[0 0 0 0 0
5 5 5 5 5 10 10 10 10 10 ]
6 6 6 6 6]
12
mutn – aditívna mutácia s normálnym rozdelením (lokálna mutácia)
Charakteristika:
Syntax:
Newpop=mutn(Oldpop,rate,Amp,Space)
Príklad:
A=[1 1 1 1 1 Amp = [ 1 1 1 1 1 ]
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4 S=[0 0 0 0 0
5 5 5 5 5 10 10 10 10 10 ]
6 6 6 6 6]
13
mutm - multiplikatívna mutácia (lokálna mutácia)
Charakteristika:
Syntax:
Newpop=mutm(Oldpop,rate,Amps,Space)
Príklad:
B=mutm(A,0.1,Amp,S)
14
swapgen - mutácia poradia génov v reťazci
Charakteristika:
Syntax:
Newpop=swapgen(Oldpop,rate)
Príklad:
A=[ 1 2 3 4 5 6 7
7 6 5 4 3 2 1
1 1 1 2 2 2 2
1 2 3 4 5 6 7
7 7 7 7 7 5 5]
B=swapgen(A, 0.5)
B=[ 1 2 3 4 5 6 7
7 2 5 4 3 6 1
1 1 1 2 2 2 2
1 2 3 4 5 6 7
7 7 7 7 5 7 5]
15
swappart - vzájomná výmena poradia dvoch častí reťazcov
Charakteristika:
Syntax:
Newpop=swappart(Oldpop,rate)
Príklad:
A=[ 1 2 3 4 5 6 7
7 6 5 4 3 2 1
1 1 1 2 2 2 2
1 2 3 4 5 6 7
7 7 7 7 7 5 5]
B=swappart(A, 0.5)
B=[ 6 7 1 2 3 4 5
7 6 5 4 3 2 1
2 2 2 1 1 1 2
1 2 3 4 5 6 7
7 7 7 7 7 5 5]
16
Výber
Charakteristika:
Syntax:
Newpop=selbest(Oldpop,Objpop,Nums);
Príklad:
A=[1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6]
uf=[1 2 3 4 5 6]
vyber=[2 0 1 1]
B=selbest(A,uf,vyber)
B=[ 1 1 1 1 1
1 1 1 1 1
3 3 3 3 3
4 4 4 4 4]
17
seldiv - výber na základe maximálnej miery diverzity
Charakteristika:
Syntax:
Newpop=seldiv(Oldpop,Objpop,Nums,sw)
Príklad:
A=[2 2 2 2 2 B=seldiv(A,uf,nums,1)
4 2 1 3 3
2 2 2 3 2 Vektor miery diverzity jednotlivých reťazcov voči
0 2 0 3 2 najlepšiemu reťazcu
8 2 5 2 7 [2 2 2 2 2] je:
2 2 9 2 2
3 3 3 3 3 d = [ 0 2.646 1 1.732 8.367 7 2.236 2.236 ]
0 2 2 2 1]
B=[8 2 5 2 7
uf=[1 5 2 4 3 7 6 10] 8 2 5 2 7
nums=[2 1 1] 2 2 9 2 2
4 2 1 3 3]
18
selrand - náhodný výber jedincov
Charakteristika:
Syntax:
Newpop=selrand(Oldpop,Objpop, Num);
Príklad:
A=[1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6]
B=selrand(A,5)
B=[2 2 2 2 2
6 6 6 6 6
5 5 5 5 5
2 2 2 2 2
3 3 3 3 3]
19
selsort - výber a zoradenie jedincov podľa úspešnosti
Charakteristika:
Syntax:
Newpop=selsort(Oldpop,Objpop,Num);
Príklad:
A=[ 4 4 4 4 4
2 2 2 2 2
6 6 6 6 6
3 3 3 3 3
1 1 1 1 1
5 5 5 5 5]
uf=[4 2 6 3 1 5]
pocet=4
B=selsort(A,uf,pocet)
B=[ 1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4]
20
selsus - výber jedincov pomocou váhovaného ruletového kolesa
Charakteristika:
Syntax:
Newpop=selsus(Oldpop,Objpop,Num);
Príklad:
A=[1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6]
uf=[1 2 3 4 5 6]
B=selsus(A,uf,4)
B=[ 5 5 5 5 5
1 1 1 1 1
3 3 3 3 3
2 2 2 2 2
2 2 2 2 2]
21
seltourn – turnajový výber
Charakteristika:
Syntax:
Newpop=seltourn(Oldpop,Objpop,Num);
Príklad:
A=[1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6]
uf=[1 2 3 4 5 6]
B=seltourn(A,uf,4)
B =[1 1 1 1
3 3 3 3
2 2 2 2
1 1 1 1]
22