【实用资料】Matlab遗传算法工具箱简介.pdf
Matlab遗传算法工具箱简介

GADS 工具箱用户界面
(1)Solver(求解器):用于选择需要的算法。 (2)Problem:需要解决的问题。包括: 1)Fitness function:需要最小化的适应度函数,填写的格式为:@objfun,其 中 objfun.m 是编写适应度函数的 M 文件,返回一个具体数值。 2)Number of variables: 适应度函数的自变量的数目, 此处表示优化设计的设 计变量个数。 (3)Constraints 约束。 1)Linear inequalities 线性不等式约束,表示为: A * x b ,填写矩阵 A 和向 量 b 的信息。
2)Linear equalities 线性等式约束,表示为: Aeq * x beq ,填写矩阵 Aeq 和 向量 beq 的信息。 3)Bounds:填写独立变量的取值范围。在 Lower 中填写变量的取值下界, Upper 中填写变量的取值上界,均以向量形式表示。 4)Nonlinear constraint function 非线性约束函数,编写非线性约束函数的 M 文件 nonlcon.m,则在此处填写@nonlcon。 (4)Run solver and view results 运行求解器并观察结果。点击 Start 即 可开始运行。Current iteration 中将显示当前运行的代数。Final point 栏中 显示最优解对应的变量的取值。 (5)Option 部分是遗传算法参数的设定。 1)Population 种群参数设定。 Population type 种群类型,设定适应度函数的输入数据类型。工具箱提供了 两种输入类型:双精度、串位,用户还可以编写 M 文件自定义输入数据的类型。 Population size 种群规模,定义每一代种群的个体数量。种群规模越大,遗 传算法的运行速度越慢。 Creation function 创建函数,用于创建初始种群。 Initial population 初始种群,如果不指定初始种群,则系统将运用创建函数 创建初始种群。 Initial scores 初始得分,如果此处没有定义初始得分,则系统应用适应度函 数来计算初始得分。 Initial range 初始范围,用于指定初始种群中的各变量的上下限。初始范围 用一个矩阵表示,该矩阵行数为 2,列数为变量的个数。其中第一行描述初始种 群中变量的取值下限,第二行描述初始种群中变量的取值上限。 2)Fitness scaling 适应度测量,包括:Rank 排序尺度变换、Proportional 比例 尺度变换、Top 顶级尺度变换、Shift linear 线性转换尺度变换以及 Custom 用户 自定义。 3)Selection 选择,工具箱提供了以下几种选择函数:Stochastic uniform 随机 Remainder 剩余、 Uniform 均匀分布、 Roulette 轮盘赌选择、 Tournament 均匀分布、 锦标赛选项、Custom 用户自定义。 4)Reproduction 再生参数,需设定可生存到下一代的精英个数 Elite count, 以及下一代由交叉产生的部分所占比例 Crossover fraction。
使用MATLAB遗传算法工具实例详细

最新发布的MATLAB 7.0 Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox,GADS)。
使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。
本章8.1节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。
8.1 遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以阐明。
8.1.1 工具箱的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MATLAB数值计算环境的性能。
遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。
这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。
所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。
使用语句type function_name就可以看到这些函数的MATLAB代码。
我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。
工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。
遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。
遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。
matlab遗传算法工具箱及其应用

函数 reins
InsOpt是一最多有两个参数的任选向量。 InsOpt(1)是一标量,指明用子代代替父代的选择方法。0— —均匀选择,子代代替父代使用均匀随机选择。1——基于 适应度的选择,子代代替最小适应的个体。如果省略 InsOpt(1)或为NaN,则假设InsOpt(1)=0。 InsOpt(2)是一在[0,1]间的标量,表示每个子种群中重插入 的子代个体与整个子种群中个体的比率。如果省略InsOpt(2) 或为NaN,则假设InsOpt(2)=1.0。 如果InsOpt省略或为NaN,则InsOpt为缺省值。
reins rws select sus
一致随机和基于适应度的重插入 轮盘选择 高级选择例程 随机遍历采样
19
函数 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中每一行对应一个个体。
第四讲 遗传பைடு நூலகம்法工具箱及应用
1
内容提要 • 遗传算法流程回顾 • 遗传算法工具箱结构 • 遗传算法工具箱通用函数 • 遗传算法工具箱应用
2
一、遗传算法流程回顾
个体
生成初始种群 计算适应度
染色体
基因
matlab遗传算法工具箱函数及实例讲解

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工具箱函数必须放在工作目录下【问题】求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)注:遗传算法一般用来取得近似最优解,而不是最优解。
matlab遗传算法工具箱关于离散变量优化算例

