用C 實現蟻群演算法解決TSP問題

2021-05-23 09:47:48 字數 1480 閱讀 7437

using system;

using system.collections.generic;

using system.text;

namespace antsystem

}//初始化資訊素矩陣

for (int i = 0; i < temp; i++)}}

}/**/

///

/// 改變資訊素矩陣,closed_list為較好的路徑

///

///

private void change_message(queueclosed_list)

message[temp_array[temp_array.length - 1], temp_array[0]] = message[temp_array[temp_array.length - 1], temp_array[0]] + lo / ((1 - lo) *convert.toint32(get_weight(closed_list)));

for (int i = 0; i < closed_list.count; i++)}}

}/**

///

/// 輸入乙個鍊錶,計算出其對應的總路徑

///

///

///

public double get_weight(queue closed_list)

sum = sum + city[temp_array[temp_array.length - 1], temp_array[0]];

return sum;}}

/**///

///

/// 產生到i城市後,下乙個可走城市的集合。並將城市編號加入到openlist中。

/// 產生的城市不可以已經存在closedlist中

///

///

private void nextcity()}}

/**///

///

/// 選擇應該走那條路,選擇完路a後,清空openlist,再把a加入到openlist中

///

///

private int choiceroute()

double temp=0;

for (int j = 0; j < openlist.count; j++)

}openlist.clear();

openlist.enqueue(index);

return index;

}/**//

public queuemain_dw()

}if (get_weight(bestlist) > get_weight(closedlist))}}

nextcity();

choiceroute();}}

change_message(bestlist);//修改資訊量

}return bestlist;}}

}

蟻群演算法解決tsp問題

控制蟻群演算法走向的關鍵是資訊素,資訊素類似遺傳演算法的適應性函式,類似退火演算法的評價函式,影響著其中乙隻螞蟻的下一步的選擇。螞蟻 類似遺傳演算法的染色體,就是一條解,在tsp問題中螞蟻的路徑就是tsp的解。資訊素 評價函式,與路徑成反比 迭代次數t 所有螞蟻跑完視為一次迭代週期。程式流程 1,隨...

蟻群演算法解決TSP問題

一 論述 1 演算法 蟻群演算法的基本原理 於自然界螞蟻覓食的最短路徑原理,根據昆蟲學家的觀察,發現自然界的螞蟻雖然視覺不發達,但它可以在沒有任何提示的情況下找到從食物源到巢穴的最短路徑,並且能在環境發生變化 如原有路徑上有了障礙物 後,自適應地搜尋新的最佳路徑。2 單個螞蟻尋找路徑 正反饋 單個的...

蟻群演算法 旅行商(TSP)問題詳解

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