欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    遗传算法matlab代码Word下载.docx

    • 资源ID:7826666       资源大小:27.18KB        全文页数:36页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    遗传算法matlab代码Word下载.docx

    1、rndtmp,kk)=tmp; end fatherrand=fatherrand(:,1:2),A,B; % 变异 rnd=rand(num,N); m,n=size(ind); tmp=randint(m,n,2)+1; tmp(:2)=0; fatherrand=tmp+fatherrand; fatherrand=mod(fatherrand,3); fatherrand(ind)=tmp; %评价、选择 scoreN=scorefun(fatherrand,D);% 求得N个个体的评价函数 score(generation,:)=scoreN; scoreSort,scoreind=

    2、sort(scoreN); sumscore=cumsum(scoreSort); sumscore=sumscore./sumscore(end); childind(1:2)=scoreind(end-1:end); for k=3:N tmprnd=rand; tmpind=tmprnd difind=0,diff(tmpind); if any(difind) difind(1)=1; childind(k)=scoreind(logical(difind); fatherrand=fatherrand(:,childind); generation=generation+1;end

    3、% score maxV=max(score,2);minV=11*300-maxV;plot(minV,*);title(各代的目标函数值F4=D(:,4);FF4=F4-fatherrand(:,1);FF4=max(FF4,1);D(:,5)=FF4;save DData Dfunction D=code load youhua.mat % properties F2 and F3 F1=A(:F2=A(:,2);F3=A(:,3);if (max(F2)1450)|(min(F2)=900) error(DATA property F2 exceed its range (900,14

    4、50) % get group property F1 of data, according to F2 value F4=zeros(size(F1);for ite=11:-1:1 index=find(F2temp=Cmin+objvalue(i);elsetemp=0.0;fitvalue(i)=temp;fitvalue=fitvalue;% 2.4 选择复制% 选择或复制操作是决定哪些个体可以进入下一代。程序中采用赌轮盘选择法选择,这种方法较易实现。% 根据方程 pi=fi/fi=fi/fsum ,选择步骤:% 1) 在第 t 代,由(1)式计算 fsum 和 pi % 2) 产生

    5、 0,1 的随机数 rand( .),求 s=rand( .)*fsum% 3) 求 fis 中最小的 k ,则第 k 个个体被选中% 4) 进行 N 次2)、3)操作,得到 N 个个体,成为第 t=t+1 代种群 selection.m%选择复制function newpop=selection(pop,fitvalue)totalfit=sum(fitvalue); %求适应值之和fitvalue=fitvalue/totalfit; %单个个体被选择的概率fitvalue=cumsum(fitvalue); %如 fitvalue=1 2 3 4,则 cumsum(fitvalue)=1

    6、 3 6 10 ms=sort(rand(px,1); %从小到大排列fitin=1;newin=1;while newin=pxif(ms(newin)fitvalue(fitin)newpop(newin)=pop(fitin);newin=newin+1;fitin=fitin+1;% 2.5 交叉% 交叉(crossover),群体中的每个个体之间都以一定的概率 pc 交叉,即两个个体从各自字符串的某一位置% (一般是随机确定)开始互相交换,这类似生物进化过程中的基因分裂与重组。例如,假设2个父代个体x1,x2为:% x1=0100110% x2=1010001% 从每个个体的第3位开

    7、始交叉,交又后得到2个新的子代个体y1,y2分别为:% y10100001% y21010110% 这样2个子代个体就分别具有了2个父代个体的某些特征。利用交又我们有可能由父代个体在子代组合成具有更高适合度的个体。% 事实上交又是遗传算法区别于其它传统优化方法的主要特点之一。 crossover.m%交叉function newpop=crossover(pop,pc)newpop=ones(size(pop);2:px-1if(randpc)cpoint=round(rand*py);newpop(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py);newpo

    8、p(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:)=pop(i);)=pop(i+1);% 2.6 变异% 变异(mutation),基因的突变普遍存在于生物的进化过程中。变异是指父代中的每个个体的每一位都以概率 pm 翻转,即由“1”变为“0”,% 或由“0”变为“1”。遗传算法的变异特性可以使求解过程随机地搜索到解可能存在的整个空间,因此可以在一定程度上求得全局最优解。 mutation.m%变异function newpop=mutation(pop,pm)pm)mpoint=round(rand*py);if mpointbestfitbestind

    9、ividual=pop(i,:bestfit=fitvalue(i);% 2.8 主程序%遗传算法主程序genmain05.mclearclfpopsize=20; %群体大小chromlength=10; %字符串长度(个体长度)pc=0.6; %交叉概率pm=0.001; %变异概率pop=initpop(popsize,chromlength); %随机产生初始群体20 %20为迭代次数objvalue=calobjvalue(pop); %计算目标函数fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度newpop=selection(pop,f

    10、itvalue); %复制newpop=crossover(pop,pc); %交叉newpop=mutation(pop,pc); %变异bestindividual,bestfit=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值y(i)=max(bestfit);n(i)=i;pop5=bestindividual;x(i)=decodechrom(pop5,1,chromlength)*10/1023;pop=newpop;fplot(10*sin(5*x)+7*cos(4*x),0 10)hold onplot(x,y,r*)hold offz inde

    11、x=max(y); %计算最大值及其位置x5=x(index)%计算最大值对应的x值y=z【问题】求f(x)=x 10*sin(5x) 7*cos(4x)的最大值,其中0=x=9 【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08 【程序清单】 %编写目标函数 functionsol,eval=fitness(sol,options) x=sol(1); eval=x 10*sin(5*x) 7*cos(4*x); %把上述函数存储为fitness.m文件并放在工作目录下 initPop=initializega(10,0 9,fitn

    12、ess%生成初始种群,大小为10 x endPop,bPop,trace=ga(0 9,initPop,1e-6 1 1,maxGenTerm,25,normGeomSelect,. 0.08,arithXover,2,nonUnifMutation,2 25 3) %25次遗传迭代 运算借过为:x = 7.8562 24.8553(当x为7.8562时,f(x)取最大值24.8553) 注:遗传算法一般用来取得近似最优解,而不是最优解。遗传算法实例2 【问题】在5=Xi=5,i=1,2区间内,求解 f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.2 x2.2)-exp(

    13、0.5*(cos(2*pi*x1) cos(2*pi*x2) 22.71282的最小值。【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3 源函数的matlab代码 function eval=f(sol) numv=size(sol,2); x=sol(1:numv); eval=-20*exp(-0.2*sqrt(sum(x.2)/numv)-exp(sum(cos(2*pi*x)/numv) 22.71282; %适应度函数的matlab代码 function sol,eval=fitness(sol,options) numv=size(sol,2)-1; eval=f

    14、(x); eval=-eval; %遗传算法的matlab代码 bounds=ones(2,1)*-5 5; p,endPop,bestSols,trace=ga(bounds,前两个文件存储为m文件并放在工作目录下,运行结果为 p = 0.0000 -0.0000 0.0055 大家可以直接绘出f(x)的图形来大概看看f(x)的最值是多少,也可是使用优化函数来验证。matlab命令行执行命令: fplot(x 10*sin(5*x) 7*cos(4*x),0,9) evalops是传递给适应度函数的参数,opts是二进制编码的精度,termops是选择maxGenTerm结束函数时传递个maxGenTerm的参数,即遗传代数。xoverops是传递给交叉函数的参数。mutops是传递给变异函数的参数。【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0 eval=x+10*sin(5*x)+7*cos(4*x); f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.2+x2.2)-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)+22.71282的最小值。 eval=-20*exp(-0.2*sqrt(sum(x.2)/numv)-exp(sum(cos(2*pi*x)/numv)+22.71282;matl


    注意事项

    本文(遗传算法matlab代码Word下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开