遗传算法工具箱使用实例

合集下载

使用MATLAB遗传算法工具实例(详细)

使用MATLAB遗传算法工具实例(详细)

第八章使用MATLAB遗传算法工具最新发布的MA TLAB 7.0 Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱〔Genetic Algorithm and Direct Search Toolbox,GADS〕。

使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比方目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。

本章8.1节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。

8.1 遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS〔遗传算法与直接搜索〕工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以说明。

8.1.1 工具箱的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MA TLAB数值计算环境的性能。

遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。

这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。

所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。

使用语句type function_name就可以看到这些函数的MATLAB代码。

我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。

工具箱函数可以通过图形界面或MA TLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。

遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。

遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。

遗传算法工具箱使用实例

遗传算法工具箱使用实例

%编写目标函数 function y=f(x)
y=5*x+12*sin(3*x)+8*cos(7*x); %把上述函数存储为f.m文件并放在工作目录下
使用fplot(‘y=5*x+12*sin(3*x)+8*cos(7*x)’,[0,9]);画出目标函数,与 遗传算法求出的最优解对比,验证是否正确,
【问题】求f(x)=x^2-7*x+2; 的最小值,其中0<=x<=10 【分析】选择二进制编码,二进制编码长度为20,交叉概率为0.95,变异概率 为0.08
%编写目标函数
function y=f(x)
y=x^2-7*x+2; %把上述函数存储为f.m文件并放在工作目录 下
使用fplot('x^2-7*x+2',[0,10]);画出目标函数,与遗传算法求出的最 优解对比,验证是否正确,
-9
-10
-11 0
10 20
30 40
50 60 70
80 90 100
35
Generation
30
25
20
15
10
5
0
-5
-10
-15
0
1
2
3
4
5
6
7
8
9 10
【问题】求f(x)= 5*x+12*sin(3*x)+8*cos(7*x);的最小值,其中0<=x<=9 【分析】选择二进制编码,二进制编码长度为20,交叉概率为0.95,变异 概率为0.08
Initial population初始种群,如果不指 定初始种群,则系统将运用创建建函数创 建初始种群,

Matlab遗传算法工具箱函数及应用实例

Matlab遗传算法工具箱函数及应用实例

