找回密码
 注册
关于网站域名变更的通知
查看: 535|回复: 1
打印 上一主题 下一主题

MATLAB遗传算法工具箱简介

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-9-25 15:40 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
  a5 P- R' d8 W# s' C, V4 a5 p. z

5 n! v* ~9 S! M' Q$ fMATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB软件是一个功能很强大的工具,其中可以使用GA工具箱进行遗传算法的数据优化,下面给出具体的操作简单的实例。* Z# \  g  u$ q7 L( O: k+ U- ~& u  [
, `: t* Z, M! O. o
①利用GUI打开并使用MATLAB遗传算法工具箱。8 [' `) [- ?" c' y1 X' n
打开MATLAB选择应用程序,点击Optimization。; X9 a* r8 b# ^/ J; c
5 q: P% I  ?0 ?9 L( O

1 m# Q/ Z5 Y* i3 X* T- z, M: u' D  I
打开后显示优化界面第一个solver选择ga
; G7 c% l) N- I2 M7 m  {3 n$ V+ P0 [/ b: y& m4 r& r) |

# t1 ^& c) ^, B
! m" }! T  e  M6 {, X; ~函数(注意是单目标只能有一个函数输出值)的MATLAB代码填入Fitness Funtion,输入变量值为2,其它设置options可以使用自定义,也可以使用默认,这里我的种群设置为200。设置完后点击start2 q$ N# j$ A0 l5 W2 h/ X3 D

8 F! G( z8 V; g5 [3 @ 3 a$ n$ \8 k4 ?; y; S4 T, Y

- D1 e* L' w$ e! P' q7 d1 D我优化的函数代码:- y. T$ X' E% m6 A8 {, E
( A5 K1 e4 F' G
  • function f=GA_demo(x)
  • f1=4*x(1).^3+4*x(1)*x(2)+2*x(2).^2-42*x(1)-14;
  • f2=4*x(2).^3+4*x(1)*x(2)+2*x(1).^2-26*x(1)-22;
  • f=f1.^2+f2.^2;3 ~- k0 ]7 Y6 ~& D5 }+ N7 o
$ z2 N5 p1 \4 f7 J4 z% o2 K% C. x7 z! T

+ {* z$ ^5 s9 U' A常用的options
* k! s2 {% y2 m选项        功能        值
  A$ q, y2 Q; Z1 w1 M0 JCrossoveRFraction        交叉的概率        0-1的小数
9 I+ n# {. P' }6 U* nEliteCount        用于精英原则,
- k0 |* S( x  O" d2 h' L3 ?每次遗传中一定会活下来的个体的个数        正整数0 B3 N. O- N* ?4 Q
FitnessLimit        适应度的范围        标量/ {-Inf}
$ A3 i# F- y# C9 q; I/ i6 sGenerations        迭代遗传的次数        正整数
1 l  Z+ p$ X; yInitialPopulation        初始种群        可以用上一次遗传生成的种群
! g: P& S; G( d* {+ }+ i作为下一次GA的初始种群
+ |  K6 C- S4 p9 T' b  {- l+ g, a+ S% N/ w! M
当然MATLAB官方说这个优化工具箱将在未来的版本中去除,请留意。7 S+ ?+ I- N$ d! n2 @' H6 f

& q3 M5 j. @: t3 q) [! i   E, Q' H: x! r8 _7 r# t# `

; Z& ?, B6 F+ V& U# h+ K②利用命令运行GA工具箱
- [; Y+ ~9 w4 a种群大小2007 `' m+ @  y0 @0 u  N9 Y, k! F
精英解的数量20! ~* ]) R' ^6 F: C' x
交叉率0.75
/ V1 W# o5 W0 r9 u( I0 d6 \迭代次数1000
+ v1 h5 `  h4 N: A停止代数(stall generations)与适应度函数值偏差(function tolerance)。若在Stallgenerations设定的代数内,适应度函数值的加权平均变化值小于function tolerance,算法停止
) C! ~! p$ p  M8 K) s- V; G, k0 @2 D! ^( M
优化的函数是上面GUI中给出的函数
+ I0 j0 L6 m# J5 Q9 J4 C
/ D# z% S# J; g  R
  • clear
  • clc
  • fitnessfcn = @GA_demo;
  • % 适应度函数句柄
  • nvars = 2;% 个体的变量数目
  • options = gaoptimset('PopulationSize',200,'EliteCount',20,'CrossoverFraction',0.75,'Generations',1000,'StallGenLimit',500,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); %参数设置
  • [x_best,fval] =ga(fitnessfcn,nvars,[],[],[],[],[],[],[],options);   % 调用ga函数, B9 p8 @& a# N# R& i% P

4 ]  p- i0 j' F
& Y+ A# C. f* u" ^运行时的结果:' h/ R$ x& ]! x& u9 W( I
+ y0 z& n2 q  |5 ]* g8 Q0 [
+ P' ]( E/ [, C( O
( I* q  s9 `1 S* U$ G+ P) f  _' o# S

该用户从未签到

2#
发表于 2020-9-25 16:35 | 只看该作者
MATLAB遗传算法工具箱简介
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 17:12 , Processed in 0.203125 second(s), 28 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表