1. 引言遗传算法是一种模拟自然选择与遗传机制的优化算法,被广泛应用于离散变量优化问题的求解。
在Matlab软件中,有专门的工具箱可以支持遗传算法的实现与应用,极大地方便了工程技术人员进行离散变量优化问题的研究与应用。
本文将介绍Matlab遗传算法工具箱在离散变量优化算例中的应用,并通过具体案例来展示其实际求解效果。
2. Matlab遗传算法工具箱介绍Matlab遗传算法工具箱是Matlab软件的一个重要工具箱,它提供了丰富的遗传算法函数和工具,方便用户进行遗传算法的实现和应用。
在离散变量优化问题的求解中,用户可以利用工具箱提供的函数对问题进行建模、参数设置、运行算法等操作,从而快速高效地求解问题。
3. 离散变量优化算例为了更好地展示Matlab遗传算法工具箱在离散变量优化中的应用效果,我们选取了一个经典的离散变量优化问题作为算例,具体问题描述如下:设有一组零件需要进行装配,零件的形状和尺寸有多种选择。
每种零件的装配工艺和成本不同,需要选择最佳的零件组合方案来满足装配要求并使总成本最低。
假设可供选择的零件种类有n种,每种零件有m个备选方案,且装配每种零件的成本已知。
问应选择哪些零件及其具体方案才能使得总装配成本最低?4. Matlab遗传算法工具箱的应用为了利用Matlab遗传算法工具箱求解上述离散变量优化问题,我们可以按照以下步骤进行操作:1) 利用Matlab的数据处理工具,将零件的备选方案数据以矩阵的形式导入Matlab环境;2) 利用工具箱提供的函数对遗传算法的参数进行设置,例如选择交叉方式、变异方式、群体大小、迭代次数等;3) 利用工具箱提供的函数对离散变量优化问题进行编码和解码,以便算法能够对离散变量进行操作;4) 利用工具箱提供的函数编写适应度函数,用于评价每个个体的适应度;5) 利用工具箱提供的主函数运行遗传算法,获取最优解及其对应的总装配成本。
5. 案例求解结果分析通过上述步骤,我们在Matlab环境中成功应用遗传算法工具箱求解了离散变量优化问题。
(参考资料)(实例)matlab遗传算法工具箱函数及实例讲解

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,xOverO ps,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遗传算法工具箱附件【注意】matlab工具箱函数必须放在工作目录下【问题】求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)注:遗传算法一般用来取得近似最优解,而不是最优解。
【Matlab】自带遗传算法工具箱的介绍和使用注意事项

【Matlab】自带遗传算法工具箱的介绍和使用注意事项简单的遗传算法可以使用Matlab自带的遗传算法工具箱,但是要从Matlab2010版本之后才会自带这个工具箱,且调用命令也有变化,分别是gatool和optimtool。
GUI界面如下图所示:GUI界面使用注意事项:这里直接按从上到下,从左到右的顺序对Matlab自带的遗传算法工具箱的GUI界面进行介绍和使用注意事项的一些说明(宅主使用的是Matlab2013a,调用命令是optimtool):1、problem setup and results设置与结果(1)Solver:求解程序,选择要用的求解程序(遗传算法,遗传算法多目标等)(2)problem:1)fitness function适应度函数,求最小,这里的使用度函数要自己编写,书写格式是“@函数名”。
2)number of variable变量数,必须是整数,即,使用这个GUI 界面的适应度函数的变量必须是[1*n]的向量,而不能是[m*n]的矩阵。
3)constraints约束4)linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量5)linear equalities线性等式,A*x=b形式,其中A是矩阵,b 是向量6)bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量7)nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式8)integer variable indices整型变量标记约束,使用该项时Aeq 和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码举例,若是想让第一个、第三个、第五个变量保持是整数的话,则直接在此处填写[1 3 5]9)run solver and view results求解use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果2、population(1)population type编码类型1)double vector实数编码,采用双精度。
使用MATLAB遗传算法工具实例(详细)