!"#$"%遗传算法工具箱函数及应用实例于玲!!贾春强""!#沈阳化工学院机械工程学院!辽宁沈阳!!$!%"#"&大连理工大学机械工程学院!辽宁大连!!’$"($摘要%基于!"#$"%语言的遗传算法工具箱支持二进制和浮点数编码方式!并且提供了多种选择&交叉&变异的方法’通过具体实例对!"#$"%的遗传算法工具箱的用法进行了说明介绍(关键词%)*+,*-#遗传算法#工具箱#优化中图分类号%./(0!&12文献标识码%3文章编号%!$$"4"(((""$$%)!!4$$"14$"&’()#*+(,"(-./"01$2,*(!"#$"%345++$%+/678*(9:!;<4=>’(?@*"(9A5!#67899,9:);78*<=7*,><?=<;;@=<?A68;<B*<?C<D+=+E+;9:F8;G=7*,.;78<9,9?BH68;<B*<?!!I!%"H F8=<*J"#67899,9:);78*<=7*,><?=<;;@=<?H K*,=*<L<=M;@D=+B9:.;78<9,9?BH K*,=*<!!’I"(H F8=<*N 4%,#B")#C.8;O;<;+=73,?9@=+8G.99,-9P-*D;Q9<)*+,*-DERR9@+D+8;-=<*@B*<Q:,9*+H*<Q+8;@;*@;+8;;P7;,,;<+ 9R;@*+9@D9:D;,;7+=9<H7@9DD9M;@*<Q GE+*+=9<=<+8;.99,-9PH+S9;P*GR,;D*-9E+89S+9ED;+8;.99,-9P*@;=<+@9QE7;Q =<+8=D R*R;@#C+=D+98;,R@;*Q;@D=GR@9M;+8;*-=,=+B+9*<*,BT;+8;UE;D+=9<*<Q D9,M;R@9-,;G ED=<?+8;.99,-9P# D2E F+B-,C G*+,*-J?;<;+=7*,?9@=+8GJ+99,-9PJ9R+=G=T*+=9<:遗传算法与!"#$"%语言!"#$"%是一种开放式软件!经过一定的程序可以将开发的优秀的应用程序集加入到!"#$"%工具的行列(这样!许多领域前沿的研究者和科学家都可以将自己的成果集成到!"#$"%之中!被全人类继承和利用(因此!!"#$"%中含有诸多的面向不同应用领域的工具箱!例如%信号处理工具箱&图像处理工具箱&通信工具箱&系统辨识工具箱&优化工具箱&鲁棒控制工具箱&非线性控制工具箱等!而且工具箱还在不断地扩展之中(A遗传算法工具箱的函数及其功能目前!国内图书市场上有关!"#$"%方面的书籍要么侧重于!"#$"%语言编程介绍!要么侧重于各种工具箱函数的解说!而对怎样用工具箱函数来解决实际问题鲜有涉及(本文将对遗传算法工具箱函数进行说明介绍(遗传算法工具箱&’()包括了许多实用的函数!这些函数按照功能可以分为以下几类%!"#主界面函数主程序*"+,提供了遗传算法工具箱与外部的接口(它的函数格式如下%-./012345/%345/#6"708194:;*"<%4=12>!0?"$@A!0?"$(5>!>#"6#345!45#>!#06,@A!#06,(5>!>0$07#@A!>0$07#(5>!.(?06@A>!.(?06(5>!,=#@A>!,=#(5>B输出参数输入参数!"!核心函数及其它函数具体见表C(G遗传算法工具箱应用实例$%&无约束优化问题利用遗传算法计算函数’<(B;(DEF*>G1<H(BDI*74><J(B/的最大值!其中(!-F!K:选择二进制编码!种群中的个体数目为EF!二进制编. 012345 %345#6"708194求得的最优解!包括染色体和适配度最终得到的种群最优种群的搜索轨迹每一代的最好适应度和平均适应度%4=12>0?"$@A0?"$(5>>#"6#34545#>#06,@A#06,(5>>0$07#@A>0$07#(5>.(?06@A.(?06(5>,=#@A,=#(5>变量上下界矩阵!矩阵的行数确定变量个数适应度函数传递给适应度函数的参数!默认值为+ALMM,初始种群选项(一个向量+05>G$41/564%N45>/2G>5$"O,!这里05>G$41表示两代之间的差距#564%N45>取F表示二进制编码!取E表示浮点数编码#2G>5$"O控制运行中是否输出当前群体和最好结果!取F表示运行中不输出!取E表示运行中输出(默认值为+E0P Q/E/F,终止函数的名称!默认值为+R,".&01)06,R,传递给终止函数的参数!默认值为+REFFR,选择函数的名称!默认值为+R146,&04,S0$07#R,传递给选择函数的参数!默认值为+RF+FTR,交叉函数名称表!以空格分开!浮点数编码默认值为+R/"6G#UV4?06/U0=6G>#G7V4?06/>G,5$0V4?06R,!二进制编码默认值为+R>G,5$0V4?06R,传递给交叉函数的参数表!浮点数编码默认值为+RW/F#W/C#W/FR,!二进制编码默认值为+F+Q,变异函数名称表!以空格分开!浮点数编码默认值为+R%4=12"6O!=#"#G41/,=$#GA41L1G9!=#"#G41141/L1G9!=#"#G41=P1G9!=#"#G41R,!二进制编码默认值为+R%G1"6O!=#"#G41R,传递给变异函数的参数表!浮点数编码默认值为+J/F#Q/EFF/C#J/EFF/C#J/F/F,!二进制编码默认值为+F+FH,表:表A码长度为!"!交叉概率为"#$%!变异概率为"#"&"采用’()*的程序清单如下#+编写目标函数文件,-.#/!文件存放在工作目录下"0123.4,256,7!89:7;<,-.=6,7!,-.4,26>?@<6,7=A>$89:7<@BA"C642=%C@>BDC 3,6=EC @>$F 生成初始种群!大小为A"?"424.G,-<424.4:74H8I:=A"!5"?$;!J,-.K>$L 调用遗传算法函数"5@?82MG ,-?NG ,-O.P:38;<I :=5"?$;!K,-.K !5;!424.G ,-!5A8Q R?A?A;!K/:@’82*8P/K !!%!K2,P/’8,/S 8783.K !5"#"&;!5K:P4.TU,98PK;!5!;!K2,2V240W1.:.4,2K !5!?!%?X;>?$经过!%次遗传迭代!运算结果为#!<D#&%RR "=!><!E#&%%E $即当!为D#&%RR 时!"=!>取最大值!E#&%%E "遗传算法一般用来取得近似最优解!另外!遗传算法的收敛性跟其初始值有关!大家运行上面的命令所得到的结果可能跟我的结果不同或是差别很大!但多执行几次上面的命令%随机取不同的初始群体&一定可以得到近似最优解"#$%有约束优化问题考虑如下问题#/42"=!><=!A Q !>!B=!!Q A>!6#.#&A =!><!A Q !!!BA !"&!=!><!!A EQ !!!BA !"本例中存在两个不等式约束!因此我们需要把有约束问题转换成无约束问题来求解"近年来提出了多种用遗传算法满足约束的技术!工程中常用的策略是惩罚策略!通过惩罚不可行解!将约束问题转换为无约束问题"惩罚项的适值函数一般有加法和乘法两种构造方式!本例采用加法形式的适值函数!惩罚函数由两部分构成!可变乘法因子和违反约束乘法"种群中的个体数目为A""!实数编码!交叉概率为"#$%!变异概率为"#"&"遗传算法求的是函数的极大值!因此在求极小值问题时!需将极大值问题转换为极小值问题求解"采用’()*的程序清单如下#Y 编写目标函数文件04.#/!文件存放在工作目录下"0123.4,256,7!89:7;<04.=6,7!,-.4,26>?@A<6,7=A>$@!<6,7=!>$PA<"#A $P!<"#&$Z 约束条件IA<@AQ !C @!BA $I!<@A#[!\EQ @!#[!BA $Z 加惩罚项的适值40?=IA]<">^=I!]<">89:7<=@AQ !>#[!B=@!Q A>#[!$876889:7<=@AQ !>#[!B=@!Q A>#[!BPAC I ABP!CI!$89:7<Q 89:7$82M_设置参数边界!本例边界为!O "N,12M6<,286%!!A &C5Q A !A;$‘调用遗传算法函数"5@O82MG,-ONG,-O.P:38;<I:=N,12M6!KW42K>O $a 性能跟踪"-7,.=.P:38=b !A>!.P:38=b !X>!KPQ K>$T,7MO,2-7,.=.P:38=b !A>!.P:38=b !!>!KNC K>$@7:N87=K’828P:.4,2K>cOd7:N87=Ke4..2866K>$f8I82M=K 解的变化K !K 种群平均值的变化K>$经过A""次遗传迭代!运算结果为#!<O5AOA;$此时极小值89:7=!><A $I A =!><"$I !!!><"#!%!显然最优解满足约束条件"!结论遗传算法工具箱功能强大!包括了大量的算子函数!提供各种类型的选择策略!交叉’变异的方式!适用于各类不同的实际问题"由于大多数实际问题都是有约束条件的!所以!用遗传算法处理约束条件的方法仍属于难点问题!需要进一步的研究和探讨"(参考文献)(")高尚#基于$%&’%(遗传算法优化工具箱的优化计算())*微型电脑应用!+,,+!"-.-/#0+102*(+)姜阳!孔峰*基于$%&’%(遗传算法工具箱的控制系统设计仿真())*广西工学院学报!+,,"!"+.23#41-*(5)飞思科技产品研发中心*$%&’%(4*0辅助优化计算与设计($)*北京#电子工业出版社!+,,5*%编辑阳光&作者简介#于玲%A$D$Q &!女!硕士!主要从事机电液一体化的教学及科研工作"收稿日期#!""EQ "DQ "R!!!!!!!!!!初始化函数424.4:74H8,I :#/P,178..8#/2,P/’8,/S 8783.#/.,1P2S 8783.#/64/-78U,98P#/3d3743U,98P#/7428PU,98P#/7428P,PM8PU,98P#/N,12M:PdW1.:.4,2#/2,2V240W1.:.4,2#//:@’82*8P/#/,-.W:@’82*8P/#/0!N#/N!0#/变异交叉二进制格式和浮点数格式的初始化函数有序数据的初始化函数常用的轮盘赌法基于归一化的优先选择法竞争选择法二进制格式或浮点数格式的交叉函数有序数据的交叉函数!可以将演化函数组合使用浮点数格式的变异函数主程序I :#/用来判断是否满足终止条件用来计算遗传算法满足精度要求时!染色体所需要的二进制位数用来完成二进制数和浮点数之间的相互转换选择函数终止函数二进制表示函数演化函数3:73N4.6#/424.4:74H8I :#/表"。

