欢迎来到天天文库
浏览记录
ID:22698344
大小:254.21 KB
页数:20页
时间:2018-10-31
《实验五遗传算法求解函数最值问题实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验五:遗传算法求解函:值问题实验一、实验目的使用遗传算法求解函数札xy)=x*+y*coa(8*x)在及ys[L2]
2、的最大值。二、实验内容使用遗传算法进行求解,篇末所附源代码中带有算法的详细注释。算法中涉及不同的参数,参数的取值需要根据实际情况进行设定,下面运行吋将给出不同参数的结果对比。//谢专算雜constintN=200;//种群的个体数constintlen=30;//每个个体的染色体的长度,x和y各占一半constintcrossnum=4;//作时多点的constintmaxGene
3、ration=10000;//最大进化代数constdoubleprobCross=0.85;//constdoubleprobMutation=0.15;//变:定义整体算法的结束条件为,当种群进化次数达到maxGeneration时停止,此吋种群中的最优解即作为算法的最终输出。//控制■代数for(intg=0;g4、or(inti=0;i5、inti=0;i6、晕个体doublerandNum=random01();intj;for(j=0;j7、些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响数值加一个正数化和选择的操作的结果比较稳定对于这个问题,我把适应度函数定为目标函数的函保证得到的适应值为正数,然后再进行一般的归一实验结果表明,之前的实验结果很不稳定,修正后趋于最大值。//适应度函数,为避免负值,把目标函数加一个正数日doublefitn8、ess(constChromosome&c)9、{doublex,y;decode(c>x,y);returnf(x,y)+5;I}1.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。//腿蚊臟进行奴for(inti=0,pre=-1;i10、生成交叉点位置,允许交叉点秉合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。//交叉操作,使用多点交叉曰voidcrossover(Chromosome&cl^Chromosome&c2)//站胶狀隨,刑斿intcrosspoint[mxn]jfor(inti=0;i
4、or(inti=0;i5、inti=0;i6、晕个体doublerandNum=random01();intj;for(j=0;j7、些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响数值加一个正数化和选择的操作的结果比较稳定对于这个问题,我把适应度函数定为目标函数的函保证得到的适应值为正数,然后再进行一般的归一实验结果表明,之前的实验结果很不稳定,修正后趋于最大值。//适应度函数,为避免负值,把目标函数加一个正数日doublefitn8、ess(constChromosome&c)9、{doublex,y;decode(c>x,y);returnf(x,y)+5;I}1.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。//腿蚊臟进行奴for(inti=0,pre=-1;i10、生成交叉点位置,允许交叉点秉合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。//交叉操作,使用多点交叉曰voidcrossover(Chromosome&cl^Chromosome&c2)//站胶狀隨,刑斿intcrosspoint[mxn]jfor(inti=0;i
5、inti=0;i6、晕个体doublerandNum=random01();intj;for(j=0;j7、些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响数值加一个正数化和选择的操作的结果比较稳定对于这个问题,我把适应度函数定为目标函数的函保证得到的适应值为正数,然后再进行一般的归一实验结果表明,之前的实验结果很不稳定,修正后趋于最大值。//适应度函数,为避免负值,把目标函数加一个正数日doublefitn8、ess(constChromosome&c)9、{doublex,y;decode(c>x,y);returnf(x,y)+5;I}1.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。//腿蚊臟进行奴for(inti=0,pre=-1;i10、生成交叉点位置,允许交叉点秉合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。//交叉操作,使用多点交叉曰voidcrossover(Chromosome&cl^Chromosome&c2)//站胶狀隨,刑斿intcrosspoint[mxn]jfor(inti=0;i
6、晕个体doublerandNum=random01();intj;for(j=0;j7、些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响数值加一个正数化和选择的操作的结果比较稳定对于这个问题,我把适应度函数定为目标函数的函保证得到的适应值为正数,然后再进行一般的归一实验结果表明,之前的实验结果很不稳定,修正后趋于最大值。//适应度函数,为避免负值,把目标函数加一个正数日doublefitn8、ess(constChromosome&c)9、{doublex,y;decode(c>x,y);returnf(x,y)+5;I}1.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。//腿蚊臟进行奴for(inti=0,pre=-1;i10、生成交叉点位置,允许交叉点秉合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。//交叉操作,使用多点交叉曰voidcrossover(Chromosome&cl^Chromosome&c2)//站胶狀隨,刑斿intcrosspoint[mxn]jfor(inti=0;i
7、些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响数值加一个正数化和选择的操作的结果比较稳定对于这个问题,我把适应度函数定为目标函数的函保证得到的适应值为正数,然后再进行一般的归一实验结果表明,之前的实验结果很不稳定,修正后趋于最大值。//适应度函数,为避免负值,把目标函数加一个正数日doublefitn
8、ess(constChromosome&c)
9、{doublex,y;decode(c>x,y);returnf(x,y)+5;I}1.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。//腿蚊臟进行奴for(inti=0,pre=-1;i10、生成交叉点位置,允许交叉点秉合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。//交叉操作,使用多点交叉曰voidcrossover(Chromosome&cl^Chromosome&c2)//站胶狀隨,刑斿intcrosspoint[mxn]jfor(inti=0;i
10、生成交叉点位置,允许交叉点秉合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。//交叉操作,使用多点交叉曰voidcrossover(Chromosome&cl^Chromosome&c2)//站胶狀隨,刑斿intcrosspoint[mxn]jfor(inti=0;i
此文档下载收益归作者所有