实验五:遗传算法求解函数最值问题实验

实验五:遗传算法求解函数最值问题实验

ID:38690792

大小:270.50 KB

页数:19页

时间:2019-06-17

实验五:遗传算法求解函数最值问题实验_第1页
实验五:遗传算法求解函数最值问题实验_第2页
实验五:遗传算法求解函数最值问题实验_第3页
实验五:遗传算法求解函数最值问题实验_第4页
实验五:遗传算法求解函数最值问题实验_第5页
资源描述:

《实验五:遗传算法求解函数最值问题实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、.实验五:遗传算法求解函数最值问题实验一、实验目的使用遗传算法求解函数在及y的最大值。二、实验内容使用遗传算法进行求解,篇末所附源代码中带有算法的详细注释。算法中涉及不同的参数,参数的取值需要根据实际情况进行设定,下面运行时将给出不同参数的结果对比。定义整体算法的结束条件为,当种群进化次数达到maxGeneration时停止,此时种群中的最优解即作为算法的最终输出。设种群规模为N,首先是随机产生N个个体,实验中定义了类型Chromosome表示一个个体,并且在默认构造函数中即进行了随机的操作。..然后程序进行若干次的迭代,在每次迭代过程中,进行选择、交叉及变异三个操作

2、。1.选择操作首先计算当前每个个体的适应度函数值,这里的适应度函数即为所要求的优化函数,然后归一化求得每个个体选中的概率,然后用轮盘赌的方法以允许重复的方式选择选择N个个体,即为选择之后的群体。但实验时发现结果不好,经过仔细研究之后发现,这里在x、y取某些值的时候,目标函数计算出来的适应值可能会出现负值..,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响。对于这个问题,我把适应度函数定为目标函数的函数值加一个正数,保证得

3、到的适应值为正数,然后再进行一般的归一化和选择的操作。实验结果表明,之前的实验结果很不稳定,修正后的结果比较稳定,趋于最大值。2.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。这里根据交叉参数crossnum进行多点交叉,首先随机生成交叉点位置,允许交叉点重合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。..3.变异操作首先是根据变异概率probMutation选择要变异的个体。变异时先随机生成变异的位置,然后把改位的01值翻转。经过一定的进化之后得到最终种群,从中选择最优的个体即可得到最终的结果。

4、..4.运行结果借助matlab软件,我们可以知道该函数在该定义域下的图像为:以下设置不同的参数值进行对比试验:表1不同参数的对比实验NlencrossnummaxGenerationprobCrossprobMutate实验一实验二..11010410000.850.152.614332042.7469711725010450000.850.152.871765122.88383150320020450000.850.152.892027452.893073594200304100000.850.152.894406562.888525515200305100000

5、.80.22.888068212.8916507363004041000000.850.152.893637392.89445359以上我们主要对种群规模N,个体染色体长度len,迭代次数maxGeneration进行比较。可以看出,随着种群规模的增大,染色体长度的增长,迭代次数的增加,算法得到的结果越来越精确。当参数规模达到一定程度时,再增加参数的值会明显地增加程序运行时间,但却不一定能明显改善解的质量,反而可能因为一些随机因数而产生质量更差的解,如第6组实验一所示。同时也大概比较了一下多点交叉的交叉点个数crossnum,交叉概率probCross,变异概率pro

6、bMutate等参数,由于参数太多,这里没有一一进行控制变量的比较。大致估算..可知,交叉概率及交叉点的个数影响交叉操作产生新个体的质量,过多的交叉及变化过大的交叉可能会产生不好的结果,而过多的变异也应该会造成算法的不稳定。下面给出以上几个实验结果的实验截图,其中到现在为止结果最好的一个为:其余若干个为:5.实验代码改进后的源代码如下:#include#include#include#include#includeusingnamespacestd;..//程序欲分配内存的数组大小

7、constintmxn=10000;//最大的种群规模constintmxlen=1000;//最大的染色体长度//遗传算法关键参数constintN=200;//种群的个体数constintlen=30;//每个个体的染色体的长度,x和y各占一半constintcrossnum=4;//交叉操作时多点交叉的交叉点个数constintmaxGeneration=2000;//最大进化代数constdoubleprobCross=0.85;//交叉概率constdoubleprobMutation=0.15;//变异概率//个体的染色体类classCh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。