使用MATLAB遗传算法工具实例(详细)93083

使用MATLAB遗传算法工具实例(详细)93083

第八章使用MATLAB遗传算法工具最新发布的MATLAB 7.0 Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱〔Genetic Algorithm and Direct Search Toolbox,GADS〕。

使用遗传算法与直接搜索工具箱,可以扩展MATLAB与其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以与目标函数没有导数的情况。

本章8.1节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具与其使用方法。

8.1 遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS〔遗传算法与直接搜索〕工具箱的特点、图形用户界面与运行要求,解释如何编写待优化函数的M文件,且通过举例加以说明。

的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MATLAB数值计算环境的性能。

遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。

这些算法使我们能够求解那些标准优化工具箱X围之外的各种优化问题。

所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。

使用语句type function_name就可以看到这些函数的MATLAB代码。

我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。

工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。

遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。

遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。

遗传算法的MATLAB实现实例

遗传算法的MATLAB实现实例

遗传算法(Genetic Algorithm)的MATLAB应用实例To use Optimization Toolbox software, you need to1 Define your objective function in the MATLAB language, as a function file or anonymous function.2 Define your constraint(s) as a separate file or anonymous function.首先建立目标函数的M文件;例1:如目标函数 min 100( )+ ;Function File for Objective FunctionA function file is a text file containing MATLAB commands with the extension .m. Create a new function file in any text editor, or use the built-in MATLAB Editor as follows:(1)At the command line enter:edit (想要建立的.m文件的文件名)The MATLAB Editor opens.(2) In the editor enter:function f = rosenbrock(x)f = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;(3) Save the file by selecting File > Save.把M文件保存在MATLAB默认的工作目录中;在命令行中输入命令:cd ,就可以得到MATLAB默认的工作目录。

