实验一-基于遗传算法的函数优化_第1页
实验一-基于遗传算法的函数优化_第2页
实验一-基于遗传算法的函数优化_第3页
实验一-基于遗传算法的函数优化_第4页
实验一-基于遗传算法的函数优化_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

人工智能实验报告实验一基于遗传算法的函数优化1、实验目的掌握Matlab子函数的编写与调用。理解基本遗传算法的原理,并利用程序实现利用遗传算法优化非线性函数的解。2、实验内容与实验要求掌握基本遗传算法方法原理。掌握matlab子函数的编写方法及调用方法。根据基本遗传算法方法原理,编写Matlab程序,优化非线性函数的解。设f(x)=,求maxf(x),xÎ[-2,2],解的精度保留二位小数。3、实验要求自己独立编写Matlab函数。书写实验报告。分析实验结果,用图或表描述出迭代次数与适应度函数值的关系曲线。4、实验设备计算机Matlab软件5、实验结果及分析(1)编码和产生初始群体首先需要确定编码的策略,也就是说如何把[-2,2]区间内的数用计算机语言表示出来。采用二进制形式来解决编码问题,即将某个变量值代表的个体表示为一个{0,1}二进制串。串的长度取决于求解的精度,例如假设求解精度为保留两位小数,由于区间[-2,2]的长度为4,则必须将该区间分为400等分。因为28<400<29,所以编码所用的二进制串至少需要9位。编码:二进制串(b8b7b6…b1b0)与[-2,2]内实数的一一映射:b8b7b6…b1b0二进制串a=<101000111>其对应的十进制数为:转化到[-2,2]内的实数为:产生初始群体:pop1={<100011110>,%a1<001000010>,%a2<110000000>,%a3<110000101>}%a4转化成[-2,2]之间的十进制数即为:pop1={0.24,-1.48,1.01,1.05}(2)定义适应函数和适应值由于目标函数f(x)在[-2,2]内的值有正有负,所以必须通过建立适应函数与目标函数的映射关系,保证映射后的适应值非负,而且目标函数的优化方向应对应于适应值增大的方向,也为endendcleari;clearj;%函数调用2%计算出适应函数值g(x)%原函数f(x)=-x^2-4x+1%取Fmin=-1%g(x)=-x^2-4x%value是pop种群中每个个体的适应值%并将value中小于零的数都赋值为零functionfitness()globalpop;globalvalue;fori=1:400value(i)=0.;forj=1:9ifpop(i,j)==1value(i)=value(i)+pop(i,j)*2^(j-1);endendvalue(i)=-2.+value(i)*4./(2^9-1);value(i)=-value(i)*value(i)-4.*value(i);ifvalue(i)<=0value(i)=0;endendcleari;clearj;%函数调用3%求value的平均值%popl是各数的出现的概率%table中的最后一个值是所有的value值之和%保存最优的个体functioncalculate()globalpop;globaltable;globalpopl;globalvalue;globalavg;globalbest_in;%table的初始化fori=1:400table(i)=0.;end%求最大的value值的个体的序列号max,并把最优个体放在best_in中max=1;fori=1:399ifvalue(i+1)>value(i)max=i+1;endendforj=1:9best_in(j)=pop(max,j);end%求所有value值的总和加到table中求出平均值avg1,再求出均值个体的出现概率avgfori=1:400ifi==1table(i)=table(i)+value(i);elsetable(i)=table(i-1)+value(i);endendavg1=table(400)./400;avg=avg1./table(400);%求value中每个个体出现的概率并且保留在popl中fori=1:400popl(i)=value(i)./table(400);endfori=1:400ifpopl(i)<avgforj=1:9pop(i,j)=best_in(j);endendendcleari;clearq;clearj;cleark;cleartemp;clearmax;clearavg1;%函数调用4%将popl(i)=0的个体除去,并补上其相邻的不为0的pop%将新产生的群pop_new最终复制到popfunctionselection()globalpop;globalpopl;globalbest_in;pop_new(400,9)=0.;fori=1:400ifpopl(i)==0forj=1:9pop_new(i,j)=best_in(j);endelseforj=1:9pop_new(i,j)=pop(i,j);endendendfori=1:400forj=1:9pop(i,j)=pop_new(i,j);endendcleari;clearj;clearm;clearn;%函数调用5%单点交叉操作%pop_size:种群大小%chromo_size:染色体长度%cross_rate:交叉概率functioncrossover()globalpop%设置交叉概率为0.6cross_rate=0.6;fori=1:2:399if(rand<cross_rate)cross_pos=round(rand*9);ifor(cross_pos==0,cross_pos==1)continue;endforj=cross_pos:9temp=pop(i,j);pop(i,j)=pop(i+1,j);pop(i+1,j)=temp;endendendcleari;clearj;clearcross_pos;cleartemp;%函数调用6%单点变异操作%pop_size:种群大小%chromo_size:染色体长度%cross_rate:变异概率functionmutation()globalpop;%设置变异概率为0.01mutate_rate=0.01;fori=1:400ifrand<mutate_ratemutate_pos=round(rand*9);ifmutate_pos==0continue;endpop(i,mutate_pos)=1-pop(i,mutate_pos);endendfori=1:400forj=1:9pop(i,j)=pop(i

温馨提示

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

评论

0/150

提交评论