双倍体遗传算法
在普通的遺傳算法的基礎上,每個個體引入顯隱性染色體。
算法流程:
以下代碼使用雙倍體的遺傳算法解決TSP問題,城市數量34.
```cpp //雙色體遺傳算法 #include<iostream> #include<vector> #include<algorithm> #include<map> #include<cmath> #include<time.h> using namespace std; typedef vector<int> Vi; //typedef vector<Vi> Vii; struct Obj{pair<double, Vi*> xian; // 顯性染色體pair<double, Vi*> yin; // 隱形染色體friend operator <(Obj &o1, Obj &o2){ return o1.xian.first > o2.xian.first; } };Vi x; //城市的橫坐標 Vi y; //城市的縱坐標 /*1. 采用適應度比例分配個體的選擇概率,2. 采用輪盤賭選擇個體3. 采用pxm交叉 4. 采用兩點互換的變異方式 */ bool cmp(Obj * x, Obj *y){ //sort的比較函數 return x->xian > y->xian; } int next_int(){return rand()*(RAND_MAX+1)+rand(); } double next_double(){retur總結
- 上一篇: 服务器宕机原因有哪些?服务器宕机解决方案
- 下一篇: MIT6.824-lab4B-Shard