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

MATLAB遗传算法工具箱简介

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

, S7 e; c: W/ \5 \( P
! k0 x, @# @4 `* N2 c" O( o. Q' `MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB软件是一个功能很强大的工具,其中可以使用GA工具箱进行遗传算法的数据优化,下面给出具体的操作简单的实例。- g0 s) ^' a) u7 P; B+ x
  t' C) k$ s5 M# k: I& f; d, q& Q
①利用GUI打开并使用MATLAB遗传算法工具箱。$ Y* c; k3 _! z# k
打开MATLAB选择应用程序,点击Optimization。
' ^9 E  |6 f" I1 X; \
" V& i6 R. u% p- l0 z7 f
7 Y2 Z6 l! I. N  y
- [) b  ]0 ?3 T$ ?打开后显示优化界面第一个solver选择ga
. M& {9 B. A$ c( a9 U' u2 D* E7 x& }/ Y5 M  o: d+ ?+ c

- \( @# E) [, M
* R3 m2 K' @% p! e+ C函数(注意是单目标只能有一个函数输出值)的MATLAB代码填入Fitness Funtion,输入变量值为2,其它设置options可以使用自定义,也可以使用默认,这里我的种群设置为200。设置完后点击start6 z4 I; L) \' t% K8 A
' [: t$ w# }+ z& o
, Y. f3 W8 J# c; B
$ s" @* f+ H9 T' h
我优化的函数代码:$ z0 J7 ]; v; l+ b. S' v4 l: O
# P# p* m8 c& 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;; {7 d- e: k& N

; P/ `; K  ]5 A9 b3 i: H
' u! K# o3 Z5 T: F) f常用的options) @9 y( j1 K4 W% B3 Q
选项        功能        值+ o" Z+ b) v% ?& ~4 v
CrossoveRFraction        交叉的概率        0-1的小数
7 t* M1 p0 a2 ~' K6 s! G2 |" _EliteCount        用于精英原则,- G0 o8 M* v) p( y2 \
每次遗传中一定会活下来的个体的个数        正整数
' {& ]8 p; n, y5 q5 t# _( {FitnessLimit        适应度的范围        标量/ {-Inf}
5 u2 t( T& H5 V' ]$ X' cGenerations        迭代遗传的次数        正整数
3 l, Q. {: u7 t2 v. P' EInitialPopulation        初始种群        可以用上一次遗传生成的种群# n, L6 ^) c0 |8 v( e- [* d
作为下一次GA的初始种群- o6 P1 U4 j  k1 B( d
; C% d7 g* c% q; R
当然MATLAB官方说这个优化工具箱将在未来的版本中去除,请留意。
+ k5 k5 B0 y  g$ a; _- s; X$ T8 q1 O' [' I. u' X
/ Y8 E. B( `( t. ^) ^/ p% [

9 K% g+ J0 y5 [6 i②利用命令运行GA工具箱
9 j+ n1 a* r2 T) q% v种群大小2004 x( L0 C4 ~/ N1 ~4 A  x
精英解的数量20
) q9 f+ _) Q" T2 Q) e# b9 I" N3 R/ [交叉率0.75! m$ H5 Z7 _3 B& u. W
迭代次数1000, b5 O  H/ u1 d- i  B. M$ X  u9 ~
停止代数(stall generations)与适应度函数值偏差(function tolerance)。若在Stallgenerations设定的代数内,适应度函数值的加权平均变化值小于function tolerance,算法停止
1 m$ g! _" S1 v8 Y% e( G) O0 X  m$ K  z: r
优化的函数是上面GUI中给出的函数% C$ g# R: n. s3 }& ?9 ^/ n

, E) U3 Y6 Y1 Q; F; P
  • 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函数' l% u# q3 ~! h

& j; O8 |! N) ]* ?' A2 {
. I, c3 T% ]& @* m运行时的结果:: t+ F. E- p: h8 A+ e

2 F$ p1 n: a: Q) \9 W& E6 {) W4 S' A3 f7 K
% Q" S8 Q  R" V0 T. i; }

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 16:49 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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