To check that the M-file returns the correct value, enter rosenbrock ([1 1])ans =注释:如果想建立rosenbrock.m文件,那么步骤1变为edit rosenbrock。

使用MATLAB遗传算法工具实例

使用MATLAB遗传算法工具实例

使用MATLAB遗传算法工具实例MATLAB中提供了一种用于优化问题的遗传算法工具箱,可以帮助用户通过遗传算法来寻找最优解。

下面是一个示例,展示了如何使用MATLAB遗传算法工具箱解决一个简单的优化问题。

假设我们要求解以下函数的最大值:f(x)=x^2,其中x的取值范围在[-10,10]之间。

首先,我们需要定义适应度函数,即用来评估个体适应度的函数。

在本例中,适应度函数可以直接使用目标函数,即f(x)=x^2、在MATLAB中,我们可以使用函数句柄来定义适应度函数:```matlabfunction fitness = fitnessFunction(x)fitness = x^2;end```接下来,我们需要配置遗传算法的参数。

我们可以使用`gaoptimset`函数来创建一个参数结构体,并设置算法的各个参数:```matlaboptions = gaoptimset('PopulationSize', 50, 'Generations', 100, 'FitnessLimit', 1e-6, 'StallGenLimit', 10);```上述代码将设置种群大小为50,迭代次数为100,适应度极限为1e-6(即当适应度较小时停止迭代),最大迭代代数为10(即如果连续10代迭代没有改进,则停止迭代)。

