matlab如何用遗传算法,MATLAB中如何使用遗传算法
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中如何使用遗传算法相关推荐
- matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲 ...
- matlab筛选excel数据统计,#excel筛选数据#如何用excel表格中的数据制图
如何将excel中的部分数据做成图表 数据透视表岂不更简单??? Excel表格作图中X轴的刻度怎么设置? 图表当中的X轴刻度也就是横坐(在2003版本里面叫分类轴)的刻度. 选图表X轴--右键--设 ...
- 如何用matlab画旋转面,基于MATLAB在旋转面及其方程教学中应用的教学设计
汝强 [摘 要]在空间解析几何教学中,MATLAB不仅能将复杂的空间曲面方程精准.直观地用三维图形表现出来,还能以动画的形式将空间复杂曲面任意旋转,使学生能直观地.全方位地观察.理解空间曲面方程所表示 ...
- matlab引用表格命令,如何用matlab引用excel表格数据-matlab如何从excel表格中读取数据?...
怎样利用matlab去读取一个excel表中多个sheet的数... Matlab如何导入excel数据的方法如下: 1.一xlsread()函数,比import简单的多,具体语句: A = xlsr ...
- MATLAB实战系列(二十一)-基于遗传算法的BP神经网络优化算法(附MATLAB代码)
前言 如何用matlab搭建一个简单的Bp神经网络,并且在代码的最后得到Bp神经网络训练后的权值与阈值.实际上,权值与阈值可以在开始训练网络前给其赋值,换句话说,我们给神经网络的权值与阈值想怎么赋值就 ...
- MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...
- matlab的数学函数,matlab中常见数学函数的使用
matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...
- MATLAB程序详细解析,遗传算法——matlab代码解析
遗传算法--matlab代码解析 本文为学习B站老哥数学建模课程之后的一点笔记,图片源自web,代码源自老哥程序包,侵权删. 详细的遗传算法原理不再赘述,百度即可找到. 算法定义 遗传算法(GA)是模 ...
- 基于MATLAB程序设计的计算器(中)
今天我们就来分享一下如何用MATLAB中的guide框架设计一款简易+科学型的计算器,下次分享基于APP Designer框架的.其实,这款计算器去年这个时候已经做好了,没来得及分享. 简易计算器的一 ...
- matlab使用invfreqs出错,matlab中butter
'理想采样信号序列的相位谱') 2.单位脉冲序列 在 MatLab 中,这一函数可以...%直接设计数字滤波器 [n,Wn]=buttord(0.2,0.3,1,25); [b,a]=butter(. ...
最新文章
- KeyDown、KeyPress和KeyUp事件的区别与联系
- Linux 中 3 个文件打包上传和下载相关命令详解
- 从针对接口编程到依赖注入
- css案例学习之relative与absolute
- 【数据结构与算法】之深入解析“基本计算器”的求解思路与算法示例
- remote: GitLab: Author ‘xxx‘ is not a member of team(Git修改和配置本地用户名和邮箱)
- python实现队列_Python学习教程:用队列实现栈
- Intent实现页面跳转
- 【JZOJ 6080】【GDOI2019模拟2019.3.23】IOer
- unity3D原生声音系统
- js josn prase
- java 简单考试系统 ——java程序设计
- 从输入url到页面加载完成中间都发生了什么?
- java:程序包XXX不存在
- 阿里云域名备案流程分析和采坑总结
- CF1567C Carrying Conundrum(组合计数+思维)
- 硬核小学生:玩自己写的游戏,未来想造机器人
- Ubuntu18.04安装美化工具tweak 和 dash to dock
- 岁月沧桑景,浮世微语情
- 2019年第十届蓝桥杯省赛B组真题解析
热门文章
- android手机如何设置提高网速,安卓手机设置网络速度的详细操作步骤
- 基于R语言的方差分析
- matlab fft 基波,fft 谐波分析_matlab fft频谱分析_傅里叶变换谐波分析
- 基于ssm的酒店管理系统
- [蓝桥杯-138译码器和74hc573锁存器的关系]
- clearcase Commands
- 测试电池耗电快的软件,笔记本耗电过快?Win10自带电池检测了解下
- 《编程珠玑》学习记录第八章算法设计技术
- 人机工程学/人因工程学的定义
- 【财政决策支持系统DSS】财政支出OLAP分析模型参考【财政数据仓库DW】