遗传算法实验报告(共16页).doc
《遗传算法实验报告(共16页).doc》由会员分享,可在线阅读,更多相关《遗传算法实验报告(共16页).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上实验五 计算智能(2)1实验目的理解遗传算法的求解思想,掌握遗传算法的原理,通过运用MATLAB编程(或相关编程语言)实现遗传算法,并求解实际问题,对求解结果进行分析。通过分析结果了解遗传算法在求解实际问题的特点和优势。2实验内容编写一个遗传算法及其实际应用的程序,能运用遗传算法求解实际问题。 3实验报告要求(1)简述实验原理及方法,并请给出程序设计流程图。遗传算法本质上是对染色体模式所进行的一系列运算,即通过选择算子将当前种群中的优良模式遗传到下一代种群中,利用交叉算子进行模式重组,利用变异算子进行模式突变。通过这些遗传操作,模式逐步向较好的方向进化,最终得到问题的
2、最优解基本组成为: a.编码(产生初始种群) b.适应度函数 c.遗传算子(selection, crossover, mutation) d.运行参数求下述二元函数的最大值:f(x1,x2)=x12+x22, x1,x2取值1-7的自然数(2)源程序清单:#include #include #include /The definiton of user data/ #define Cmax 100 /certain maximal value #define Cmin 0 /certain minimum value #define LENGHT1 3 /the chromosome len
3、gth of 1st variable #define LENGHT2 3 /the chromosome length of 2nd variable /总染体长度 #define CHROMLENGTH LENGHT1+LENGHT2 const int MaxGeneration = 100; /最大代数 const int PopSize = 10; /样本大小 const double Pc = 0.6; /交叉概率 const double Pm = 0.001; /变异概率 / 数据结构定义/ struct Individual char chromCHROMLENGTH + 1
4、; /一个个体的染色体 double value; /目标值 double fitness; /适应度 ; int generation ; /进化次数 int bestIndex; /最好个体的下标 int worstIndex; /最坏个体的游标 Individual bestIndividual ; /当前一代中的最好个体 Individual worstIndividual ; /当前一代中的坏个体 / best individual by now Individual currentBest ;/ 到目前为止的最好个体 Individual population PopSize ;/
5、样本 / void generateInitialPopulation(); void generateNextPopulation(); void evalutePopulation(); long decomdeChromosome(char*, int, int); void calculateObjectValue(); void calculateFitnessValue(); void findBestAndWorstIndividual(); void performEvolution(); void selectionOperator(); void crossoverOper
6、ator(); void mutationOperator(); void outputTextReport(); / int main() generation = 0; generateInitialPopulation(); evalutePopulation(); while (generation MaxGeneration) generation+; generateNextPopulation(); evalutePopulation(); performEvolution(); outputTextReport(); return 0; / /产生第一代样本/ void gen
7、erateInitialPopulation() int i, j; srand(unsigned)time(NULL); for (i = 0; i PopSize; i+) for (j = 0; j CHROMLENGTH; j+) populationi.chromj = (rand() % 10) 5) ? 0 : 1; populationi.chromCHROMLENGTH = /0; /产生下一代样本 / void generateNextPopulation() selectionOperator(); crossoverOperator(); mutationOperato
8、r(); /变异算子/ void mutationOperator() int i, j; double p; / bit mutation for (i = 0; i PopSize; i+) for (j = 0; j CHROMLENGTH; j+) p = rand() % 1000 / 1000.0; if (p Pm) populationi.chromj = (populationi.chromj = 0) ? 1: 0; /交叉算子/ void crossoverOperator() int i, j; int indexPopSize; int point, temp; do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 遗传 算法 实验 报告 16
限制150内