资源简介
遗传算法实现Rosenbrock函数的求解过程,对遗传算法有一个比较详细和简练的代码编写,对于初学者来说很容易看懂!
代码片段和文件信息
#include
#include “time.h“
#include “stdlib.h“
#include
using namespace std;
const int M=8T=3;//M种群大小,T终止代数
const double pc=0.6pm=0.01;//pc交叉概率pm变异概率
struct population //定义群体结构
{
int x[20];
double x1x2;
double fit;
double sumfit;
}p[M];
void initial(population *);//初始化函数
void evaluefitness(population *);//计算适应度
void select(population *);//选择复制函数
void crossover(population *);//交叉函数
void mutation(population *);//变异参数
void decoding(population *);//解码函数
void print(population *);//显示函数
int main()//遗传算法主函数
{
int gen=0;
initial(&p[0]);//随机获得初始解
cout<<“initialed!“< print(&p[0]);
decoding(&p[0]);//先解码
cout<<“decoded!“< print(&p[0]);
evaluefitness(&p[0]);//计算适应度值与累计适值
cout<<“evalued!“< print(&p[0]);
while(gen<=T)
{
cout<<“gen=“< select(&p[0]);//执行选择操作
decoding(&p[0]);
evaluefitness(&p[0]);
cout<<“selected!“< print(&p[0]);
crossover(&p[0]);//执行交叉操作
decoding(&p[0]);
evaluefitness(&p[0]);
cout<<“crossovered!“< print(&p[0]);
mutation(&p[0]);//执行变异操作
decoding(&p[0]);
evaluefitness(&p[0]);
cout<<“mutated!“< print(&p[0]);
gen++;
}
decoding(&p[0]);
evaluefitness(&p[0]);
cout<<“最后得出的满意解为:“< for(int i=0;i cout<<“x1:“< return 0;
}
///////////////初始化函数//////////////////
int rand01()//用于随机取0或1的函数
{
int r;
double q;
q=rand()/(RAND_MAX+0.0);
if(q<0.5)
r=0;
else
r=1;
return r;
}
void initial(population *t)//群体初始化函数
{
int j;
population *po;
srand(time(0));
for(po=t;po for(j=0;j<20;j++)
(*po).x[j]=rand01();
}
/////////////////////计算适应值函数////////////////
void evaluefitness(population *t)//计算适应值函数
{
double fx1x2temp=0.0;
population *po*po2;
for(po=t;po {
x1=(*po).x1;
x2=(*po).x2;
f=100.0*(x1*x1-x2*x2)*(x1*x1-x2*x2)+(1.0-x1)*(1.0-x1);
(*po).fit=f;
}
for(po=t;po {
for(po2=t;po2<=po;po2++)
temp=temp+(*po2).fit;
(*po).sumfit=temp;
temp=0.0;
}
}
/////////////////选择复制函数/////////////////////////
double randab(double a double b)//在区间(ab)内产生一个随机数
{
double cr;
c=b-a;
r
- 上一篇:分子模拟-从算法到应用的C++源代码
- 下一篇:C++与MFC工资管理系统包括论文
相关资源
- 遗传算法解决TSP问题 旅行商问题 程序
- 基于遗传算法的人工生命模拟 AL_GA.
- N皇后C++源代码---回溯法、遗传算法、
- 遗传算法求解Rosenbrock最小值
- 四变量遗传算法求最小值程序C++
- 基于遗传算法的随机规划matlab
- NSGA多目标遗传算法
- 基于遗传算法的最短路径的程序的开
- c++版遗传算法基本算法
- C#遗传算法程序可视化版
- 遗传算法.cpp
- 基于遗传算法的带容量限制的P-media
- C语言-遗传算法的排课源码
- 遗传算法求解TSP旅行商问题C语言源代
- 遗传算法、免疫算法源码C
- 遗传算法求解10城市的旅行商问题的
- 利用遗传算法解决TSP问题c++
- GA遗传算法C++实现,控制台演示
- C++实现的遗传算法实现TSP问题
- 遗传算法C语言版已运行
- C++ 基于遗传算法的矩形排样 具有可视
- 遗传算法和BP人工神经网络算法C++实现
- TSP问题遗传算法C/C++实现
- C++遗传算法
- 排样遗传算法(c++)
- 一个简单的遗传算法的模板
- C++实现遗传算法
- 爬山法、模拟退火法、遗传算法实现
- 遗传算法解决TSP问题代码 C++
- 遗传算法c++实现模板
评论
共有 条评论