1. 程式人生 > >蟻群演算法調參記錄

蟻群演算法調參記錄

蟻群演算法主要有5個引數

a資訊素重要程度,

b啟發式因子重要程度,

c資訊素蒸發係數,

ant螞蟻數量,

iter迭代次數

製作了一個50個節點的地圖,用交叉對比的方法尋找最佳引數

首先調b


螞蟻數100,迭代數100.

很明顯b越小距離和平均值越大,標準差也越大,b=14的時候距離的平均值,最小值,和標準差都幾乎是最小的,當b=20的時候距離變大。

這件事的可能原因是b大一些會使城市的權重和sum變的很小Math.pow(1.0/distance[currentCity][i], b),可能會達到2.397101359805423E-30,這樣會使優勢城市權重佔比變的非常突出。而如果b很小比如如果b=2,sum可能等於9.226501283762148E-7

,這樣會使被選城市的權重佔比看起來優勢模糊。

所以b選擇14.

然後調節a


a對效果的影響看起來像是單調的,隨著a的減小平均值,標準差都在減小。當a=0.0001的時候得到的最小值更小些,所以a取0.0001.

然後調節r

螞蟻數100,迭代數100.

當r等於0的時候意味著資訊素矩陣沒有遺忘,當r=1的時候相當於螞蟻完全是在隨機運動,但是可以看到即便是沒有資訊素矩陣的幫助只是靠著城市之間距離的關係得到的值也並不是非常差,71212相比67801相差大概5%。

通過對比可以發現除了r=1完全遺忘,其餘的值對結果的影響都不是很明顯。也就是說資訊素只要不是全忘了對結果相差不大。

所以r選擇0.5,

然後調節螞蟻數和迭代數


增加螞蟻數和迭代數效果非常明顯,隨著螞蟻數*迭代數的增大,距離平均值和標準差都在減小。耗時也在等比例的增大。

綜合起來

a資訊素重要程度,a越小得到的距離越小

b啟發式因子重要程度,有至少一個最優值

c資訊素蒸發係數,只要不是1,相差並不是特別大

ant螞蟻數量,數量越多效能越好,越穩定,耗時也越大

iter迭代次數,數量越多效能越好,越穩定,耗時也越大

原始資料地圖












相關推薦

演算法調記錄

蟻群演算法主要有5個引數a資訊素重要程度,b啟發式因子重要程度,c資訊素蒸發係數,ant螞蟻數量,iter迭代次數製作了一個50個節點的地圖,用交叉對比的方法尋找最佳引數首先調b螞蟻數100,迭代數100.很明顯b越小距離和平均值越大,標準差也越大,b=14的時候距離的平均值

並行多機排程遺傳演算法調記錄---變異和淘汰哪個更重要?

遺傳演算法主要有3個引數,變異率,淘汰率和染色體數量。本文通過一個並行多機排程問題,通過交叉驗證的實驗的方法找到這幾個引數可能的最優值。有3臺機器要完成30個工件,計算完成所有工件的最短時間。首先優化變異率將淘汰率固定在25%,染色體數量固定在50條,每組引數執行100次,取

演算法學習

** 蟻群演算法的基本原理(簡單概括): ** 剛開始螞蟻按照同等概率選擇各條路徑。 螞蟻在經過的路徑下留下資訊素。 短的路徑螞蟻會率先找到食物源,因此資訊素濃度偏大。 由於資訊素的揮發,較長路徑上的資訊素逐漸消失 特點:正反饋;不容易陷入區域

C++:演算法解決TSP(C++多執行緒版)

TSP問題:旅行商問題,最短迴路。 這裡採用att48資料,鄰接矩陣全部取整數,原資料放在文後。 解決程式碼如下: //#define TEST_INPUT //#define TEST_T //#define TEST_ANT //#define TEST_VALUE #

【機器學習筆記35】演算法

【參考資料】 【1】《蟻群演算法原理及其應用》 【2】測試資料: https://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp/att48.tsp.gz 演算法原理(以TSP問題為例) (1)引數初始化。令時間t=0和迴圈次數

演算法matlab

(一)蟻群演算法的由來 蟻群演算法最早是由Marco Dorigo等人在1991年提出,他們在研究新型演算法的過程中,發現蟻群在尋找食物時,通過分泌一種稱為資訊素的生物激素交流覓食資訊從而能快速的找到目標,據此提出了基於資訊正反饋原理的蟻群演算法。 蟻群演算法的基本思想來源於自然界螞

簡單易懂,演算法解決旅行商問題

轉載宣告: 原文把蟻群解決旅行商問題寫的很清楚,只不過本人認為原文中有一些小錯誤,特此更改(文中紅色加粗字型為改正處),程式碼中出現的一些演算法的小問題也進行了更正(比如程式碼中的貪心演算法),程式碼也附在下面,謝謝博主的分享。 1.關於旅行商(TSP)問題及衍化

