MATLAB中如何使用遗传算法

MATLAB中如何使用遗传算法

高质量学习资源免费获取,专注但不限于【Linux】【C/C++/Qt】【FPGA】【数据结构与算法】, 根据多年技术经验纯【原创】,纯【干货】,分享【技术心得】,力求【授人以鱼,更授人以渔】。

matlab有遗传算法工具箱。

核心函数:

(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数  【输出参数】  pop--生成的初始种群  【输入参数】

num--种群中的个体数目

bounds--代表变量的上下界的矩阵  eevalFN--适应度函数

eevalOps--传递给适应度函数的参数

options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如  precision--变量进行二进制编码时指定的精度

F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度)

(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...  termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遗传算法函数  【输出参数】  x--求得的最优解  endPop--最终得到的种群  bPop--最优种群的一个搜索轨迹  【输入参数】

bounds--代表变量上下界的矩阵  evalFN--适应度函数

evalOps--传递给适应度函数的参数  startPop-初始种群

opts[epsilon prob_ops display]--opts(1:2)等同于initializega的options参数,第三个参数控制是否输出,一般为0。如[1e-6 1 0]

termFN--终止函数的名称,如['maxGenTerm']  termOps--传递个终止函数的参数,如[100]  selectFN--选择函数的名称,如['normGeomSelect']  selectOps--传递个选择函数的参数,如[0.08]

xOverFNs--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover']  xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0]

mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']  mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]

【注意】matlab工具箱函数必须放在工作目录下

遗传算法实例1

【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9

【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08  【程序清单】  %编写目标函数

function[sol,eval]=fitness(sol,options)

x=sol(1);

eval=x+10*sin(5*x)+7*cos(4*x);

%把上述函数存储为fitness.m文件并放在工作目录下

initPop=initializega(10,[0 9],'fitness');%生成初始种群,大小为10

[x endPop,bPop,trace]=ga([0 9],'fitness',[],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(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;  x=sol(1:numv);  eval=f(x);  eval=-eval;

%遗传算法的matlab代码  bounds=ones(2,1)*[-5 5];

[p,endPop,bestSols,trace]=ga(bounds,'fitness')

注:前两个文件存储为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是传递给变异函数的参数。

MATLAB中如何使用遗传算法相关教程

matlab如何用遗传算法,MATLAB中如何使用遗传算法相关推荐

  1. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?

    matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);   %画出函数曲 ...

  2. matlab筛选excel数据统计,#excel筛选数据#如何用excel表格中的数据制图

    如何将excel中的部分数据做成图表 数据透视表岂不更简单??? Excel表格作图中X轴的刻度怎么设置? 图表当中的X轴刻度也就是横坐(在2003版本里面叫分类轴)的刻度. 选图表X轴--右键--设 ...

  3. 如何用matlab画旋转面,基于MATLAB在旋转面及其方程教学中应用的教学设计

    汝强 [摘 要]在空间解析几何教学中,MATLAB不仅能将复杂的空间曲面方程精准.直观地用三维图形表现出来,还能以动画的形式将空间复杂曲面任意旋转,使学生能直观地.全方位地观察.理解空间曲面方程所表示 ...

  4. matlab引用表格命令,如何用matlab引用excel表格数据-matlab如何从excel表格中读取数据?...

    怎样利用matlab去读取一个excel表中多个sheet的数... Matlab如何导入excel数据的方法如下: 1.一xlsread()函数,比import简单的多,具体语句: A = xlsr ...

  5. MATLAB实战系列(二十一)-基于遗传算法的BP神经网络优化算法(附MATLAB代码)

    前言 如何用matlab搭建一个简单的Bp神经网络,并且在代码的最后得到Bp神经网络训练后的权值与阈值.实际上,权值与阈值可以在开始训练网络前给其赋值,换句话说,我们给神经网络的权值与阈值想怎么赋值就 ...

  6. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)

    前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...

  7. matlab的数学函数,matlab中常见数学函数的使用

    matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...

  8. MATLAB程序详细解析,遗传算法——matlab代码解析

    遗传算法--matlab代码解析 本文为学习B站老哥数学建模课程之后的一点笔记,图片源自web,代码源自老哥程序包,侵权删. 详细的遗传算法原理不再赘述,百度即可找到. 算法定义 遗传算法(GA)是模 ...

  9. 基于MATLAB程序设计的计算器(中)

    今天我们就来分享一下如何用MATLAB中的guide框架设计一款简易+科学型的计算器,下次分享基于APP Designer框架的.其实,这款计算器去年这个时候已经做好了,没来得及分享. 简易计算器的一 ...

  10. matlab使用invfreqs出错,matlab中butter

    '理想采样信号序列的相位谱') 2.单位脉冲序列 在 MatLab 中,这一函数可以...%直接设计数字滤波器 [n,Wn]=buttord(0.2,0.3,1,25); [b,a]=butter(. ...

最新文章

  1. KeyDown、KeyPress和KeyUp事件的区别与联系
  2. Linux 中 3 个文件打包上传和下载相关命令详解
  3. 从针对接口编程到依赖注入
  4. css案例学习之relative与absolute
  5. 【数据结构与算法】之深入解析“基本计算器”的求解思路与算法示例
  6. remote: GitLab: Author ‘xxx‘ is not a member of team(Git修改和配置本地用户名和邮箱)
  7. python实现队列_Python学习教程:用队列实现栈
  8. Intent实现页面跳转
  9. 【JZOJ 6080】【GDOI2019模拟2019.3.23】IOer
  10. unity3D原生声音系统
  11. js josn prase
  12. java 简单考试系统 ——java程序设计
  13. 从输入url到页面加载完成中间都发生了什么?
  14. java:程序包XXX不存在
  15. 阿里云域名备案流程分析和采坑总结
  16. CF1567C Carrying Conundrum(组合计数+思维)
  17. 硬核小学生:玩自己写的游戏,未来想造机器人
  18. Ubuntu18.04安装美化工具tweak 和 dash to dock
  19. 岁月沧桑景,浮世微语情
  20. 2019年第十届蓝桥杯省赛B组真题解析

热门文章

  1. android手机如何设置提高网速,安卓手机设置网络速度的详细操作步骤
  2. 基于R语言的方差分析
  3. matlab fft 基波,fft 谐波分析_matlab fft频谱分析_傅里叶变换谐波分析
  4. 基于ssm的酒店管理系统
  5. [蓝桥杯-138译码器和74hc573锁存器的关系]
  6. clearcase Commands
  7. 测试电池耗电快的软件,笔记本耗电过快?Win10自带电池检测了解下
  8. 《编程珠玑》学习记录第八章算法设计技术
  9. 人机工程学/人因工程学的定义
  10. 【财政决策支持系统DSS】财政支出OLAP分析模型参考【财政数据仓库DW】