资源简介
用C++实现的遗传算法求函数的最大值,可运行
代码片段和文件信息
#include
#include
#include
#include
#include
typedef struct Chrom // 结构体类型,为单个染色体的结构;
{
short int bit[6];//一共6bit来对染色体进行编码,其中1位为符号位。取值范围-64~+64
int fit ;//适应值
double rfit;//相对的fit值,即所占的百分比
double cfit;//积累概率
}chrom;
//定义将会用到的几个函数;
void *evpop (chrom popcurrent[4]);//进行种群的初始化
int x (chrom popcurrent);
int y (int x);
void *pickchroms (chrom popcurrent[4]);//选择操作
void *pickchroms_new (chrom popcurrent[4]); // 基于概率分布
void *crossover (chrom popnext[4]);//交叉操作
void *mutation (chrom popnext[4]);//突变
double r8_uniform_ab ( double a double b int &seed );//生成a~b之间均匀分布的数字
chrom popcurrent [4]; // 初始种群规模为;
chrom popnext [4]; // 更新后种群规模仍为;
void main () // 主函数;
{
int num ; // 迭代次数;
int i j lMax k;
Max=0; // 函数最大值
printf(“\nWelcome to the Genetic Algorithm!\n“); //
printf(“The Algorithm is based on the function y = -x^2 + 5 to find the maximum value of the function.\n“);
enter:printf (“\nPlease enter the no. of iterations\n请输入您要设定的迭代数 : “);
scanf(“%d“ &num); // 输入迭代次数,传送给参数 num;
if(num <1)
goto enter ; // 判断输入的迭代次数是否为负或零,是的话重新输入;
//不同的随机数可能结果不同??那是当所设置的迭代次数过少时,染色体的基因型过早地陷入局部最优
srand(time(0));
evpop(popcurrent ); // 随机产生初始种群;
//是否需要指定x的取值范围呢?6bit来表示数字,第一位为符号位,5bit表示数字大小。所以,取值范围为-32~+31
Max = popcurrent[0].fit;//对Max值进行初始化
for(i =0;i< num;i ++) // 开始迭代;
{
printf(“\ni = %d\n“ i); // 输出当前迭代次数;
for(j =0;j<4; j++)
{
popnext[j ]=popcurrent[ j]; // 更新种群;
}
pickchroms(popnext ); // 挑选优秀个体;
crossover(popnext ); // 交叉得到新个体;
mutation(popnext ); // 变异得到新个体;
for(j =0;j<4; j++)
{
popcurrent[j ]=popnext[ j]; // 种群更替;
}
} // 等待迭代终止;
//对于真正随机数是需要注意取较大的迭代次数
for(l =0;l<3; l++)
{
if(popcurrent [l]. fit > Max )
{
Max=popcurrent [l]. fit;
k=x(popcurrent [l]);//此时的value即为所求的x值
}
}
printf(“\n 当x等于 %d时,函数得到最大值为: %d “k Max);
printf(“\nPress any key to end ! “ );
flushall(); // 清除所有缓冲区;
getche(); // 从控制台取字符,不以回车为结束;
}
void *evpop (chrom popcurrent[4]) // 函数:随
- 上一篇:C语言编写图形登陆界面
- 下一篇:关于MFC对话框与静态HTML交互
相关资源
- 遗传算法c++代码,车间调度
- 遗传算法C++
- 遗传算法C++实现若干
- c++遗传算法,用bitset实现
- 5个遗传算法C语言源码
- 基于遗传算法的最短路径选择问题
- 遗传算法求解中国旅行商问题C语言
- 模拟退火遗传算法的C++程序
- c++利用遗传算法求解函数优化问题
- xcs 基于遗传算法的自动学习分类器系
- 标准遗传算法c语言程序
- 遗传算法求函数最值(C语言实现)
- 遗传算法C语言实现
- 遗传算法解决01背包问题
- 遗传算法求解混合流水车间调度问题
- 遗传算法实现Rosenbrock函数的求解过程
- 遗传算法解决TSP问题 旅行商问题 程序
- 基于遗传算法的人工生命模拟 AL_GA.
- N皇后C++源代码---回溯法、遗传算法、
- 遗传算法求解Rosenbrock最小值
- 四变量遗传算法求最小值程序C++
- 基于遗传算法的随机规划matlab
- NSGA多目标遗传算法
- 基于遗传算法的最短路径的程序的开
- c++版遗传算法基本算法
- C#遗传算法程序可视化版
- 遗传算法.cpp
- 基于遗传算法的带容量限制的P-media
- C语言-遗传算法的排课源码
- 遗传算法求解TSP旅行商问题C语言源代
评论
共有 条评论