关于遗传算法的实验报告_第1页
关于遗传算法的实验报告_第2页
关于遗传算法的实验报告_第3页
关于遗传算法的实验报告_第4页
关于遗传算法的实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z.关于遗传算法的实验报告一、实验目的:理解和掌握遗传算法的应用及意义,能用一门自己擅长的语言实现遗传算法的根本功能,在此根底上进一步理解和稳固对遗传算法的重要,以便在今后的学习和工作中能有效的运用和借鉴!需要指出的是遗传算法并不是能保证所得到的就是最正确的答案但通过一定的方法可以将误差控制在一定的*围内!实验原理和题目:1.遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文的适者生存的理论,模拟自然进化过程来寻找所求问题的答案。其求解过程是个最优化的过程。一般遗传算法的主要步骤如下:1随机产生一个确定长度的特征字符串组成的初始种群。2对该字符串种群迭代地执行下

2、面的步骤a和步骤b,直到满足停顿准则为止: a计算种群中每个个体字符串的适应值; b应用复制、穿插和变异等遗传算子产生下一代种群。把在后代中表现的最好的个体字符串指定为遗传算法的执行结果,即为问题的一个解。 2.通过编码、设置种群、设置适应度函数、遗传操作、解码产生需要的解。 f(*)=*sin(*)+1, *0,2,求解f(*)的最大值和最小值。 三、实验条件硬件:微型计算机。语言:本实验选用的为C+语言。四、实验内容:建造针对f(*)的遗传算法程序,然后进展运行求解。五、实验步骤:1.确定根本功能:本实验是实现f*的最大值和最小值的求解。2. 对f(*)进展编码:用一个二进制矢量表示一个染

3、色体,由染色体来代表变量*的实数值,这里精度取小数点后6位数,变量*的域长为2,整个区间被分为2*1000000个等长的区间。由于2*1000000在23位二进制数的表示*围呢,所以,编码长度为23位。3. 设计适应度函数:由于要求f*的最值,所以适应度函数可根据f*做适当的改变。最大值:f(*)=*sin(*)+5;最小值:f(*)=1/*sin(*)+5 ; 4.针对f(*)的设计并且实现遗传算法程序:遗传操作主要包括复制、穿插和变异。复制是直接将父代遗传给子代,即根据个体的适应度函数值所度量的优劣程度决定它在下一代是被淘汰还是被遗传。穿插从能进入下一代的个体中选出两个,将两者的局部码值进

4、展交换。变异是根据变异概率选出一个个体,随机对其*位编码进展改变。复制由voidSelection_operation(boolflag);实现;穿插由voidCrossover_operation();实现;变异由voidMution-operation();实现。5. 设计初始种群:默认设置为50个随机产生的23位字节的染色体。6. 调试穿插和变异概率:在常用的穿插和变异概率*围内,结果随穿插和变异的概率的改变而改变,之间差异相对来说不太明显7. 实验参数:实验中主要的参数有遗传代数、群体规模、穿插概率、变异概率。 实验结果:求最大值:求最小值:程序主要代码如下后台代码:class GAv

5、ector Pop;vector SubPop;double Pc;double Pm;int Num_Iteration;int Num_Population;double Optimal_Ma*_*_Solution;double Optimal_Min_*_Solution; double Optimal_Ma*_Function_Vlaue;double Optimal_Min_Function_Value;string Optimal_Individual;vector LunPan;/float fitness;public:GA()Pc=0.25;Pm=0.01;Num_Popu

6、lation=50;Num_Iteration=100;void GA_Init();void Crossover_Operation();void Select_Operation();void Mutation_Operation();void Evaluation(bool);void LunPan_Operation(bool);double Function(double);void E*treme_Value(bool);void Display(bool,int);void Display_M();/ Find the ma* and min valuevoid GA:E*tre

7、me_Value(bool flag)if(flag) Optimal_Ma*_Function_Vlaue=-100;else Optimal_Min_Function_Value=100;for(vector:iterator iter=Pop.begin();iter!=Pop.end();+iter)double t=0.5;double Deum1=0;/*string p=*iter;*/for(int i=(*iter).length()-1;i=0;-i)t=t*2;Deum1+=(*iter)i-48)*t;Deum1=Deum1*(2*PI)/ValueOfString);

