TSP問題 遺傳演算法的實現

2021-08-31 11:52:13 字數 1021 閱讀 6985

遺傳演算法由群體集合和3個主要操作組成

主要操作:

1. 選擇

2. 交叉

3. 變異

4. 增殖

其中選擇操作將群體中的優良個體選擇出來,而交叉操作和變異操作則根據交叉概率pc和變異概率pm對選擇出的個體進行不同的操作(遺傳演算法的核心),最後使用增殖操作使得種群數量保持穩定。

採用c++物件導向思想進行設計

1.城市的資料結構

class city

};

2.地圖的資料結構

class map

//插入城市

void insertcity(city c)

//返回城市數量

const int getcitynum()

//獲得指定下標的城市

const city getcity(int i)

};

3.解的資料結構

class solution;

public:

solution(map &map)

_solution.push_back(0); //回到原點

randomsolution();

}//初始化 使解隨機

void randomsolution()

}void printsolution()

cout << endl;

}//計算解的值

const double evalute()

return sumofdistance;

}};

4.遺傳演算法主體

/*

以輪盤賭方式計算適應度

*/class ga

void selection()

void crossover()

void mutation()

};

tsp遺傳演算法

include include include include include include using namespace std define m 10 種群規模 define n 31 省會 首府城市數量 define t 10000 遺傳代數 define earth radius 637...

tsp問題 遺傳演算法解決

tsp問題最簡單的求解方法是列舉法。它的解是多維的 多區域性極值的 趨於無窮大的複雜解的空間,搜尋空間是n個點的所有排列的集合,大小為 n 1 可以形象地把解空間看成是乙個無窮大的丘陵地帶,各山峰或山谷的高度即是問題的極值。求解tsp,則是在此不能窮盡的丘陵地帶中攀登以達到山頂或谷底的過程。這一篇將...

遺傳演算法解決TSP問題

基本原理在 中有注釋 1 include2 include 3 include 4 include5 include 6 using std string 7 8struct position9 1617 double tsp int n,struct position position,int t...