Genetické algoritmy - srovnání

Úloha z předmětu 33ZUI, FEL ČVUT, LS 2006
vypracovali: Petr Hašlar, Luděk Dolejský, Roman Hocke

Zadání úloh na genetické algoritmy

Naimplementujte jednoduchý genetický algoritmus, viz níže, a otestujte jeho funkčnost podle jednoho ze tří navržených zadání. Ve všech případech se používá, pokud nebude uvedeno jinak,

Pro zvolené zadání použijte předepsané testovací funkce.

Vhodný vs. nevhodný operátor krížení

Ověřte, jaký vliv má zvolený operátor křížení na správné fungování GA. Porovnejte tyto operátory:

Testovací funkce: F101, Rosenbrock, OneMax.

generace fitness: f101
crossover: one-point
fitness: f101
crossover: uniform
fitness: rosenbrock
crossover: one-point
fitness: rosenbrock
crossover: uniform
fitness: one-max
crossover: one-point
fitness: one-max
crossover: uniform
Ø fitness Max fitness Ø fitness Max fitness Ø fitness Max fitness Ø fitness Max fitness Ø fitness Max fitness Ø fitness Max fitness
0 0.0242 0.4308 0.0090 0.3115 -20325228885279020.0000 -34302139349121.0000 -24802054941479880.0000 -1061765883921170.0000 0.5051 0.6000 0.4928 0.6400
1 0.1262 0.4593 0.0343 0.4112 -9732899972584968.0000 -34302139349121.0000 -13651383640681134.0000 -248474421763485.0000 0.5421 0.6300 0.5319 0.6500
2 0.2027 0.4652 0.0773 0.4490 -4143437645225633.5000 -34302139349121.0000 -8904914664557313.0000 -230077580532435.0000 0.5712 0.6600 0.5670 0.6500
3 0.2792 0.5258 0.0772 0.4490 -1982583322599542.7000 -34302139349121.0000 -5112649505512132.0000 -95402259281585.0000 0.5989 0.6800 0.6017 0.6900
4 0.3265 0.5741 0.0958 0.4490 -835693054057735.4000 -34302139349121.0000 -1423924565511022.5000 -19789011155302.0000 0.6270 0.7100 0.6342 0.7400
5 0.3729 0.5741 0.0686 0.4490 -411830442226763.2500 -17008717291010.0000 -513285269084136.0000 -5201394520931.0000 0.6523 0.7300 0.6657 0.7500
6 0.4287 0.5741 0.0894 0.5023 -226247540005801.2500 -8317023483843.0000 -291653447079667.7500 -447969450895.0000 0.6724 0.7300 0.6906 0.7800
7 0.4524 0.6188 0.1214 0.5023 -96453095178373.2300 -641849837702.0000 -157779240058780.9000 -80098181095.0000 0.6937 0.7700 0.7168 0.7800
8 0.4834 0.6316 0.0624 0.5023 -39450521540740.1200 -641849837702.0000 -50223576326810.3200 -80098181095.0000 0.7185 0.8100 0.7404 0.8100
9 0.5006 0.6560 0.1109 0.5023 -31624930069554.2300 -641849837702.0000 -36159827507522.0100 -80098181095.0000 0.7412 0.8100 0.7679 0.8300
10 0.5403 0.7322 0.0903 0.5023 -10642331250187.9000 -641849837702.0000 -24903846349535.2100 -1719450184.0000 0.7550 0.8200 0.7902 0.8700
11 0.5522 0.7322 0.1360 0.5707 -8855052299000.3600 -641849837702.0000 -31451716763345.7300 -377700050.0000 0.7733 0.8200 0.8157 0.8800
12 0.6044 0.7322 0.1595 0.5707 -10405291045494.0400 -628997457135.0000 -360889523009.8400 -377700050.0000 0.7902 0.8400 0.8376 0.9000
13 0.6537 0.7912 0.1698 0.5707 -1035879649391.6900 -627214823730.0000 -2276241654401.2400 -377700050.0000 0.8059 0.8400 0.8619 0.9200
14 0.6564 0.7912 0.1473 0.5707 -21419067514099.1100 -598686523798.0000 -12232151114.6800 -361778921.0000 0.8192 0.8600 0.8805 0.9400
15 0.6955 0.7912 0.1646 0.5707 -675489571009.6700 -77004194354.0000 -56347481205318.4200 -191358274.0000 0.8297 0.8700 0.8993 0.9500
16 0.6983 0.7912 0.2214 0.5707 -867815118684.7000 -77004194354.0000 -2508821255.2000 -121139247.0000 0.8432 0.8800 0.9159 0.9500
17 0.7029 0.8034 0.2501 0.5707 -1089707490237.0500 -77004194354.0000 -2557297889742.6100 -121139247.0000 0.8560 0.9000 0.9324 0.9800
18 0.7136 0.8264 0.2662 0.5724 -2229149925924.8300 -77004194354.0000 -3819941980605.6200 -121139247.0000 0.8654 0.9000 0.9469 0.9800
19 0.7465 0.8264 0.3224 0.5724 -25585874901065.1600 -77004194354.0000 -18642888089980.6900 -111918798.0000 0.8748 0.9000 0.9584 0.9900
20 0.7357 0.8264 0.3449 0.6203 -759162721348.8700 -77004194354.0000 -12215979502.4300 -83667199.0000 0.8843 0.9200 0.9698 1.0000
21 0.7504 0.8272 0.3459 0.6641 -18399504525054.2300 -77004194354.0000 -1190154455754.0600 -74320434.0000 0.8931 0.9300 0.9780 1.0000
22 0.7819 0.8272 0.3687 0.6773 -615839655391.4800 -9527736834.0000 -377585473.2300 -74320434.0000 0.9007 0.9300 0.9861 1.0000
23 0.7870 0.8284 0.3859 0.6773 -19349641869788.0300 -9527736834.0000 -1165649661.3700 -9652176.0000 0.9070 0.9300 0.9925 1.0000
24 0.7902 0.8338 0.3873 0.6967 -48275866883063.2200 -9527736834.0000 -82502119251.2400 -9652176.0000 0.9132 0.9300 0.9974 1.0000
25 0.8083 0.8338 0.3937 0.6967 -48648450770636.0800 -9527736834.0000 -1257487992671.1800 -9652176.0000 0.9174 0.9300 0.9993 1.0000
26 0.8091 0.8392 0.4695 0.7453 -3577491924073.7300 -9527736834.0000 -5821766021.9900 -9652176.0000 0.9218 0.9400 0.9994 1.0000
27 0.8223 0.8393 0.4969 0.7598 -399274618710.2400 -9527736834.0000 -966738077.2000 -9652176.0000 0.9263 0.9500 0.9990 1.0000
28 0.8102 0.8393 0.5449 0.7678 -499535154095.2700 -9527736834.0000 -2434177265906.0200 -4372610.0000 0.9312 0.9500 0.9992 1.0000
29 0.8041 0.8393 0.5775 0.8037 -376654863455.2400 -1485251938.0000 -164611951.2100 -2313639.0000 0.9363 0.9500 0.9992 1.0000
30 0.8133 0.8405 0.6117 0.8037 -19295992854578.6600 -1485251938.0000 -10211699597.2900 -835680.0000 0.9412 0.9500 0.9993 1.0000
31 0.8183 0.8414 0.6434 0.8342 -3018365542767.6000 -930828962.0000 -18509461970194.4400 -835680.0000 0.9457 0.9700 0.9987 1.0000
32 0.8155 0.8419 0.6581 0.8359 -1536324526208.5500 -930828962.0000 -5816185117.1500 -835680.0000 0.9511 0.9700 0.9992 1.0000
33 0.8218 0.8428 0.6781 0.8504 -28328963733296.7300 -724513262.0000 -75346549246.9900 -835680.0000 0.9560 0.9700 0.9990 1.0000
34 0.8321 0.8478 0.6984 0.8504 -62495809399.1700 -724513262.0000 -19062525886483.6500 -835680.0000 0.9584 0.9700 0.9984 1.0000
35 0.8255 0.8483 0.7301 0.8504 -19558119817254.0800 -60810007.0000 -1161208191847.3600 -835680.0000 0.9592 0.9700 0.9988 1.0000
36 0.8196 0.8483 0.7546 0.8504 -20122452807472.5200 -60810007.0000 -75346020728.4300 -835680.0000 0.9599 0.9700 0.9991 1.0000
37 0.8348 0.8490 0.7693 0.8668 -22510316829199.0100 -60810007.0000 -19577960492164.0900 -835680.0000 0.9593 0.9700 0.9992 1.0000
38 0.8256 0.8490 0.7790 0.8668 -1151657726057.3100 -60810007.0000 -5232854896.6100 -766035.0000 0.9590 0.9700 0.9989 1.0000
39 0.8337 0.8490 0.8039 0.8684 -1134292717785.5300 -60810007.0000 -18932457864104.3700 -766035.0000 0.9599 0.9700 0.9987 1.0000
40 0.8388 0.8570 0.8125 0.8698 -18220822753525.0300 -60810007.0000 -18007179328883.9800 -754550.0000 0.9605 0.9700 0.9995 1.0000
41 0.8437 0.8582 0.8091 0.8701 -1134990622828.4300 -60810007.0000 -79939446393.2300 -754550.0000 0.9631 0.9700 0.9991 1.0000
42 0.8432 0.8582 0.8202 0.8779 -90683367982.9600 -60810007.0000 -20445412333758.9000 -687584.0000 0.9662 0.9800 0.9989 1.0000
43 0.8383 0.8582 0.8241 0.8779 -1383355187486.0100 -60810007.0000 -455261870.5600 -687584.0000 0.9692 0.9800 0.9992 1.0000
44 0.8418 0.8582 0.8389 0.8812 -19419074083960.4900 -60810007.0000 -1209975009293.0200 -687584.0000 0.9699 0.9800 0.9991 1.0000
45 0.8418 0.8582 0.8456 0.8812 -2524443920425.5900 -60810007.0000 -77207003161.7700 -687584.0000 0.9714 0.9800 0.9987 1.0000
46 0.8372 0.8582 0.8441 0.8812 -183611039589.2300 -28255635.0000 -5660852705.8100 -687584.0000 0.9737 0.9800 0.9993 1.0000
47 0.8422 0.8582 0.8557 0.8812 -1292400690796.7700 -28255635.0000 -1209487041656.7200 -687584.0000 0.9774 0.9800 0.9992 1.0000
48 0.8412 0.8582 0.8549 0.8812 -1260253940021.4100 -28255635.0000 -18286840300010.0000 -673670.0000 0.9792 0.9800 0.9991 1.0000
49 0.8404 0.8582 0.8557 0.8812 -8233927222.5000 -28255635.0000 -1303393007035.8100 -673670.0000 0.9789 0.9800 0.9992 1.0000