8、/coutDeum1 ;double Temp=Function(Deum1);/ 求函数值/coutTempOptimal_Ma*_Function_Vlaue)Optimal_Ma*_Function_Vlaue=Temp;Optimal_Ma*_*_Solution=Deum1;Optimal_Individual=*iter;/fitness=Temp+5;else /find the minimumif(TempOptimal_Min_Function_Value)Optimal_Min_Function_Value=Temp;Optimal_Min_*_Solution=Deum1

9、;Optimal_Individual=*iter;/fitness=Temp+5;/Initialize the Populationsvoid GA:GA_Init()for(int i*=0;i*Num_Population;+i*)string STRing;for(int i=0;i23;i+)int rnd=rand()%2;STRing.push_back(rnd+48);Pop.push_back(STRing);STRing.clear();/for(vector:iterator iter=Pop.begin();iter!=Pop.end();+iter)/cout*it

10、erendl;/Select Operationvoid GA:Select_Operation()/随机选择个体double rnd=0.0001*(rand()%10000);for(vector:iterator iter=LunPan.begin();iter!=LunPan.end();+iter)if(rnd=*iter)SubPop.push_back(*(Pop.begin()+(iter-LunPan.begin();/cout*(Pop.begin()+(iter-LunPan.begin()endl;break;/Crossover Operationvoid GA:Cr

11、ossover_Operation()/随机选择两个个体进展穿插操作double rnd=0.0001*(rand()%10000);for(vector:iterator iter=LunPan.begin();iter!=LunPan.end();+iter)if(rnd=*iter)string STRing=*(Pop.begin()+(iter-LunPan.begin();double rnd1=0.0001*(rand()%10000);for(vector:iterator iter1=LunPan.begin();iter1!=LunPan.end();+iter1)if(r

12、nd1=*iter1)string STRing1=*(Pop.begin()+(iter1-LunPan.begin();int rnd2=rand()%23;char Temp;for(int i=rnd2;iSTRing.length();+i)Temp=STRingi;STRingi=STRing1i;STRing1i=Temp;SubPop.push_back(STRing);SubPop.push_back(STRing1);break;break;/Mutation Operationvoid GA:Mutation_Operation()/选择个体进展突变操作double rn

13、d=0.0001*(rand()%10000);for(vector:iterator iter=LunPan.begin();iter!=LunPan.end();+iter)if(rnd=*iter)string STRing=*(Pop.begin()+(iter-LunPan.begin();int rnd1=rand()%23;if(STRingrnd1=0)STRingrnd1=1;elseSTRingrnd1=0;SubPop.push_back(STRing);break;/coutMutationendl;/Evaluation Operationvoid GA:Evalua

14、tion(bool flag)srand(time(NULL);Pop.clear();GA_Init();E*treme_Value(flag);Display(flag,0);/*srand(time(NULL);*/for(int i=1;i=Num_Iteration;+i)LunPan_Operation(flag);/for(vector:iterator iter=LunPan.begin();iter!=LunPan.end();+iter)/cout*iterendl;/for(int j=0;jNum_Population;j+)/*srand(time(NULL);*/d

15、ouble rnd=0.0001*(rand()%10000);/coutrndendl;if(rndPm)Mutation_Operation();/coutMutationendl;elseif(rnd(Pc+Pm)+j;Crossover_Operation();/coutCrossoverendl;elseSelect_Operation();/coutSelectionendl;/for(vector:iterator iter=SubPop.begin();iter!=SubPop.end();+iter)/cout*iterendl;/coutendl;/coutendl;for(vector:iterator iter=Pop.begin(),iter1=SubPop.begin();iter!=Pop.end();+iter,+iter1)*iter=*iter1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论