博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ga算法
阅读量:6985 次
发布时间:2019-06-27

本文共 1300 字,大约阅读时间需要 4 分钟。

ga算法是模拟生物进化过程中,适者生存,优胜劣汰规则的一种算法,ga算子有选择,交叉,变异,个体对环境的适应度用适应度函数来衡量,每个个体对应一个适应度值,选择算子淘汰劣质个体,交叉和变异产生新个体,个体组成的种群不断进化,直到产生最优个体。

与普通智能算法不同的是ga算法从多个解开始搜索,对多个值同时进行评估,很少会陷入局部最优解,普通智能算法的缺点就是容易陷入局部最优解,例如粒子群算法,每次都只迭代更新一个个体,一旦陷入局部最小值,很难跳出

下面是matlab实现的ga算法

function testga()size=20;chromelen=8;lr=0.8;mr=0.1;pop=init(size,chromelen);pop2=binary2int(pop);gim=ones(500,8);for i=1:50    fitvalue=calfitvalue(pop);    newpop=selection(pop,fitvalue);    renewpop=crossover(newpop,lr);    uppop=mutation(renewpop,mr);    [bestindividual,bestfit]=best(uppop,fitvalue);    gim(i,:)=bestindividual;    y(i)=bestfit;    pop=uppop;endymax=find(y==max(y));ymax=max(ymax);tt=gim(ymax,:);xmax=binary2int(tt)*2*pi/1023;plot(xmax,ymax,'r*');hold on;fplot('11*sin(6*x)+7*cos(5*x)',[-pi,pi]);endfunction pop=init(size,chromelen)pop=round(rand(size,chromelen));endfunction pop2=binary2int(pop)[px,py]=size(pop);for i=1:py    pop1(:,i)=2.^(py-i).*pop(:,i);endpop2=sum(pop1,2);endfunction fitvalue=calfitvalue(pop)temp=binary2int(pop);x=temp*2*pi/1023;fitvalue=11*sin(6*x)+7*cos(5*x);endfunction newpop=selection(pop,fitvalue)sumfit=sum(fitvalue);profit=fitvalue/sumfit;cumpro=cumsum(profit);[px,py]=size(pop);randval=sort(rand(px,1));newin=1;fitin=1;while newin<=px    if randval(newin)
 

 

转载于:https://www.cnblogs.com/semen/p/6903795.html

你可能感兴趣的文章
Laravel 5.2问题-----postman进api的post请求,为什么出现Forbidden?
查看>>
使用BootStrapValidator来完成前端输入验证
查看>>
NFS客户端、服务器协商读写粒度(rsize、wsize)流程 【转】
查看>>
远程转发
查看>>
消极状态集
查看>>
hadoop 学习笔记:mapreduce框架详解
查看>>
S5PV210 FirstAndroidAPP] ERROR: Application requires API version 版本不对的问题
查看>>
css动画总结
查看>>
搭建Python+Eclipse开发环境
查看>>
了解计算机指令和汇编指令
查看>>
java处理高并发高负载类网站的优化方法
查看>>
【HDOJ】1196 Lowest Bit
查看>>
动软Model 模板 生成可空类型字段
查看>>
jQuery.parseJSON()函数详解
查看>>
使用Nexus配置Maven私有仓库
查看>>
洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA
查看>>
Ionic(ionicframework)一款接近原生的Html5移动App开发框架 中文网
查看>>
[Android Pro] Android 6.0 Root
查看>>
使用单元测试测试简单的首页
查看>>
Selenium - CSS Selector
查看>>