遗传算法实验心得.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遗传算法实验心得   1.定义种群和个体   定义种群为S,种群数N=50,其中x,y是染色体中的两个基因组。   2.算法设计   确定编码设计   由于原函数的变量取值包含负数,不方便进行编码,所以将原函数的变量进行转换,从   [-1010]转换成[020],相应的,函数也要进行变换。   根据要求分辨率为,即编码范围至少为[0XX00],设编码位数为n+1,则20/(2^(n+1)-1)=s中最小的个体并选择复制。   4)进入N次2、3操作,得到N个个体,形成新一代种群S1。   交叉   参加交叉运算的染色体个数占全体染色体总数的比例,记为Pc,根据要求本题中选为20/50,28/50,36/50,44/50.   按交叉率所决定参加交叉的染色体个数C,从S1中随机算则C配对进行交叉操作,并用产生的新染色体代替原染色体,得到新种群S2。   其中值得注意的是,代码编写过程中设置了交叉掩码,由于题目中设定交叉位数为个体位数的一半,所以设计代码如下:   cover=[111];%生成交叉掩码mask(1:18)=cover(randperm(18));%打乱   mask(19:36)=cover(randperm(18));   掩码中的片段表明了哪个父体向字体提供变量值,利用交叉操作我们有可能由父代个体   在子代组合成具有更高适应度的个体。   变异   发生变异的基因位数所占全体染色体的基因总位数的比例,即为Pm,根据要求本题中选为1/50,5/50,10/50,15/50.   按变异率所决定的变异次数m,从交叉所得的种群中随机确定m个染色体进行变异操作,用产生的新染色体代替原染色体,得到新种群S3。   最优个体的保存   需要将最高适应度和其对应的最优个体进行存储。   3.结果分析   四组结果比较,如下图所示,可以发现,交叉率和变异率越高越容易达到最优,但是达到最优的速度不定,这应该与没有进行最有个体的保护有关,所以曲线也较为曲折。   得到的最高适应度为,而且由于每次初始化的种群不同,所以交叉率与变异率的对比也有一定的变化因素在。   4.作业心得   附代码:   %函数功能是实现群体的初始化,其中N为群体大小,length是染色体的长度,即二进制的位数   %本次程序中,位数取18   functiongroup=init(N,length)   group=round(rand(N,length));%rand随机生成行数为N,列数为length,单元值为{0,1}的随机数矩阵   %round对矩阵中的每个单元的值进行四舍五入,进行二值化处理,每一列即为随机产生的18位染色体编码   %将二进制数转化为十进制数   %产生[2^n2^(n-1)...1]的行向量,与对应二进制列相乘,然后求和   functiongroupdec=decodebinary(group)   [gx,gy]=size(group);%求group的行列数   fori=1:gy   temp(:,i)=2.^(gy-i).*group(:,i);   end   groupdec=sum(temp,2);%对相乘后的矩阵进行每行求和   %将二进制编码转化为十进制数,其中参数point表示待解二进制码串的起始位置   %因为对于本题来说,有两个变量,用36来表示,每个变量18,那么第一个变量从1开始,第二个变量就从19开始   functiongroupdec=decodestr(group,point,length)   temp=group(:,point:point+length-1);   groupdec=decodebinary(temp);%调用二进制转十进制函数   %选择复制   function[newgroup1]=selection(group,fitvalue)   fsum=sum(fitvalue);%求适应度之和   fitvalue=fitvalue/fsum;%求单个个体被选中的概率   fitvalue=cumsum(fitvalue);%累积概率   [gx,gy]=size(group);   s=sort(unifrnd(0,1,1,gx));%获取随机数组,并从小到大排列,方便适应度选择   fitin=1;   newin=1;   whilenewin0   temp=objvalue(i);   else   temp=;%目标函数值为负数则将该适应度赋为0   end   fitvalue(i)=temp;   end   %求出群体中适应度最高的值   function[bestindividual,bestfit]=best(group,fitva

文档评论(0)

mmrs369 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档