1. 程式人生 > >TSP_旅行商問題-基本蟻群演算法

TSP_旅行商問題-基本蟻群演算法

TSP_旅行商問題-基本蟻群演算法

旅行商系列演算法

問題描述

對於n組城市座標,尋找最短路徑使其經過所有城市並回到起點。

問題資料集:tsp.eil51問題

1 37 52
2 49 49
3 52 64
4 20 26
5 40 30
6 21 47
7 17 63
8 31 62
9 52 33
10 51 21
11 42 41
12 31 32
13 5 25
14 12 42
15 36 16
16 52 41
17 27 23
18 17 33
19 13 13
20 57 58
21 62 42
22 42 57
23 16 57
24 8 52
25 7 38
26 27 68
27 30 48
28 43 67
29 58 48
30 58 27
31 37 69
32 38 46
33 46 10
34 61 33
35 62 63
36 63 69
37 32 22
38 45 35
39 59 15
40 5 6
41 10 17
42 21 10
43 5 64
44 30 15
45 39 10
46 32 39
47 25 32
48 25 55
49 48 28
50 56 37
51 30 40
最優解:426

基本蟻群演算法基本流程

用一隻螞蟻的行走路徑代表一個可行解;
1、確定迭代週期;
2、確定螞蟻數;
3、對每隻螞蟻;
3.a、隨機選擇起點;
3.b、選擇下一步;
3.b.a、根據所有與當前節點有關的路徑上的資訊素多少,決定下一步,一般資訊素越多,選擇該路徑的概率越高;

3.b.b、螞蟻有一定概率選擇錯誤,即隨機選擇下一步;
3.c、選擇後,在選擇的路徑上按照一定規則留下一定量的資訊素;
3.d、最終的螞蟻路徑就是本次搜尋的最佳路徑;
4、等待週期結束;

基本蟻群演算法在tsp問題上的應用

用一隻螞蟻的行走路徑代表一個可行解,即一個城市序列;
1、確定迭代週期;

2、確定螞蟻數;
2.a、對每隻螞蟻,隨機選擇起點;
2.a.a、進入迴圈選擇後N-1個城市;
2.a.b、根據所有與當前節點城市相連的路徑上的資訊素多少,決定下一步,即選擇資訊素最多的路徑;
2.a.c、螞蟻有一定概率選擇錯誤,即隨機選擇下一步要走的路徑;
2.a.d、選擇後,在選擇的路徑上按照一定規則留下一定量的資訊素;
2.b、螞蟻路徑就是本次搜尋的路徑;
3、每群螞蟻結束後,所有路徑上的資訊素進行一次衰退,保證越後進行的螞蟻的資訊素影響越大;
4、等待週期結束;

【注1】更新選擇的路徑上的資訊素方式為為

m e s s i j = m e s s i j u + Q l e n

m e s s i j 為從第i個城市到第j個城市的路徑上的資訊素(初始化為該路徑長度的倒數);
u 為資訊素衰退因子;
Q 為常數因子;
l e n 為從起始城市回到到城市的路徑距離;

【注2】更新資訊素的過程分為全域性更新和區域性更新;
【注3】全域性更新資訊素的的大小有多種,以下有三種模型;

  • ACS(Ant Circle System)
    m e s s i j = m e s s i j u + Q l e n

m e s s i j 為從第i個城市到第j個城市的路徑上的資訊素(初始化為該路徑長度的倒數);
u 為資訊素衰退因子;
Q 為常數因子;
l e n 為從起始城市回到起始城市的路徑距離;

  • AQS(Ant Quantity System)
    m e s s i j = m e s s i j u + Q d i c i j

m e s s i j 為從第i個城市到第j個城市的路徑上的資訊素(初始化為該路徑長度的倒數);
u 為資訊素衰退因子;
Q 為常數因子;
d i c i j 為從第i個城市到第j個城市的路徑距離;

  • ADS(Ant Density System)
    m e s s i j = m e s s i j u + Q