遗传算法的实现与应用.doc
文本预览下载声明
人工智能 上机实验报告
学号: 所在系: 信息学院 班级: 惠普开发142班
实验名称: 遗传算法的实现与应用 实验日期 2016年12月10日
实验指导教师 李辉 实验机房 A401
------------------------------------------------------------------------------------------------------
实验目的:
(1)理解遗传算法的基本过程,掌握其选择-复制、交叉、变异三种运算。
(2)掌握基本遗传算法,会建立适应度函数,通过遗传算法的迭代实现优化问题。
2. 实验内容:
3.算法设计(编程思路或流程图或源代码)
(1)
#include stdio.h
#includestdlib.h
#includetime.h
#includemath.h
#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 *,int,int);
void calculateobjectvalue();
void calculatefitnessvalue();
void findbestandworstindividual();
void performevolution();
void selectoperator();
void crossoveroperator();
void mutationoperator();
void input();
void outputtextreport();
void generateinitialpopulation( ) //种群初始化
{
int i,j;
for (i=0;ipopsize; i++)
{
for(j=0;jchromlength;j++)
{
population[i].chrom[j]=(rand()%105)?0:1;
}
population[i].chrom[chromlength]=\0;
}
}
void generatenextpopulation() //生成下一代
{
selectoperator();
crossoveroperator();
mutationoperator();
}
void evaluatepopulation() //评价个体,求最佳个体
{
calculateobjectvalue();
calculatefitnessvalue();
findbestandworstindividual();
}
long decodechromosome(char *string ,int point,int length) //给染色体解码
{
int i;
long decimal=0;
ch
显示全部