智慧演算法---演算法

  1 蟻群演算法及其基本思想 蟻群演算法是一種智慧優化演算法,通過蟻群優化求解複雜問題,ACO在離散優化問題方面有比較好的優越性。     基本思想(以旅行商問題為例)       &nbs

基於基本演算法解決連續優化問題

基於基本蟻群演算法解決連續優化問題 相關連結 TSP_旅行商問題-基本蟻群演算法 基本蟻群演算法解決連續優化問題基本流程 用一個螞蟻代表一個可行解,一個螞蟻含有的資訊包括各變數值; 1、確定迭代週期; 2、確定螞蟻數;

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

TSP_旅行商問題-基本蟻群演算法 旅行商系列演算法 TSP_旅行商問題-貪心演算法 TSP_旅行商問題-模擬退火演算法 TSP_旅行商問題-遺傳演算法 TSP_旅行商問題-基本蟻群演算法 基於基本蟻群演算法解決連續優化

何為啟發式演算法——退火演算法演算法,遺傳演算法

一、退火演算法 模擬退火演算法來源於固體退火原理,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨溫升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,最後在常溫時達到基態,內能減為最小。 模擬退火演算法新解的產生和接受

記一次演算法解決TSP問題

演算法規則 1)範圍 螞蟻觀察到的範圍是一個方格世界,螞蟻有一個引數為速度半徑(一般是3),那麼它能觀察到的範圍就是3*3個方格世界,並且能移動的距離也在這個範圍之內。 2)摺疊環境 螞蟻所在的環境是一個虛擬的世界,其中有障礙物,有別的螞蟻,還有資訊素,資訊素有兩種,一種是找到食物的

2018-4-8演算法---包子陽《智慧優化演算法以及Matlab實現》第五章

資料來源:《智慧優化演算法以及matlab實現》包子陽  餘繼周 編著第五章-----蟻群演算法是一種元啟發式優化演算法(自己理解:就是作為群體的單位個體也就是元,在裡面充當著隨機的選擇搜尋的方向,有助於全域性勘探)啟發:自然界的螞蟻有能力在沒有然和提示的情況下找到從巢穴矩離

演算法原理詳解和matlab程式碼

1原理: 螞蟻在尋找食物源的時候,能在其走過的路徑上釋放一種叫資訊素的激素,使一定範圍內的其他螞蟻能夠察覺到。當一些路徑上通過的螞蟻越來越多時,資訊素也就越來越多,螞蟻們選擇這條路徑的概率也就越高,結果導致這條路徑上的資訊素又增多,螞蟻走這條路的概率又增加,生生

旅行商問題TSP(演算法Java)

旅行商問題,即TSP問題(Traveling Salesman Problem)是數學領域中著名問題之一。假設有一個旅行商人要拜訪N個城市,他必須選擇所要走的路徑,路徑的限制是每個城市只能拜訪一次,而且最後要 回到原來出發的城市。路徑的選擇目標是要求得的路徑路程為所有路徑之中

演算法解決tsp問題

控制蟻群演算法走向的關鍵是資訊素,資訊素類似遺傳演算法的適應性函式,類似退火演算法的評價函式,影響著其中一隻螞蟻的下一步的選擇。 螞蟻:類似遺傳演算法的染色體,就是一條解,在tsp問題中螞蟻的路徑就是tsp的解。 資訊素:評價函式,與路徑成反比 螞蟻數量:一次迭代有多少隻螞

有限級資訊素演算法

有限級資訊素蟻群演算法使用路徑等級作為資訊素更新的依據,相比於傳統的蟻群演算法,捨棄了目標函式作為資訊素更新的依據這一方法。在TSP問題中,目標函式實際就是路徑長度,在傳統的蟻群演算法中資訊素更新量為Q/f(x),其中Q為某一常數,而f(x)就是目標函式值,即路徑長度。而在有限級資訊素蟻群演算法中在

【機器學習】利用演算法求解旅行商(TSP)問題

如果喜歡這裡的內容,你能夠給我最大的幫助就是轉發,告訴你的朋友,鼓勵他們一起來學習。 If you like the content here, you can give me the greatest help is forwarding, tell you

演算法解TSP問題

添加了部分註釋,幾乎沒有改動(引數和城市格式略做改動),原博主的程式碼寫的很容易理解,也是我找到的最短的程式碼了,在此感謝。 程式碼如下: //蟻群演算法關於簡單的TSP問題求解// #include<stdio.h> #include<std

演算法程式碼實現

旅行商問題大都是用遺傳演算法求解,不過蟻群演算法比它高效得多,在百度的蟻群演算法吧裡有人發了個註釋清晰的程式碼,有興趣的可以去研究一下蟻群演算法和模擬退火演算法,這兩者都可以解決旅行商問題。而關於遺傳演算法和模擬退火演算法,部落格園裡的某位牛人很清楚地介紹了,發個連結吧