You are on page 1of 13

問題一:

程式結構:
第一部分:輸入資料
將一百個座標編碼, 並且給予名稱從 city1 至 city100 將資料一一輸入, 供後

續程式使用

第二部分:輔助程式

1.計算城市間的距離

2.管理程序,:給予處存空間 destinationCities, 從其他功能去抓取城市排序與距離

的資料 並且進行紀錄。
3 第三部分:GA 演算法

1.宣告 GA 演算法的參數
2.由母代產生子代

3.基因交配方法:

方法一:雙點交配 隨機取兩個點 並且將兩個點之間的基因互換

方法二:子罩交配 隨機產生 0、1 的序列 並且只要是 1 的就進行交換

4.突變
方法一,:子罩突變, 隨機給予 0,、1, 只要等於 1, 同時小於突變機率(Pm)就進行

突變

方法二:全基因突變 每一個基因只要小於突變率(Pm)即進行突變

5:選擇的方法

競爭法:

輪盤法:
第三部分結果分析

首先比較輪盤法以及競爭法何者比較好, 以下將會分別用幾組不同的參數設

定來進行比較。

由下表可以看到競爭法明顯比輪盤法來的好, 因為輪盤法雖然是, 計算所有

母代的價值並且總和, 越有價值者越容易被輪盤抽到用來產生子代, 但是不同於

競爭法, 有可能將結果較不好的母代抽出來繼續使用, 所以在這種複雜的路徑問

題中, 若無法有效的讓母代競爭會造成不易往最佳解收斂,。在後續的數據分析將

使用效果較好的競爭法來進行分析。

population mutate_rate
選擇的方法 疊代次數 最短路徑
size
100 100 0.015 125993.59
輪盤法

100 100 0.015 39232.61


競爭法

100 200 0.015 115880.81


輪盤法
100 200 0.015 61800.57
競爭法

100 500 0.015 112861.35


輪盤法

100 500 0.015 39964.20


競爭法

500 200 0.015 127195.68


輪盤法

500 200 0.015 45067.47


競爭法

500 500 0.015 103703.47


輪盤法

500 500 0.015 35921.63


競爭法

500 700 0.015 93581.94


輪盤法

500 700 0.015 32743..21


競爭法

演算法中, 疊代次數越多次, 以及協助搜尋解的群組越大, 實際上月容易得

到更好的解, 當然考量到實際的運算速度, 還是會將群組的規模與疊代次數給予

限制,。改變三次群組的大小(population size),:確實當群組越大能得到相對較好的

解, 但是群體的大小並沒有明顯影響結果當群體只有 50 時, 已經得到 7 萬的解

但是當群體倍增到 5000 時解也只從 7 萬降到 5 萬 因此群組的大小沒有較明顯

的影響。

population size
得到的結果 使用方法 疊代次數

50 69561 Tournament Selection 100


1000 61882 Tournament Selection 100
5000 51290 Tournament Selection 100

首先先決定要經過幾次疊代才能得到較好的結果, 並且以該疊代次數作為停
止點 先測試群組大小為 1000 時當疊代次數越多得到的解果為何。

population size
疊代次數 得到的結果 使用方法

100 73994 Tournament Selection 100


1000 52426 Tournament Selection 100
5000 34494 Tournament Selection 100

透過上列的分析 在 population size 中可以看到當 population size 等於 1000

與 5000 時沒有太過明顯的差距, 以及疊代次數若能達到 5000 次很明顯地可以找

到 34494 相對好的解, 決定以 population size=1000 以及疊代次數=3000 來做後續

的分析。

population size
疊代次數 使用方法 得到的結果

3000 Tournament Selection 200 41559.74

改變 crossover 方法

先以疊代 100,、群組大小 100 來進行試驗, 方法 1 的機率為完全隨機的情況

下進行實驗 方法 2 同樣也是以隨機 0、1 的方式進行實驗 可以看到子罩交配

平均值相對較低且變異數較大 另外最佳解(望小)的最小值 7 萬 4 也相對於雙

點交配的最小值 7 萬 8 來的好 因為雙點交配會友去頭截尾的問題 因為是隨機

取兩個值 但是在不常抽到較接近頭或尾的極端值的情況下 會變成只有中間的

部分做交換 而且如果雙點太過接近時 有可能幾乎不會發生互換的情形 而子

罩交換會較全面且隨機地進行交換 因此能探索到相對較好的解。

另外當交換率越低時 會因為變異程度降低 使得要找到更好的解是越不容


易的 但是交換率不是 1 的情況下 子罩交配的交換的程度會比雙點交配少 因

此當 Pc=0.6 和 Pc=0.2 的情況下 子罩交配都比雙點交配來的好。

雙點交配 子罩交配 雙點交配 子罩交配 雙點交配 子罩交配


實驗次數
(Pc=1) (Pc=1) (Pc=0.6) (Pc=0.6) (Pc=0.2) (Pc=0.2)

1 83373.09 89308.22 80467.75 87675.94 84315.39 90675.93


2 78691.61 83609.22 86796.00 81244.16 85339.25 92472.52
3 91665.37 82712.94 83553.54 89722.11 88450.96 83393.35
4 83663.97 81008 87676.18 87386.43 81291.74 92549.42
5 85880.57 74210.72 86960.91 86345.20 86533.90 89382.01
6 80492.3 88539.52 85791.14 91469.41 82575.93 87245.77
7 82314.24 82768.91 86220.90 85246.03 80636.87 90583.84
8 82738.5 78971.55 87551.53 92161.20 88399.35 84852.69
9 82773.29 84689.52 87793.78 95454.36 80630.81 89415.80
10 86958.92 87432.44 80601.11 90675.93 83353.29 86725.73

