资源简介
改进的自适应交叉算子、变异算子,实现遗传算法
代码片段和文件信息
#include
#include
#include
#include
#define POPSIZE 500
#define maximization 1
#define minimization 2
#define cmax 100
#define cmin 0
#define length1 10
#define length2 10
#define chromlength length1+length2 //染色体长度
int functionmode=maximization;
int popsize; //种群大小
int maxgeneration; //最大世代数
double pc; //交叉率
double pm; //变异率
struct individual
{
char chrom[chromlength+1];
double value;
double fitness; //适应度
};
int generation; //世代数
int best_index;
int worst_index;
struct individual bestindividual; //最佳个体
struct individual worstindividual; //最差个体
struct individual currentbest;
struct individual population[POPSIZE];
//函数声明
void generateinitialpopulation();
void generatenextpopulation();
void evaluatepopulation();
long decodechromosome(char *intint);
void calculateobjectvalue();
void calculatefitnessvalue();
void findbestandworstindividual();
void performevolution();
void selectoperator();
void crossoveroperator();
void mutationoperator();
void input();
void outputtextreport();
void generateinitialpopulation( ) //种群初始化
{
int ij;
for (i=0;i {
for(j=0;j {
population[i].chrom[j]=(rand()%10<5)?‘0‘:‘1‘;
}
population[i].chrom[chromlength]=‘\0‘;
}
}
void generatenextpopulation() //生成下一代
{
selectoperator();
crossoveroperator();
mutationoperator();
}
void evaluatepopulation() //评价个体,求最佳个体
{
calculateobjectvalue();
calculatefitnessvalue();
findbestandworstindividual();
}
long decodechromosome(char *string int pointint length) //给染色体解码
{
int i;
long decimal=0;
char*pointer;
for(i=0pointer=string+point;i if(*pointer-‘0‘)
{decimal +=(long)pow(2i);
}
return (decimal);
}
void calculateobjectvalue() //计算函数值
{
int i;
long temp1temp2;
double x1x2;
for (i=0; i {
temp1=decodechromosome(population[i].chrom0length1);
temp2=decodechromosome(population[i].chromlength1length2);
x1=4.096*temp1/1023.0-2.048;
x2=4.096*temp2/1023.0-2.048;
population[i].value=100*(x1*x1-x2)* (x1*x1-x2)+(1-x1)*(1-x1);
}
}
void calculatefitnessvalue()//计算适应度
{
int i;
double temp;
for(i=0;i {
if(functionmode==maximization)
{if((population[i].value+cmin)>0.0)
{temp=cmin+population[i].value;}
else
{temp=0.0;
}
}
else if (functionmode==minimization)
{
if(population[i].value {temp=cmax-population[i].value;}
else{ temp=0.0;}
}
population[i].fitness=temp;
}
}
void findbestandworstindividual( ) //求最佳个体和最差个体
{
int i;
double sum=0.0;
bestindividual=population[0];
worstindividual=population[0];
for (i=1;i if (population[i].fitness>bestindividual.fitness){
bestindividual=population[i];
best_inde
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6418 2010-11-26 09:19 genetic.cpp
----------- --------- ---------- ----- ----
6418 1
- 上一篇:使用Qt实现的阴影映射源代码
- 下一篇:VisualScope.rar
相关资源
- 遗传算法数据预测源码
- GA-BP优化算法
- 智能算法——遗传算法代码和讲解实
- 利用遗传算法解决TSP并实现可视化程
- 基于遗传算法的k-means聚类
- 遗传算法求解VRP
- GA遗传算法优化PID.rar
- 基于遗传算法的光学天线优化
- 基于遗传算法的穴盘苗自动移钵路径
- 用一般算法实现FIR滤波器的程序代码
- 基于遗传算法优化的BP神经网络
- 遗传算法优化神经网络GA-BP
- GABP算法原理
- GABP遗传算法优化神经网络BP)进行预
- 遗传算法GA进行BP神经网络的优化
- 《数学建模算法与应用第二版》遗传
- 1小时入门遗传算法----遗传算法excel手
- 1-s2.0-S2210650215000127-main.pdf
- 各类版本遗传算法源代码大集合
- 带时间窗车辆路径算法汇总
- 基于遗传算法的自动化立体仓库的货
- 蚁群算法与遗传算法解决TSP问题
- 改进的遗传算法应用于碎片拼接
- 基于遗传算法GA的PID参数自整定程序源
- 退火遗传算法优化BP神经网络用改进的
- 基于NSGAII方法的多目标遗传算法程序
- 基于遗传算法的多机器人路径规划
- 利用遗传算法解决电力系统最优潮流
- 遗传算法解决TSP问题
- 遗传算法求解车间调度问题代码(包
评论
共有 条评论