Grafy závislosti Ø-fitness na generaci

Červeně jsou znázorněny průměrné hodnoty pro crossover: one-point, modře pro crossover: uniform.

Závěr

Při zkoumání vlivu cross-over funkce na rychlost nalezení optimálního řešení jsme provedli séri dvaceti měření evoluce padesáti generací pro každou z námi testovaných funkcí. U každé generace jsme stanovili celkovou fitness hodnotu, dále fitness, jako průměr ze všech odpovídajících průměrných fitness hodnot dílčích měření.

Funkce F101 v obou případech začínala s nulovou fitness první generace a končila na 83%, resp. 76% při použití funkce one-point, resp. uniform.

Pro Rosenbrockovu funkci platilo že v prvním případě začínala na 2,23*10^16 a končila na 6*10^12, zato v druhém případě začínala na 2,21*10^16 a končila na 1,20*10^13.

Funkce One-Max začínala v obou případech na 50% a končila na 98%, resp. ~100%.

Na základě dosažených výsledků nelze jednoznačně zamítnout hypotézu, že použití uniform cross-overu urychluje nalezení optimálního řešení. Tato hypotéza je postavena na přepokladu, že uniform cross-over zvětšuje prohazováním segmentů genů diverzitu množiny všech různých genů v celé populaci a umožňuje tak během stejného počtu generací prozkoumat vetší množství kombinací genů, z čehož plyne vyšší šance na nalezení optimálního řešení.

