易采站长站为您分析C++实现简单遗传算法,以实例形式较为详细的分析了遗传算法的C++实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C++实现简单遗传算法。。具体实现方法如下:
- //遗传算法 GA #include<iostream>
- #include <cstdlib> #include<bitset>
- using namespace std; const int L=5; //定义编码的长度
- int f(int x) //定义测设函数f(x) {
- int result; result=x*x*x-60*x*x+900*x+100;
- return result; }
- int main(int argc,char *argv[]) {
- int a(0),b(32); //定义x的定义域范围 const int pop_size=8; //定义种群大小
- // int L; //指定编码的长度 const int NG=20; //指定种群最大的繁殖的代数
- int t=0; //当前繁殖的代数 int p[pop_size]; //定义种群
- int q[pop_size]; //定义繁殖种群 即种群的下一代 srand(6553); //定义随机数生成的种子
- double sum; //适值总和 double avl_sum; //适度平均值
- double p_probability[pop_size]; //适值概率 double pp[pop_size];
- double pro; //定义随机生成的概率 float pc=0.90; //定义交叉的概率
- float pm=0.05; //定义变异的概率 cout<<"初始的种群 ";
- for(int i=0;i<pop_size;i++) //生成初始的第0代种群 {
- p[i]=rand()%31; cout<<p[i]<<" ";
- } cout<<endl;
- cout<<endl; void Xover(int &,int &); //声明交叉函数
- //当停止准则不满足 即繁殖代数没到最大代数 ,继续繁殖 while(t<=NG)
- { cout<<"繁殖的代数:t="<<t<<endl;
- sum=0.0; for(int i=0;i<pop_size;i++)
- { q[i]=p[i];
- cout<<q[i]<<" "; }










