资源简介
改进的自适应交叉算子、变异算子,实现遗传算法
代码片段和文件信息
#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
相关资源
- QGA 量子遗传算法
- 基于遗传算法的排课系统
- 遗传算法的M文件
- 遗传算法PPT(Genetic_Algorithms.ppt)
- 遗传算法的堆石料非线性本构模型参
- 遗传算法越野小车unity5.5
- 车间布局遗传算法
- 遗传算法论文11篇
- 基于遗传算法的立体车库车位调度研
- 遗传算法解决TSP旅行商问题程序开源
- 基于GA-ELM的瓦斯涌出量预测
- 5种多旅行商问题(MTSP)的遗传算法
- 人工智能和遗传算法的结合推荐必读
- 遗传算法0-1背包问题论文
- 改进的k_均值聚类排挤小生境遗传算法
- 基于遗传优化的无刷直流电机模糊控
- GA+ICP代码
- 计算智能大作业合集
- 遗传算法与工程优化_玄光男_程润伟
- NSGA和NSGAII算法
- 群体智能.ppt
- Qt写的遗传算法加画图程序
- 遗传算法优化支持向量机算法
- 遗传算法原理及应用--选择交叉变异算
- 使用神经网络与遗传算法的小游戏
- 遗传算法的适应度函数构造
- 车间调度遗传算法程序
- 遗传算法及其代码实现
- 遗传算法的基本理论与应用
- 遗传算法原理及应用
评论
共有 条评论