Jednoduché vs. klamné problémy

Overte, jaký vliv májí vlastnosti optimalizované funkce na správné fungování GA. Porovnejte tyto funkce:

generace fitness: one-max
crossover: one-point
fitness: df3
crossover: one-point
fitness: trap-5
crossover: one-point
Ø fitness Max fitness Ø fitness Max fitness Ø fitness Max fitness
0 0.4916 0.6400 0.3667 0.5853 0.3654 0.5170
1 0.5300 0.6400 0.4254 0.5853 0.4083 0.5510
2 0.5621 0.6500 0.4717 0.6133 0.4442 0.5510
3 0.5907 0.7100 0.5181 0.6733 0.4723 0.5890
4 0.6199 0.7100 0.5604 0.6853 0.4988 0.5950
5 0.6424 0.7100 0.6040 0.7213 0.5307 0.6110
6 0.6630 0.7300 0.6359 0.7213 0.5586 0.6500
7 0.6868 0.7500 0.6569 0.7240 0.5865 0.6660
8 0.7061 0.7500 0.6751 0.7493 0.6118 0.6670
9 0.7240 0.7600 0.6937 0.7720 0.6288 0.6940
10 0.7389 0.7900 0.7138 0.7907 0.6448 0.7110
11 0.7528 0.8000 0.7312 0.7920 0.6610 0.7170
12 0.7663 0.8200 0.7488 0.8133 0.6773 0.7440
13 0.7804 0.8200 0.7679 0.8453 0.6915 0.7440
14 0.7921 0.8400 0.7837 0.8533 0.7075 0.7550
15 0.8031 0.8400 0.8001 0.8600 0.7219 0.7660
16 0.8146 0.8400 0.8189 0.8693 0.7385 0.7720
17 0.8246 0.8500 0.8313 0.8907 0.7525 0.7990
18 0.8321 0.8700 0.8395 0.8933 0.7588 0.8110
19 0.8407 0.8700 0.8461 0.9187 0.7722 0.8110
20 0.8479 0.8800 0.8582 0.9187 0.7793 0.8110
21 0.8558 0.8900 0.8663 0.9187 0.7877 0.8110
22 0.8667 0.9000 0.8810 0.9240 0.7950 0.8220
23 0.8768 0.9100 0.8922 0.9240 0.8017 0.8270
24 0.8859 0.9100 0.9032 0.9240 0.8072 0.8330
25 0.8936 0.9200 0.9044 0.9280 0.8127 0.8380
26 0.9021 0.9200 0.9072 0.9280 0.8144 0.8380
27 0.9089 0.9400 0.9111 0.9293 0.8209 0.8380
28 0.9166 0.9400 0.9168 0.9333 0.8255 0.8440
29 0.9225 0.9400 0.9167 0.9333 0.8301 0.8440
30 0.9298 0.9500 0.9147 0.9373 0.8328 0.8610
31 0.9373 0.9500 0.9213 0.9387 0.8397 0.8610
32 0.9432 0.9600 0.9250 0.9427 0.8431 0.8610
33 0.9471 0.9600 0.9299 0.9427 0.8456 0.8720
34 0.9490 0.9600 0.9345 0.9440 0.8492 0.8830
35 0.9514 0.9600 0.9361 0.9453 0.8551 0.8830
36 0.9538 0.9700 0.9382 0.9453 0.8586 0.8830
37 0.9567 0.9700 0.9397 0.9453 0.8637 0.8830
38 0.9601 0.9700 0.9403 0.9480 0.8690 0.8940
39 0.9631 0.9700 0.9417 0.9480 0.8727 0.8940
40 0.9667 0.9700 0.9423 0.9480 0.8771 0.8940
41 0.9687 0.9700 0.9413 0.9480 0.8819 0.8940
42 0.9694 0.9700 0.9437 0.9480 0.8844 0.8940
43 0.9686 0.9700 0.9437 0.9480 0.8888 0.9050
44 0.9685 0.9700 0.9428 0.9480 0.8925 0.9050
45 0.9685 0.9700 0.9441 0.9480 0.8916 0.9050
46 0.9692 0.9700 0.9429 0.9480 0.8923 0.9050
47 0.9691 0.9800 0.9439 0.9480 0.8926 0.9050
48 0.9690 0.9800 0.9444 0.9480 0.8913 0.9050
49 0.9695 0.9800 0.9446 0.9480 0.8922 0.9050

Grafy závislosti Ø-fitness a Max-fitness na generaci

Červeně jsou znázorněny průměrné hodnoty, modře maximální.

Závěr

Pro lepší představu o vlivu fitness funkce na rychlost nalezení optimálního řešení jsme provedli séri dvaceti měření evoluce padesáti generací pro každou z námi testovaných funkcí. U každé generace jsme stanovili celkovou fitness hodnotu, dále fitness, jako průměr ze všech odpovídajících průměrných fitness hodnot dílčích měření.

Funkce One-Max měla nejvyšší fitness počáteční generace - cca 50%, což se dá vysvětlit způsobem generování chromozomu, při kterém se každá allela obsadí buď 0 nebo 1 se stejnou pravděpodobností. Také měla nejvyšší fitness v poslední generaci, přes 98%, a celkový přírůstek fitness tedy činil cca 48%.

Funkce DF3 začínala na 37% a končila na 56%, přírůstek byl celkem 56%.

Poslední funkce Trap5 se chovala obdobně jako DF3, naměřené počáeční, resp. koncové hodnoty byly 38%, resp. 92% a přírůstek v tomto případě činil 55%. Z uvedených dat lze usuzovat na lepší přizpůsobivost funkcí DF3 a Trap5 než One-Max.