平均 83855.19 83325.1 85341.28 88738.08 84152.75 88729.71

標準差 3617.347 4593.219 2818.269 4028.291 2975.617 3099.223

最大值 91665.37 89308.22 87793.78 95454.36 88450.96 92549.42

最小值 78691.61 74210.72 80467.75 81244.16 80630.81 83393.35

改變 mutation 方法

疊代 100,
、群組大小 100 來進行試驗, 突變率太高的時候很難有較好的結果

全基因突變在(Pm=0.015)的時候有較好的結果 突變率太高實際上會造成 解的

過程亂跳 無法朝最佳解的方向去做收斂。當 Pm=0.015 時 可以觀察到全基因

突變因為較全面 每一個基因都有突變的可能 所以對於產生好的子代有較好的

影響 子罩突變得到的解相對較差(值較大)。
全基因突 全基因突
子罩突變 全基因突變 子罩突變 子罩突變
實驗次數 變 變
(Pm=0.015) (Pm=0.015) (Pm=0.05) (Pm=0.5)
(Pm=0.5) (Pm=0.5)

1 83373.09 84562.66 96495.78 118391.26 141693.50 133999.42


2 78691.61 76348.12 98742.15 118243.25 139410.85 126266.50
3 91665.37 78596.81 104220.23 106620.44 139416.50 136051.02
4 83663.97 85741.19 98455.43 117468.21 139518.04 134173.92
5 85880.57 82544.72 108293.64 121192.45 136434.45 134838.48
6 80492.3 83799.68 101967.07 117023.75 149721.64 136595.80
7 82314.24 78078.14 100864.60 120547.18 139317.61 133852.21
8 82738.5 82949.45 105757.49 113501.00 141523.69 135842.29
9 82773.29 83812.51 98459.24 122705.90 139906.69 135483.85
10 86958.92 76432.17 107308.73 115703.88 133092.25 126410.88

平均 83855.19 81286.55 102056.4 117139.7 140003.5 133351.4

標準差 3617.347 3544.995 4138.035 4568.983 4236.405 3807.759

最大值 91665.37 85741.19 108293.6 122705.9 149721.6 136595.8

最小值 78691.61 76348.12 96495.78 106620.4 133092.3 126266.5

進一步比較 crossover 的兩種方法分別搭配 mutation 的兩種方法時 何種組合結

果比較好 以平均來說雙點交配配合子罩突變的平均距離最短。

雙點交配 子罩交配 子罩交配 雙點交配

(Pc=1) (Pc=1) (Pc=1) (Pc=1)


實驗次數
子罩突變 全基因突變 子罩突變 全基因突變

(Pm=0.015) (Pm=0.015) (Pm=0.015) (Pm=0.015)


1 77111.71 77765.80 72254.12 81965.48
2 77405.69 88599.40 74709.07 88570.60
3 76626.51 78134.07 85638.87 75642.19
4 75358.64 89334.98 85906.08 76541.32
5 72781.10 83263.92 80034.87 81690.21
6 76266.44 75842.61 80913.01 76917.98
7 76989.02 81508.83 85915.96 82079.60
8 72865.58 90283.87 86769.48 84762.10
9 75960.04 84037.60 85267.30 90227.70
10 75771.71 80761.56 74826.07 91689.29

平均 75713.64 82953.26 81223.48 83008.65

標準差 1649.394 5112.088 5536.499 5757.652

最大值 77405.69 90283.87 86769.48 91689.29

最小值 72781.1 75842.61 72254.12 75642.19

綜觀以上的比較 從各項設定中選擇出較可能求得最佳解的方法:雙點交配、

Pc=1、子罩突變、Pm=0.015、群體大小 200、疊代次數 3000 來進行求解。

Initial distance: 148495.89594744387


Finished
Final distance: 29462.08750115713
Solution:
|3479, 821|3640, 43|3416, 143|3113, 885|2991, 792|1286, 525|1187, 706|938, 955|984,
965|1115, 1052|1393, 1368|1625, 1651|1724, 1642|1807, 1711|2139, 1806|3520,
1079|3854, 923|3822, 899|3756, 882|2848, 96|2519, 135|2542, 236|2588, 302|1917,
687|1380, 939|738, 1325|742, 1025|457, 334|327, 265|178, 24|241, 341|378, 1048|611,
1384|872, 1559|928, 1700|929, 1766|1251, 1832|1621, 1830|2290, 1810|2573,
1969|2597, 1830|2678, 1825|2728, 1698|2721, 1482|2628, 1479|2482, 1183|2586,
1286|2716, 1432|3447, 1830|3510, 1671|3683, 1533|3911, 1673|3955, 1743|3950,
1558|3874, 1318|3888, 666|3875, 598|3913, 192|3893, 102|3815, 169|2936, 337|3022,
474|2863, 558|2573, 599|2599, 901|2574, 946|2421, 1007|2097, 981|1424, 1728|1247,
1945|1234, 1946|890, 1846|463, 1670|198, 1810|298, 1513|274, 1420|252, 1240|22,
987|53, 857|19, 674|123, 862|161, 906|376, 825|611, 673|839, 620|776, 392|953,
268|1178, 100|1256, 61|1429, 134|1323, 280|1795, 962|1787, 1009|2178, 1619|2576,
1676|2945, 1622|2961, 1605|3085, 1528|3373, 1646|3384, 1498|

You might also like