C++实现简单遗传算法

2020-01-06 13:13:13刘景俊

易采站长站为您分析C++实现简单遗传算法,以实例形式较为详细的分析了遗传算法的C++实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C++实现简单遗传算法。。具体实现方法如下:

 

 
  1. //遗传算法 GA   #include<iostream> 
  2. #include <cstdlib>  #include<bitset> 
  3. using namespace std;  const int L=5; //定义编码的长度  
  4. int f(int x) //定义测设函数f(x)   { 
  5. int result;  result=x*x*x-60*x*x+900*x+100; 
  6. return result;  } 
  7. int main(int argc,char *argv[])  { 
  8. int a(0),b(32); //定义x的定义域范围  const int pop_size=8; //定义种群大小 
  9. // int L; //指定编码的长度   const int NG=20; //指定种群最大的繁殖的代数  
  10. int t=0; //当前繁殖的代数   int p[pop_size]; //定义种群  
  11. int q[pop_size]; //定义繁殖种群 即种群的下一代   srand(6553); //定义随机数生成的种子  
  12. double sum; //适值总和   double avl_sum; //适度平均值  
  13. double p_probability[pop_size]; //适值概率   double pp[pop_size]; 
  14. double pro; //定义随机生成的概率   float pc=0.90; //定义交叉的概率  
  15. float pm=0.05; //定义变异的概率   cout<<"初始的种群 ";  
  16. for(int i=0;i<pop_size;i++) //生成初始的第0代种群   { 
  17. p[i]=rand()%31;  cout<<p[i]<<" "; 
  18. }  cout<<endl; 
  19. cout<<endl;  void Xover(int &,int &); //声明交叉函数  
  20. //当停止准则不满足 即繁殖代数没到最大代数 ,继续繁殖  while(t<=NG)  
  21. {   cout<<"繁殖的代数:t="<<t<<endl; 
  22. sum=0.0;  for(int i=0;i<pop_size;i++)  
  23. {  q[i]=p[i]; 
  24. cout<<q[i]<<" ";  }