使用MATLAB遗传算法工具实例(详细)最新发布的MATLAB Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox,GADS)。
使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。
本章节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。
遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以阐明。
8.1.1 工具箱的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MATLAB数值计算环境的性能。
遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。
这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。
所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。
使用语句type function_name就可以看到这些函数的MATLAB代码。
我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。
工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。
遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。
遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。
matlab-遗传算法工具箱函数及实例讲解

matlab-遗传算法工具箱函数及实例讲解最近研究了一下遗传算法,因为要用遗传算法来求解多元非线性模型。
还好用遗传算法的工具箱予以实现了,期间也遇到了许多问题。
首先,我们要熟悉遗传算法的基本原理与运算流程。
基本原理:遗传算法是一种典型的启发式算法,属于非数值算法范畴。
它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。
它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。
遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。
从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。
如此模仿生命的进化进行不断演化,直到满足期望的终止条件。
运算流程:Step1:对遗传算法的运行参数进行赋值。
参数包括种群规模、变量个数、交叉概率、变异概率以及遗传运算的终止进化代数。
Step2:建立区域描述器。
根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。
Step3:在Step2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。
Step4:执行比例选择算子进行选择操作。
Step5:按交叉概率对交叉算子执行交叉操作。
Step6:按变异概率执行离散变异操作。
Step7:计算Step6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。
Step8:判断是否满足遗传运算的终止进化代数,不满足则返回Step4,满足则输出运算结果。
其次,运用遗传算法工具箱。
运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATB某、GAOT以及MathWork公司推出的GADS。
实际上,GADS就是大家所看到的Matlab中自带的工具箱。
MATLAB遗传算法工具箱

2, gatbx工具箱常见函数
(1)初始种群的创建
end
%定义目标值与盒子数的关系
while gen<MAXGEN, FitnV=ranking(ObjV,[2,1]); %根据目
标值进行适应度排序 SelCh=select(SEL_F,Chrom,FitnV);
%基于适应度选择个体 SelCh=recombin(XOV_F,SelCh,XOVR);
%建立初始种群,用序列代号的方法
trace=zeros(MAXGEN,2); m=zeros(NIND,MAXGEN); sum=zeros(NIND,NVAR); all=zeros(NIND,1); ObjV=zeros(NIND,1); ObjVOff=zeros(NIND,1); gen=2;
例3,chrom= 011001 001000 new1=mut(chrom,0.1) new1= 111001 001010
四,应用gatbx工具箱的基本求解步骤
chrom=crtbp(nind,nvar); var=bs2rv(chrom,fieldd); obj=functionx(var); %开始进化 while gen<maxgen
运行中出现的问题 一.for循环和工具箱函数出现矛 盾 二.遗传过程中种群中的序列号出 现小数 三.所得图形与预期的很不相同
谢谢!
break
Matlab中的遗传算法实现方法简介

Matlab中的遗传算法实现方法简介遗传算法是一种通过模拟进化机制解决优化问题的启发式算法。
它通过模拟自然选择、遗传变异和群体竞争等过程,不断优化问题的解。
在Matlab中,我们可以利用遗传算法工具箱来实现各种不同的遗传算法。
遗传算法的基本思想是从初始种群中随机生成一组个体(解),然后通过一系列的选择、交叉和变异操作,对个体进行进化,以期得到更优解。
在Matlab中,我们可以使用遗传算法工具箱中的遗传算法函数来实现这些操作。
首先,我们需要定义一个适应度函数,用于评价个体的优劣。
适应度函数应当根据我们的优化目标来设计,通常是将目标函数的结果作为个体的适应度值。
在Matlab中,我们可以通过定义一个.m文件来实现适应度函数,例如:```matlabfunction fitness = myFitness(x)% 定义目标函数fitness = -x^2 + 5*x + 10;end```上述适应度函数是一个简单的目标函数,我们的目标是找到可以最大化该函数值的x。
通过最大化适应度函数值,我们就可以找到解空间中的最优解。
在定义适应度函数后,我们需要设置遗传算法的参数。
在Matlab中,通过创建一个结构体来设置参数。
例如:```matlabgaOptions = gaoptimset('PopulationSize', 100, 'MaxGenerations', 50);```上述代码将种群大小设置为100个个体,最大迭代代数设置为50代。
我们还可以设置许多其他参数,如交叉率、变异率等等。
接下来,我们可以使用Matlab的遗传算法函数来求解优化问题。
例如,我们可以使用`ga`函数来求解上述适应度函数的最大值:```matlab[x, fval] = ga(@myFitness, nvars, gaOptions);```上述代码中的`@myFitness`表示我们要求解的适应度函数,`nvars`表示决策变量的数量。
MATLAB遗传算法工具箱

