亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++實現簡單遺傳算法

2020-05-23 14:19:45
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C++實現簡單遺傳算法,以實例形式較為詳細的分析了遺傳算法的C++實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了C++實現簡單遺傳算法。分享給大家供大家參考。具體實現方法如下:

 

 
  1. //遺傳算法 GA  
  2. #include<iostream> 
  3. #include <cstdlib> 
  4. #include<bitset> 
  5. using namespace std; 
  6. const int L=5; //定義編碼的長度  
  7. int f(int x) //定義測設函數f(x)  
  8. int result; 
  9. result=x*x*x-60*x*x+900*x+100; 
  10. return result; 
  11. int main(int argc,char *argv[]) 
  12. int a(0),b(32); //定義x的定義域范圍 
  13. const int pop_size=8; //定義種群大小 
  14. // int L; //指定編碼的長度  
  15. const int NG=20; //指定種群最大的繁殖的代數  
  16. int t=0; //當前繁殖的代數  
  17. int p[pop_size]; //定義種群  
  18. int q[pop_size]; //定義繁殖種群 即種群的下一代  
  19. srand(6553); //定義隨機數生成的種子  
  20. double sum; //適值總和  
  21. double avl_sum; //適度平均值  
  22. double p_probability[pop_size]; //適值概率  
  23. double pp[pop_size]; 
  24. double pro; //定義隨機生成的概率  
  25. float pc=0.90; //定義交叉的概率  
  26. float pm=0.05; //定義變異的概率  
  27. cout<<"初始的種群 ";  
  28. for(int i=0;i<pop_size;i++) //生成初始的第0代種群  
  29. p[i]=rand()%31; 
  30. cout<<p[i]<<" "
  31. cout<<endl; 
  32. cout<<endl; 
  33. void Xover(int &,int &); //聲明交叉函數  
  34. //當停止準則不滿足 即繁殖代數沒到最大代數 ,繼續繁殖 
  35. while(t<=NG)  
  36. {  
  37. cout<<"繁殖的代數:t="<<t<<endl; 
  38. sum=0.0; 
  39. for(int i=0;i<pop_size;i++)  
  40. q[i]=p[i]; 
  41. cout<<q[i]<<" "
  42. cout<<endl; 
  43. for(int i=0;i<pop_size;i++) //計算sum  
  44. sum +=f(p[i]); 
  45. avl_sum=sum/pop_size; 
  46. cout<<"sum="<<sum<<endl; 
  47. cout<<"適度平均值="<<avl_sum<<endl;  
  48. for(int i=0;i<pop_size;i++) //計算適值概率  
  49. p_probability[i]=f(p[i])/sum; 
  50. if(i==0) 
  51. pp[i]=p_probability[i]; 
  52. cout<<"pp"<<i<<"="<<pp[i]<<endl; 
  53. else 
  54. pp[i]=p_probability[i]+pp[i-1]; 
  55. cout<<"pp"<<i<<"="<<pp[i]<<endl; 
  56. //cout<<"p_probability"<<i<<"="<<p_probability[i]<<endl; 
  57. //選擇雙親 
  58. for(int i=0;i<pop_size;i++)  
  59. pro=rand()%1000/1000.0; 
  60. if(pro>=pp[0]&&pro<pp[1]) 
  61. p[i]=q[0];  
  62. else if(pro>=pp[1]&&pro<pp[2]) 
  63. p[i]=q[1]; 
  64. else if(pro>=pp[2]&&pro<pp[3]) 
  65. p[i]=q[2]; 
  66. else if(pro>=pp[3]&&pro<pp[4]) 
  67. p[i]=q[3]; 
  68. else if(pro>=pp[4]&&pro<pp[5]) 
  69. p[i]=q[4]; 
  70. else 
  71. p[i]=q[5];  
  72. //雜交算子 
  73. int r=0; 
  74. int z=0;  
  75. for(int j=0;j<pop_size;j++)  
  76. pro=rand()%1000/1000.0; 
  77. if(pro<pc) 
  78. ++z; 
  79. if(z%2==0) 
  80. Xover(p[r],p[j]); 
  81. else 
  82. r=j;  
  83. }  
  84. }  
  85. //變異算子  
  86. for(int i=1;i<=pop_size;i++) 
  87. for(int j=0;j<L;j++) 
  88. pro=rand()%1000/1000.0; //在【0,1】區間產生隨機數 
  89. if(pro<pm) 
  90. bitset<L>v(p[i]);  
  91. v.flip(j); 
  92. p[i]=v.to_ulong(); 
  93. }  
  94. }  
  95. t++; 
  96. cout<<endl; //種群繁殖一代  
  97. cout<<"最終結果:";  
  98. for(int i(0);i<pop_size;i++) //算法結束,輸出結果  
  99. cout<<p[i]<<" "
  100. cout<<endl; 
  101. return 0; 
  102. //定義雜交操作  
  103. void Xover(int &a,int &b)  
  104. {  
  105. int pos; //隨機生成雜交點 即第幾個分量進行相互交換 
  106. pos=rand()%5+1; //在n個分量中,隨機確定第pos個分量  
  107. int j,k; 
  108. j=pos; 
  109. k=pos; 
  110. bitset<L>e(a); 
  111. bitset<L>f(b); //前pos個分量進行相互交換 
  112. bitset<L>g;  
  113. bitset<L>h; 
  114. for(int i=0;i<pos;i++) 
  115. if(e[i]==1) 
  116. g.set(i);  
  117. for(int i=0;i<pos;i++) 
  118. if(f[i]==1) 
  119. h.set(i); 
  120. for(j;j<L;j++) 
  121. if(f[j]==1) 
  122. g.set(j); 
  123. for(k;k<L;k++) 
  124. if(e[k]==1) 
  125. h.set(k); 
  126. a=g.to_ulong(); 
  127. b=h.to_ulong();  

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类第一页| 国产精品美女在线观看| 欧美日韩一区二区在线播放| 日韩av一区二区在线| 亚洲自拍av在线| 91精品国产乱码久久久久久蜜臀| 青青草原一区二区| 欧美亚洲激情在线| 欧美精品videossex性护士| 欧美日韩一区二区在线播放| 欧洲日本亚洲国产区| 欧美劲爆第一页| 亚洲激情免费观看| 疯狂做受xxxx高潮欧美日本| 亚洲国产高潮在线观看| 有码中文亚洲精品| 97成人超碰免| 久久精品国产96久久久香蕉| 国产精品va在线播放我和闺蜜| 亚洲欧美另类在线观看| 性欧美亚洲xxxx乳在线观看| 亚洲综合中文字幕在线| 宅男66日本亚洲欧美视频| 欧美一级黑人aaaaaaa做受| 成人激情黄色网| 日本免费一区二区三区视频观看| 91国产视频在线播放| 成人黄色在线免费| 亚洲男人天堂网站| 日韩在线免费高清视频| 欧美日韩一区二区三区| 国产精品亚洲аv天堂网| 国产精品久久久久91| 亚洲精品资源在线| www.久久久久久.com| 欧美在线视频免费| www.久久色.com| 欧美一级成年大片在线观看| 热99在线视频| 久久中文字幕视频| 亚洲美女性视频| 欧美电影免费观看电视剧大全| 亚洲精品小视频| 免费91麻豆精品国产自产在线观看| 国产欧美日韩综合精品| 国产精品福利网站| 国产区亚洲区欧美区| 欧美成人在线免费| 78色国产精品| 97超级碰在线看视频免费在线看| 一区二区三区视频观看| 精品美女久久久久久免费| 国产精品三级美女白浆呻吟| 欧美精品videos性欧美| 欧美性高潮床叫视频| 欧美激情欧美激情在线五月| 伦理中文字幕亚洲| 亚洲精品有码在线| 91精品国产免费久久久久久| 日本中文字幕不卡免费| 欧美激情综合色| 日韩欧美精品在线观看| 欧美激情视频一区二区三区不卡| 亚洲人成网站在线播| 国产成人久久精品| 中文字幕视频在线免费欧美日韩综合在线看| 欧美成人黑人xx视频免费观看| 在线一区二区日韩| 色香阁99久久精品久久久| 高清欧美一区二区三区| 国产精品电影一区| 丝袜美腿亚洲一区二区| 色多多国产成人永久免费网站| 91九色国产在线| 国语自产精品视频在免费| 久久久亚洲国产| 国产精国产精品| 欧美日韩一区二区三区在线免费观看| 成人免费视频xnxx.com| 欧美另类极品videosbestfree| 欧美成人三级视频网站| 国产亚洲美女精品久久久| 亚洲成人性视频| 日韩中文字幕在线看| 亚洲在线观看视频网站| 欧美电影免费观看网站| 精品视频在线播放免| 91精品久久久久久久久不口人| 国产精品欧美日韩久久| 欧美一级高清免费| 亚洲男人天堂久| 午夜精品www| 69久久夜色精品国产69| 欧美大人香蕉在线| 亚洲色图狂野欧美| 亚洲欧美自拍一区| 国内外成人免费激情在线视频| 欧美日韩亚洲一区二区三区| 2019中文字幕全在线观看| 国产精品永久免费在线| 欧美成人精品一区二区| 综合国产在线视频| 欧美精品久久久久久久久| 国产免费一区视频观看免费| 日韩电影中文 亚洲精品乱码| 美女精品久久久| 久久成人免费视频| 中文字幕精品一区久久久久| 亚洲国产成人精品一区二区| 久久中文字幕国产| 欧美国产亚洲视频| 欧美亚洲激情视频| 亚洲国产成人在线视频| 国产日韩欧美日韩大片| 午夜精品久久久久久久久久久久| 欧美精品在线网站| 日韩在线视频播放| 欧美诱惑福利视频| 日本精品久久中文字幕佐佐木| 国产欧美精品在线播放| 最近2019好看的中文字幕免费| 日韩成人中文字幕在线观看| 亚洲精品视频播放| 日韩av中文字幕在线| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲视频网站在线观看| 亚洲精品成人网| 欧美一级bbbbb性bbbb喷潮片| 久久久久久这里只有精品| 日本伊人精品一区二区三区介绍| 国产精品久久久久久久久久东京| 日韩激情av在线免费观看| 国产精品一区二区电影| 亚洲欧美一区二区三区在线| 亚洲国产古装精品网站| 成人免费大片黄在线播放| 亚洲视频网站在线观看| 国产精品视频内| 91精品中国老女人| 国产日韩欧美另类| 国产一区二区三区日韩欧美| 亚洲精品98久久久久久中文字幕| 色爱av美腿丝袜综合粉嫩av| 亚洲欧美在线播放| 欧美大片欧美激情性色a∨久久| 欧美猛少妇色xxxxx| 成人免费观看49www在线观看| 日韩在线观看你懂的| 亚洲人成77777在线观看网| 久久亚洲欧美日韩精品专区| 亚洲老头同性xxxxx| 一色桃子一区二区| 欧美人与性动交a欧美精品| 国产专区欧美专区| 日韩日本欧美亚洲| 成人福利视频网| 亚洲欧洲国产精品| 日韩精品久久久久| 亚洲aⅴ男人的天堂在线观看| 亚洲成色777777在线观看影院| 欧美激情在线播放| 欧美高清videos高潮hd| 尤物九九久久国产精品的特点| 国产精品免费在线免费|