遺傳演算法由群體集合和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...