while gen<MAXGEN, FitnV=ranking(ObjV,[2,1]); %根据目 标值进行适应度排序 SelCh=select(SEL_F,Chrom,FitnV); %基于适应度选择个体 SelCh=recombin(XOV_F,SelCh,XOVR); %完成种群中个体的重组
[Chrom,ObjV]=reins(Chrom,SelCh,1,[1,IN SR],ObjV,ObjVOff); %完成插入子代到当 前种群,用子代代替父代并返回结果种群 gen=gen+1; trace(gen,1)=min(m(:,gen)); %跟踪最 小的盒子数 trace(gen,2)=mean(m(:,gen)); %跟踪盒 子数的均值 end
(4)交叉
xovsp-单点交叉 xovdp-两点交叉 xovsh-洗牌交叉 recombin-高级交叉函数
例2,chrom=crtbp(2,6) chrom= 0 1 1 0 0 1 0 0 1 0 0 0 new=xovsp(chrom,1) new= 0 0 1 0 0 0 0 1 1 0 0 1
on;
on;
运行中出现的问题 一.for循环和工具箱函数出现矛 盾 二.遗传过程中种群中的序列号出 现小数 三.所得图形与预期的很不相同
谢谢!
FieldDR=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15]; BaseV=[16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16]; [Chrom,NVAR,BaseV]=crtbp(NIND,NVAR,Ba seV); %建立初始种群,用序列代号的方法
精品文档-MATLAB遗传算法工具箱及应用(第二版)雷英杰-第5章

第五章 遗传算法工具箱函数
5.1.6 多子群支持函数:migrate。 遗传算法工具箱通过高层遗传操作函数migrate对多子群
提供支持, 其功能是在子群中交换个体。 一个单一种群通 过使用工具箱中的函数修改数据结构, 使其分为许多子种群, 这些子种群被保存在连续的数据单元块中。 高层函数(如 select和reins)可独立地操作子种群,包含在一个数据结构 中的每一子种群允许独自向前衍化。 基于孤岛或回迁模式, migrate允许个体在子种群中迁移。
0 0 0 0 01 1 1
Chrom
1 0
0 0
0 1
0 0
1 1
0 0
0 0
1 0
1 1 0 1 1 0 1 1
FieldD=[8; -1; 10; 1; 0; 1; 1]; %包括边界
第五章 遗传算法工具箱函数
Phen=bs2rv(Chrom,FieldD)
值, 使用算术刻度
0.7843
P
hen
第五章 遗传算法工具箱函数
5.2 遗算法中的通用函数 5.2.1 函数 bs2rv
功能: 格式: Phen = bs2rv(Chrom, FieldD) 详细说明: Phen = bs2rv(Chrom, FieldD) 根据译码 矩阵FieldD将二进制串矩阵Chrom转换为实值向量。 返回矩 阵Phen包含对应的种群表现型。 使用格雷编码的二进制染色体表示被推荐作为量化间隔的 规则海明距离, 可使遗传搜索减少欺骗。 设置量化点间刻度 的可选方案是选择线性或对数编码从二进制串变换到实值。 对数刻度用于决策变量的范围未知, 作为大范围参数的边界 时, 搜索可用较少的位数,以减少GA的内存需求和计算量。
第五章 遗传算法工具箱函数
使用MATLAB遗传算法工具