接下来,我们需要调用`ga`函数来运行遗传算法并求解最优解。

我们可以使用以下代码来实现:```matlab```最后,我们可以打印出最优解及其目标函数值:```matlabdisp(['Optimal solution: x = ' num2str(x) ', f(x) = 'num2str(fval)]);```上述代码中,`num2str`函数用于将数字转换为字符串,然后使用`disp`函数打印出最优解和目标函数值。

基于Matlab遗传算法工具箱的优化计算实现

基于Matlab遗传算法工具箱的优化计算实现

基于Matlab遗传算法工具箱的优化计算实现一、概述随着科技的发展和社会的进步,优化问题在众多领域,如工程设计、经济管理、生物科学、交通运输等中扮演着越来越重要的角色。

优化计算的目标是在给定的约束条件下,寻找一组变量,使得某个或某些目标函数达到最优。

许多优化问题具有高度的复杂性,传统的数学方法往往难以有效求解。

寻求新的、高效的优化算法成为了科研人员的重要任务。

遗传算法(Genetic Algorithm, GA)是一种模拟自然选择和遗传学机制的搜索算法,通过模拟自然界的进化过程,寻找问题的最优解。

自20世纪70年代初由美国密歇根大学的John Holland教授提出以来,遗传算法因其全局搜索能力强、鲁棒性好、易于与其他算法结合等优点,被广泛应用于各种优化问题中。

1. 遗传算法简介遗传算法(Genetic Algorithm, GA)是一种模拟自然选择和遗传学机制的优化搜索算法。

该算法起源于对生物进化过程中遗传机制的研究,通过模拟自然选择和遗传过程中的交叉、突变等操作,在搜索空间内寻找最优解。

自20世纪70年代初由John Holland教授提出以来,遗传算法已在多个领域取得了广泛的应用,包括函数优化、机器学习、模式识别、自适应控制等。

遗传算法的基本思想是将问题的解表示为“染色体”,这些染色体在算法中通过选择、交叉和突变等操作进行演化。

选择操作模仿了自然选择中“适者生存”的原则,根据适应度函数对染色体进行筛选交叉操作则模拟了生物进化中的基因重组过程,通过交换染色体中的部分基因,生成新的个体突变操作则是对染色体中的基因进行小概率的随机改变,以维持种群的多样性。

在遗传算法中,种群初始化是算法的起点,通过随机生成一组初始解作为初始种群。

根据适应度函数对种群中的个体进行评估,选择出适应度较高的个体进行交叉和突变操作,生成新的种群。

这个过程不断迭代进行,直到满足终止条件(如达到最大迭代次数或找到满足精度要求的最优解)为止。

matlab遗传算法工具箱及其应用

matlab遗传算法工具箱及其应用
7
函数crtbp
crtbp % 创建二进制串染色体 ① 创建一个长度为9、有6个个体的随机种群。 [Chrom,Lind,BaseV] = crtbp (6,9)
8
函数crtbp
② 创建一长度为9有6个个体的随机种群,这里前四个基因 位是基本字符{0,1,2,3,4,5,6,7},后五个基因位是 基本字符{0,1,2,3}。 BaseV = crtbase([4 5], [8 4]); [Chrom,Lind,BaseV] = crtbp(6,BaseV) ; 或 [Chrom,Lind,BaseV] = crtbp(6,[8 8 8 8 4 4 4 4 4]);
23
函数 reins
(1)下面的程序代码为在6个个体的父代种群中插入子代种 群。 FieldDR1=[-10,-5,-3,-1;10,5,3,1]; % 定义边界变量 Chrom=crtrp(6,FieldDR1); % 产生6个个体的父代种群
24
函数 reins
(2)FieldDR2=[-100,-50,-30,-20;100,50,30,20]; % 定义 边界变量 SelCh=crtrp(2,FieldDR2); % 产生2个个体的子代种群
26
函数 rws
轮盘赌选择方法举例。考虑8个个体的种群,假设已计算出 适应度FitnV: FitnV = [1.50; 1.35; 1.21; 1.07; 0.92; 0.78; 0.64; 0.5] 选择6个个体的索引: NewChrIx = rws(FitnV,6) FitnV(NewChrIx,:)
20
函数 reins
功能:重插入子代到种群。 格式:① Chrom = reins(Chrom,SelCh) ② Chrom = reins(Chrom,SelCh,SUBPOP) ③ Chrom = reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh) ④ [Chrom,ObjVCh]= reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh,ObjVSel) 详细说明:reins完成插入子代到当前种群,用子代代替父代 并返回结果种群。子代包含在矩阵SelCh中,父代在矩阵 Chrom中,Chrom和Selch中每一行对应一个个体。 SUBPOP是一可选参数,指明Chrom和SelCh中子种群的个 数。如果SUBPOP省略或为NaN,则假设SUBPOP=1。在 Chrom和SelCh中每个子种群必须具有相同大小。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

