Úloha z předmětu 33ZUI, FEL ČVUT, LS 2006
vypracovali: Petr Hašlar, Luděk Dolejský, Roman Hocke
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.
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 |
Červeně jsou znázorněny průměrné hodnoty pro crossover: one-point, modře pro crossover: uniform.
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í.
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 |
Červeně jsou znázorněny průměrné hodnoty, modře maximální.
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.