第八章使用MATLAB遗传算法工具最新发布的MATLAB Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox,GADS)。
使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。
本章节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。
遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以阐明。
8.1.1 工具箱的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MATLAB数值计算环境的性能。
遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。
这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。
所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。
使用语句type function_name就可以看到这些函数的MATLAB代码。
我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。
工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。
遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。
遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab遗传算法工具箱
基于Matlab平台的遗传算法(GA)工具箱主要有:美国北卡罗来纳大学开发的GAOT、英国谢菲尔德大学开发的GATBX以及GADS(Genetic Algorithm and Direct Search Toolbox)遗传算法与直接搜索工具箱。
遗传算法与直接搜索工具箱的界面如图所示:
GADS工具箱用户界面
(1)Solver(求解器):用于选择需要的算法。
(2)Problem:需要解决的问题。
包括:
1)Fitness function:需要最小化的适应度函数,填写的格式为:@objfun,其中objfun.m是编写适应度函数的M文件,返回一个具体数值。
2)Number of variables:适应度函数的自变量的数目,此处表示优化设计的设计变量个数。
(3)Constraints约束。
1)Linear inequalities线性不等式约束,表示为:*
,填写矩阵A和向
A x b
量b的信息。
2)Linear equalities 线性等式约束,表示为:*Aeq x beq ,填写矩阵Aeq 和向量beq 的信息。
3)Bounds :填写独立变量的取值范围。
在Lower 中填写变量的取值下界,Upper 中填写变量的取值上界,均以向量形式表示。
4)Nonlinear constraint function 非线性约束函数,编写非线性约束函数的M 文件nonlcon.m ,则在此处填写@nonlcon 。
(4)Run solver and view results 运行求解器并观察结果。
点击Start 即可开始运行。
Current iteration 中将显示当前运行的代数。
Final point 栏中显示最优解对应的变量的取值。
(5)Option 部分是遗传算法参数的设定。
1)Population 种群参数设定。
Population type 种群类型,设定适应度函数的输入数据类型。
工具箱提供了
两种输入类型:双精度、串位,用户还可以编写M 文件自定义输入数据的类型。
Population size 种群规模,定义每一代种群的个体数量。
种群规模越大,遗传算法的运行速度越慢。
Creation function 创建函数,用于创建初始种群。
Initial population 初始种群,如果不指定初始种群,则系统将运用创建函数创建初始种群。
Initial scores 初始得分,如果此处没有定义初始得分,则系统应用适应度函数来计算初始得分。
Initial range 初始范围,用于指定初始种群中的各变量的上下限。
初始范围用一个矩阵表示,该矩阵行数为2,列数为变量的个数。
其中第一行描述初始种群中变量的取值下限,第二行描述初始种群中变量的取值上限。
2)Fitness scaling 适应度测量,包括:Rank 排序尺度变换、Proportional 比例尺度变换、Top 顶级尺度变换、Shift linear 线性转换尺度变换以及Custom 用户自定义。
3)Selection 选择,工具箱提供了以下几种选择函数:Stochastic uniform 随机
均匀分布、
Remainder 剩余、Uniform 均匀分布、Roulette 轮盘赌选择、Tournament 锦标赛选项、Custom 用户自定义。
4)Reproduction 再生参数,需设定可生存到下一代的精英个数Elite count ,以及下一代由交叉产生的部分所占比例Crossover fraction 。
5)Mutation变异,工具箱提供的变异函数有:Gaussian高斯函数、Uniform 均匀变异、Adaptive feasible自适应变异、以及用户自定义。
6)Crossover交叉,工具箱提供的交叉函数有:Scattered多点交叉、Single point 单点交叉、Two point两点交叉、Arithmetic算数交叉等。
7)Migration迁移,需设置个体在子种群中移动的方向Direction、间隔Interval,以及两个子种群中较小种群的个体迁移百分比Fraction。
8)Stoping criteria终止条件。
可设置遗传算法的最大代数、适应度极限、停滞时间、停滞代数等。
9)Hybird function混合函数参数。
在遗传算法结束之后,可指定一个最小值优化函数。
工具箱提供的优化函数有:fminsearch、patternsearch、fminunc、fmincon。
其中fminsearch、fminunc适用于无约束的优化,fmincon适用于有约束的优化。
10)Display to command window输出命令到窗口。
Display表示显示级别,是一个结构体。
其中包含:Off只有最终结果显示;Iterative显示每一次迭代的有关信息;Diagnose显示每一次迭代的信息,而且还列出函数缺省值已经被改变的有关信息;Final显示遗传算法的结果(成功与否)、停止的原因、最终点。
11)工具箱还提供了Plot functions图形输出、Output function输出函数、User function evaluation用户函数评估界面供用户选择。