的进化特性,搜素过程中不需要问题的内在性质,对于任意形式的
目标函数和约束,无论是线性的还是非线性的,离散的还是连续的 都可处理。
2.进化算子的各态历经性使得遗传算法能够非常有效地进行概
率意义的全局搜索。 3.遗传算法对于各种特殊问题可以提供极大的灵活性来混合构
造领域独立的启发式,从而保证算法的有效性。
遗传算法工具箱使用实例
遗传算法运算流程:
Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量 个数、交叉概率、变异概率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。求解变量的约束条件,设置变量的取值范 围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应 度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。 Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最 优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。
优解对比,验证是否正确。
35 30 25 20 15 10 5 0 -5 -10 -15
0
1
2
3
4
5
6
7
8
9
10
Best: -10.2183 Mean: -10.2173 -1 -2 -3 -4
Best fitness Mean fitness
Fitness value
-5 -6 -7 -8 -9 -10 -11
%编写目标函数 function y=f(x) y=5*x+12*sin(3*x)+8*cos(7*x); %把上述函数存储为f.m文件并放在工作目录下
使用fplot(‘y=5*x+12*sin(3*x)+8*cos(7*x)’,[0,9]);画出目标函数,与 遗传算法求出的最优解对比,验证是否正确。
90
100
70 60 50 40 30 20 10 0 -10 -20
遗传算法求出最小值为: x=1.38,y=-10.9692
根据原函数可以看出求出的 最优解与实际最优解基本相等。
0
1
2
3
4
5
6
7
8
9
遗传算法是一种全局优化概率算法,主要的优点有 :
1.遗传算法对所求解的优化问题没有太多的数学要求,由于他
options:选择编码形式(浮点编码或二进制编码)precision F_or_B
Precision:变量进行二进制编码时指定的精度,F_:选择浮点编码, _B:为二进制编码
遗传算法函数: Function[x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,
0
10
20
30
40
35 30
50 60 Generation
70
80
90
100
遗传算法求出最小值为: x=3.322,y=-10.2173
25 20 15 10 5 0 -5 -10 -15
0
1
2
3
4
5
6
7
8
9
10
【问题】求f(x)= 5*x+12*sin(3*x)+8*cos(7*x);的最小值,其中0<=x<=9 【分析】选择二进制编码,二进制编码长度为20,交叉概率为0.95,变 异概率为0.08
数值。
(2)Number of variables:目标函数输入变量的数目。
Constraints(约束):
(1)Linear inequalities线性不等式约束:表示为:A*x<=b,填写矩阵A和
向量b的信息。
(2)Linear equalities线性等式约束:表示为:Aeq*x=beq,填写矩阵Aeq 和向量beq的信息。 Upper中填写变量的取值上界,均以向量形式表示。 (4)Nonlinear constraint function非线性约束函数:编写非线性约束函数
opts,…termFN,termOps,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
输出参数: x:求得的最优解
endPop:最终得到的种群
bPop:最优种群的一个搜索轨迹 traceInfo :每一代种群的最优个体和均值
输入参数:
bounds :代表变量上下界的矩阵 evalFN:适应度函数
核心函数:
初始种群的生成函数: Function[pop]=initializega(num,bounds,eevalFN,eevalOps,options) 输出参数: pop:生成的初始种群 输入参数: num:种群中的个体数目
bounds:代表变量的上下界的矩阵
eevalFN:适应度函数 eevalOps:传递给适度函数的参数
70 60 50 40 30 20 10 0 -10 -20
0
1
2
3
4
5
6
7
8
9
Best: -10.9692 Mean: -10.9692 10
Best fitness Mean fitness
5
Fitness value
0
-5
-10
-15Biblioteka 01020
30
40
50 60 Generation
70
80
的个数。其中第一行描述初始种群中变量
的取值下限,第二行描述初始种群中变量 的取值上限。
Fitness scaling:变换适应度函数值的函数句柄。 Elite count:直接保留上一代的个体的个数。 Crossover fraction:交叉的概率。 Migration中,指定迁移的方向,概率,和频率。 Stopping criteria中,指定结束条件。Generations和time limit指定代数和时 间的最大极限。 Fitness limit指定fitness值相差小于某一阈值时就可以收敛了。 Stall generation和stall time limit指经历多少代或多久,最优值都没有出现 变化时即收敛。 Plot functions与图形输出有关,plot interval指定多少代输出一次,默认为 1.best fitness和best invividual表示将最优值和相应个体输出到图像上。 Display 通过command window输出到命令窗口。有off,final,interative, diagnose 4个选择。
遗传算法相比较于精确算法存在以下缺点:
1.需要多次迭代,需要更长的时间来获得优解。
2.可能无法获得最优解,只能获得伪最优解。
Option部分是遗传算法参数的设定:
Population种群参数设定: Population type编码方式:有浮点编码和
二进制编码,默认为Double vector。
Population size种群大小:默认为20,定 义每一代种群的个体数量。种群规模越大,遗 传算法的运行速度越慢。 Creation function创建函数:创建初始种 群。
(3)Bounds:填写独立变量的取值范围。在Lower中填写变量的取值下界,
的M文件nonlcon.m,则在此处填写@nonlcon。
Run solver and view results运行求解器并观察结果:
点击Start即可开始运行遗传算法。Current iteration中将显示当前
运行的代数。Final point栏中显示最优解对应的变量的取值。
evalOps:传递给适应度函数的参数
startPop:初始种群
opts:选择编码形式(浮点编码或二进制编码) [1e-6 1 0] 1e-6:变量进行二进制编码时指定的精度,1:选择浮点编码,
0:为二进制编码
termFN:终止函数的名称 termOps:传递给终止函数的参数,一般为需要的遗传代数
Initial population初始种群,如果不指
定初始种群,则系统将运用创建建函数创 建初始种群。
Initial scores初始得分,如果此处没有
定义初始得分,则系统应用适应度函数来 计算初始得分。
Initial range初始范围,用于指定初始
种群中的各变量的上下限。初始范围用一 个矩阵表示,该矩阵行数为2,列数为变量
遗传算法工具箱的使用
在MATLAB命令行窗口输入gatool,打开遗传算法工具箱:
Solver(求解器):用于选择需要的算法。 Problem:需要解决的问题。
(1)Fitness function:需要优化的目标函数,填写的格式为: @funname,其中funname.m是编写目标函数的M文件,返回一个具体
selectFN:选择函数的名称
selectOps:传递给选择函数的参数 xOverFNs:交叉函数名称表,以空格分开
xOverOps:传递给交叉函数的参数表
mutFNs:变异函数表 mutOps:传递给交叉函数的参数表
【问题】求f(x)=x^2-7*x+2; 的最小值,其中0<=x<=10 【分析】选择二进制编码,二进制编码长度为20,交叉概率为0.95,变异概率 为0.08 %编写目标函数 function y=f(x) y=x^2-7*x+2; %把上述函数存储为f.m文件并放在工作目录 下 使用fplot('x^2-7*x+2',[0,10]);画出目标函数,与遗传算法求出的最
相关文档
最新文档