第五章-遗传算法工具箱函数

合集下载

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

GATBX遗传算法工具箱函数及实例讲解基本原理:遗传算法是一种典型的启发式算法,属于非数值算法范畴。

它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。

它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。

遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。

从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。

如此模仿生命的进化进行不断演化,直到满足期望的终止条件。

运算流程:Step 1:对遗传算法的运行参数进行赋值。

参数包括种群规模、变量个数、交叉概率、变异概率以及遗传运算的终止进化代数。

Step 2:建立区域描述器。

根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。

Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。

Step 4:执行比例选择算子进行选择操作。

Step 5:按交叉概率对交叉算子执行交叉操作。

Step 6:按变异概率执行离散变异操作。

Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。

Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。

运用遗传算法工具箱:运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。

目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。

实际上,GADS就是大家所看到的Matlab中自带的工具箱。

我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。

因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。

MATLAB遗传算法工具箱在函数优化中的应用

MATLAB遗传算法工具箱在函数优化中的应用

[x, fval] = ga(fun, 1,,,,,,,, options);
%输出结果
disp(['x = ', num2str(x)]);
disp(['f(x) = ', num2str(fval)]);
在上述代码中,我们首先定义了目标函数,然后设置了遗传算法的参数,包 括种群规模、最大迭代次数、交叉概率和变异概率。接下来,我们使用 optimoptions函数初始化遗传算法,并传入目标函数和参数设置。最后,我们使 用ga函数求解最小值点,并输出结果。
在使用遗传算法工具箱进行函数优化时,需要注意以下问题:
1、适应度函数的设计:适应度函数是评价个体优劣程度的指标,必须合理 设计以满足优化问题的需求。
2、种群规模和迭代次数的设定:种群规模和迭代次数是影响遗传算法性能 的关键参数,需要根据问题规模和复杂度进行合理设定。
3、交叉和变异操作的控制:交叉和变异操作是遗传算法的核心操作,需要 合理控制以保持算法的搜索能力和避免陷入局部最优解。
在定义了目标函数和约束条件之后,我们可以使用Matlab提供的ga函数来运 行遗传算法。ga函数将根据指定的目标函数和约束条件,使用遗传算法搜索最优 解。在运行过程中,我们可以使用Matlab提供的动画功能来实时查看遗传算法的 迭代过程。
除了使用Matlab遗传算法优化工具箱来解决常规的优化问题外,还可以将其 应用于其他领域。例如,在机器学习领域中,可以使用遗传算法来优化神经网络 的连接权值和结构;在控制系统领域中,可以使用遗传算法优化控制系统的参数 和结构;在图像处理领域中,可以使用遗传算法优化图像处理的算法和参数等。
通过本次演示的介绍,希望能使读者更好地理解和应用遗传算法工具箱解决 实际优化问题。

遗传算法中所用的函数是

遗传算法中所用的函数是

遗传算法中所用的函数是
遗传算法通常涉及到多种函数,其中最常用的是适应度函数(fitness function)、选择函数(selection function)、交叉函数(crossover function)和变异函数(mutation function)。

- 适应度函数:适应度函数是遗传算法中最重要的函数之一,用于评估每个个体的适应度表现。

它通常基于个体的目标函数值或其他特定的性能指标来计算个体的适应度得分,具体计算方法可根据应用场景和问题类型进行自行定义。

- 选择函数:选择函数用于根据适应度得分排名,选择一些个体作为繁殖下一代的“父代”。

常见的选择方法有轮盘赌选择、锦标赛选择、最佳选择等。

- 交叉函数:交叉函数用于将父代的染色体段进行随机交叉,产生新的个体组合,从而丰富种群的性状。

常用的交叉方法有单点交叉、多点交叉、均匀交叉等。

- 变异函数:变异函数用于随机改变个体的染色体上的某些位点,以提高搜索空间的探索性和多样性。

常用的变异方法有基本变异、非一致性变异、可逆变异等。

除了以上四种函数外,遗传算法还可能涉及到一些辅助函数,如种群初始化函数、终止条件判定函数等。

在具体使用时,可根据问题的特点和需求来选择与实现对应函数。

谢菲尔德大学遗传算法工具箱

谢菲尔德大学遗传算法工具箱
X=bs2rv(SelCh,FieldD); %子代个体的十进制转换
ObjVSel=sin(10*pi*X)./X; %计算子代的目标函数值
[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群
SelCh=select('sus',Chrom,FitnV,GGAP); %选择
SelCh=recombin('xovsp',SelCh,px); %重组
SelCh=mut(SelCh,pm); பைடு நூலகம் %变异
trace(2,gen)=Y; %记下每代的最优值
end
plot(trace(1,:),trace(2,:),'bo'); %画出每代的最优点
grid on;
plot(X,ObjV,'b*'); %画出最后一代的种群
X=bs2rv(Chrom,FieldD);
gen=gen+1; %代计数器增加
%获取每代的最优解及其序号,Y为最优解,I为个体的序号
[Y,I]=min(ObjV);
trace(1,gen)=X(I); %记下每代的最优值
%% 定义遗传算法参数
NIND=40; %个体数目
MAXGEN=20; %最大遗传代数
PRECI=20; %变量的二进制位数
GGAP=0.95; %代沟
px=0.7; %交叉概率
pm=0.01; %变异概率
trace=zeros(2,MAXGEN); %寻优结果的初始值
FieldD=[PRECI;lb;ub;1;0;1;1]; %区域描述器

GADS--matlab遗传算法工具箱使用总结

GADS--matlab遗传算法工具箱使用总结

GADS--Matlab遗传算法工具箱使用总结e-mail:978299005@一、GADS简介与启动MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

在Matlab平台上主要有三个遗传算法(GA)的工具箱,分别是:GAOT,美国北卡罗来纳大学开发;GATBX,英国谢菲尔德大学开发;GADS,Matlab7以后的版本中自带的。

GATBX可以包含GAOT,而GADS显然年代又近了一些。

这里主要讲的是GADS。

GADS(Genetic Algorithm and Direct Search Toolbox)遗传算法与直接搜索工具箱。

可以在命令行中直接使用,在M文件的程序中调用ga函数,或在GUI 界面中使用它来解决实际问题。

在不同的Matlab版本中启动方法稍有区别。

以笔者的Matlab 2010b为例,启动有两种方法:1、在Matlab命令行中输入optimtool回车,在出现的对话框左上角找到Solver,选择ga- Genetic Algorithm即可。

2、Matlab界面中单击左下角Start,选择toolboxes,选择其中的optimization再点击optimization tool即可打开对话框,然后如1中,选择ga即可。

二、GADS的具体使用【1】先介绍ga函数的格式。

Ga函数可以在命令行中直接使用。

在命令行中键入命令type ga可以打印出ga函数的代码。

键入help ga,就打印出ga函数的帮助提示。

以下是help ga的输出:GA Constrained optimization using genetic algorithm.GA attempts to solve problems of the form:min F(X) subject to: A*X <= B, Aeq*X = Beq (linear constraints)X C(X) <= 0, Ceq(X) = 0 (nonlinear constraints)LB <= X <= ubX = GA(FITNESSFCN,NVARS) finds a local unconstrained minimum X to theFITNESSFCN using GA. NVARS is the dimension (number of designvariables) of the FITNESSFCN. FITNESSFCN accepts a vector X of size1-by-NVARS, and returns a scalar evaluated at X.X = GA(FITNESSFCN,NVARS,A,b) finds a local minimum X to the functionFITNESSFCN, subject to the linear inequalities A*X <= B. Linearconstraints are not satisfied when the PopulationType option is set to'bitString' or 'custom'. See the documentation for details.X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq) finds a local minimum X to thefunction FITNESSFCN, subject to the linear equalities Aeq*X = beq aswell as A*X <= B. (Set A=[] and B=[] if no inequalities exist.) Linearconstraints are not satisfied when the PopulationType option is set to'bitString' or 'custom'. See the documentation for details.X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub) defines a set of lower andupper bounds on the design variables, X, so that a solution is found inthe range lb <= X <= ub. Use empty matrices for lb and ub if no boundsexist. Set lb(i) = -Inf if X(i) is unbounded below; set ub(i) = Inf ifX(i) is unbounded above. Linear constraints are not satisfied when thePopulationType option is set to 'bitString' or 'custom'. See thedocumentation for details.X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON) subjects theminimization to the constraints defined in NONLCON. The functionNONLCON accepts X and returns the vectors C and Ceq, representing thenonlinear inequalities and equalities respectively. GA minimizesFITNESSFCN such that C(X)<=0 and Ceq(X)=0. (Set lb=[] and/or ub=[] ifno bounds exist.) Nonlinear constraints are not satisfied when thePopulationType option is set to 'bitString' or 'custom'. See thedocumentation for details.X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options) minimizeswith the default optimization parameters replaced by values in thestructure OPTIONS. OPTIONS can be created with the GAOPTIMSET function.See GAOPTIMSET for details.X = GA(PROBLEM) finds the minimum for PROBLEM. PROBLEM is a structurethat has the following fields:fitnessfcn: <Fitness function>nvars: <Number of design variables>Aineq: <A matrix for inequality constraints>bineq: <b vector for inequality constraints>Aeq: <Aeq matrix for equality constraints>beq: <beq vector for equality constraints>lb: <Lower bound on X>ub: <Upper bound on X>nonlcon: <nonlinear constraint function>options: <Options structure created with GAOPTIMSET>rngstate: <State of the random number generator>[X,FVAL] = GA(FITNESSFCN, ...) returns FVAL, the value of the fitnessfunction FITNESSFCN at the solution X.[X,FVAL,EXITFLAG] = GA(FITNESSFCN, ...) returns EXITFLAG whichdescribes the exit condition of GA. Possible values of EXITFLAG and thecorresponding exit conditions are1 Average change in value of the fitness function overoptions.StallGenLimit generations less than options.TolFun andconstraint violation less than options.TolCon.3 The value of the fitness function did not change inoptions.StallGenLimit generations and constraint violation lessthan options.TolCon.4 Magnitude of step smaller than machine precision and constraintviolation less than options.TolCon. This exit condition appliesonly to nonlinear constraints.5 Fitness limit reached and constraint violation less thanoptions.TolCon.0 Maximum number of generations exceeded.-1 Optimization terminated by the output or plot function.-2 No feasible point found.-4 Stall time limit exceeded.-5 Time limit exceeded.[X,FVAL,EXITFLAG,OUTPUT] = GA(FITNESSFCN, ...) returns astructure OUTPUT with the following information:rngstate: <State of the random number generator before GA started>generations: <Total generations, excluding HybridFcn iterations>funccount: <Total function evaluations>maxconstraint: <Maximum constraint violation>, if anymessage: <GA termination message>[X,FVAL,EXITFLAG,OUTPUT,POPULATION] = GA(FITNESSFCN, ...) returns thefinal POPULATION at termination.[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES] = GA(FITNESSFCN, ...) returnsthe SCORES of the final POPULATION.Example:Unconstrained minimization of 'rastriginsfcn' fitness function ofnumberOfVariables = 2x = ga(@rastriginsfcn,2)Display plotting functions while GA minimizesoptions = gaoptimset('PlotFcns',...{@gaplotbestf,@gaplotbestindiv,@gaplotexpectation,@gaplotstopping});[x,fval,exitflag,output] = ga(@rastriginsfcn,2,[],[],[],[],[],[],[],options)An example with inequality constraints and lower boundsA = [1 1; -1 2; 2 1]; b = [2; 2; 3]; lb = zeros(2,1);% Use mutation function which can handle constraintsoptions = gaoptimset('MutationFcn',@mutationadaptfeasible);[x,fval,exitflag] = ga(@lincontest6,2,A,b,[],[],lb,[],[],options);FITNESSFCN can also be an anonymous function:x = ga(@(x) 3*sin(x(1))+exp(x(2)),2)If FITNESSFCN or NONLCON are parameterized, you can use anonymousfunctions to capture the problem-dependent parameters. Suppose you wantto minimize the fitness given in the function myfit, subject to thenonlinear constraint myconstr, where these two functions areparameterized by their second argument a1 and a2, respectively. Heremyfit and myconstr are MATLAB file functions such asfunction f = myfit(x,a1)f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + a1);andfunction [c,ceq] = myconstr(x,a2)c = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - a2];% No nonlinear equality constraints:ceq = [];To optimize for specific values of a1 and a2, first assign the valuesto these two parameters. Then create two one-argument anonymousfunctions that capture the values of a1 and a2, and call myfit andmyconstr with two arguments. Finally, pass these anonymous functions toGA:a1 = 1; a2 = 10; % define parameters first% Mutation function for constrained minimizationoptions = gaoptimset('MutationFcn',@mutationadaptfeasible);x = ga(@(x)myfit(x,a1),2,[],[],[],[],[],[],@(x)myconstr(x,a2),options)解释如下:ga函数最完整的格式是[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES]= GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options)。

遗传算法函数

遗传算法函数

种群表示和初始化函数bs2rv: 二进制串到实值的转换Phen=bs2rv(Chrom,FieldD)FieldD=[len, lb, ub, code, scale, lbin, ubin]code(i)=1为标准的二进制编码,code(i)=0为格雷编码scale(i)=0为算术刻度,scale(i)=1为对数刻度函数crtbp: 创建初始种群[Chrom,Lind,BaseV]=crtbp(Nind,Lind)[Chrom,Lind,BaseV]=crtbp(Nind,BaseV)[Chrom,Lind,BaseV]=crtbp(Nind,Lind,BaseV)Nind指定种群中个体的数量,Lind指定个体的长度函数crtrp: 创建实值原始种群Chrom=crtrp(Nind,FieldDR)适应度计算函数ranking: 基于排序的适应度分配(此函数是从最小化方向对个体进行排序的)FitV=ranking(ObjV)FitV=ranking(ObjV, RFun)FitV=ranking(ObjV, RFun, SUBPOP)Rfun(1)线性排序标量在[1 2]间为,非线性排序在[1 length(ObjV)-2]Rfun(2)指定排序方法,0为线性排序,1为非线性排序SUBPOP指明ObjV中子种群的数量,默认为1选择高级函数select: 从种群中选择个体SelCh=select(SEL_F, Chrom, FitnV)SelCh=select(SEL_F, Chrom, FitnV, GGAP)SelCh=select(SEL_F, Chrom, FitnV, GGAP, SUBPOP)SEL_F是一字符串,为一低级选择函数名,如rws或susGGAP指出了代沟,默认为1;也可大于1,允许子代数多于父代的数量rws: 轮盘赌选择NewChrIx=rws(FitnV, Nsel) 使用轮盘赌选择从一个种群中选择Nsel个个体NewChrIx 是为育种选择的个体的索引值sus: 随机遍历抽样NewChrIx=sus(FitnV, Nsel)交叉高级函数recombin: 重组个体NewChrom=recombin(REC_F, Chrom)NewChrom=recombin(REC_F, Chrom, RecOpt)NewChrom=recombin(REC_F, Chrom, RecOpt, SUBPOP)REC_F是包含低级重组函数名的字符串,例如recdis,recint,reclin,xovdp, xovdprs, xovmp, xovsh, xovshrs, xovsp, xovsprsrecdis: 离散重组NewChrom=recdis(OldChorm)recint: 中间重组NewChrom=recint(OldChorm)reclin: 线性重组NewChrom=reclin(OldChorm)xovdp: 两点交叉NewChrom=xovdp(OldChrom, XOVR)XOVR为交叉概率,默认为0.7Xovdprs: 减少代理的两点交叉NewChrom=xovdprs(OldChrom, XOVR)Xovmp: 多点交叉NewChrom=xovmp(OldChrom, XOVR, Npt, Rs)Npt指明交叉点数,0 洗牌交叉;1 单点交叉;2 两点交叉;默认为0 Rs指明使用减少代理,0 不减少代理;1 减少代理;默认为0 Xovsh: 洗牌交叉NewChrom=xovsh(OldChrom, XOVR)Xovshrs: 减少代理的洗牌交叉NewChrom=xovshrs(OldChrom, XOVR)Xovsp: 单点交叉NewChrom=xovsp(OldChrom, XOVR)Xovsprs: 减少代理的单点交叉NewChrom=xovsprs(OldChrom, XOVR)变异高级函数mutate: 个体的变异NewChorm=mutate(MUT_F, OldChorm, FieldDR) NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt)NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt, SUBPOP)MUT_F为包含低级变异函数的字符串,例如mut, mutbga, recmutmut: 离散变异算子NewChrom=mut(OldChorm, Pm)NewChrom=mut(OldChorm, Pm, BaseV)Pm为变异概率,默认为Pm=0.7/Lindmutbga: 实值种群的变异(遗传算法育种器的变异算子)NewChrom=mutbga(OldChorm, FieldDR)NewChrom=mubga(OldChorm, FieidDR, MutOpt)MutOpt(1)是在[ 0 1]间的重组概率的标量,默认为1MutOpt(2)是在[0 1]间的压缩重组范围的标量,默认为1(不压缩)recmut: 具有突变特征的线性重组NewChrom=recmut(OldChorm, FieldDR)NewChrom=recmut(OldChorm, FieidDR, MutOpt)重插入函数reins: 重插入子群到种群Chorm=reins(Chorm, SelCh)Chorm=reins(Chorm, SelCh, SUBPOP)Chorm=reins(Chorm, SelCh, SUBPOP, InsOpt, ObjVch)[Chorm, ObjVch]=reins(Chorm, SelCh, SUBPOP, InsOpt, ObjVch, ObjVSel)InsOpt(1)指明用子代代替父代的选择方法,0为均匀选择,1为基于适应度的选择,默认为0InsOpt(2)指明在[0 1]间每个子种群中重插入的子代个体在整个子种群的中个体的比率,默认为1 ObjVch包含Chorm中个体的目标值,对基于适应度的重插入是必需的ObjVSel包含Selch中个体的目标值,如子代数量大于重插入种群的子代数量是必需的其他函数矩阵复试函数rep: MatOut=rep(MatIn, REPN) REPN为复制次数。

matlab遗传算法工具箱关于离散变量优化算例

matlab遗传算法工具箱关于离散变量优化算例

1. 引言遗传算法是一种模拟自然选择与遗传机制的优化算法,被广泛应用于离散变量优化问题的求解。

在Matlab软件中,有专门的工具箱可以支持遗传算法的实现与应用,极大地方便了工程技术人员进行离散变量优化问题的研究与应用。

本文将介绍Matlab遗传算法工具箱在离散变量优化算例中的应用,并通过具体案例来展示其实际求解效果。

2. Matlab遗传算法工具箱介绍Matlab遗传算法工具箱是Matlab软件的一个重要工具箱,它提供了丰富的遗传算法函数和工具,方便用户进行遗传算法的实现和应用。

在离散变量优化问题的求解中,用户可以利用工具箱提供的函数对问题进行建模、参数设置、运行算法等操作,从而快速高效地求解问题。

3. 离散变量优化算例为了更好地展示Matlab遗传算法工具箱在离散变量优化中的应用效果,我们选取了一个经典的离散变量优化问题作为算例,具体问题描述如下:设有一组零件需要进行装配,零件的形状和尺寸有多种选择。

每种零件的装配工艺和成本不同,需要选择最佳的零件组合方案来满足装配要求并使总成本最低。

假设可供选择的零件种类有n种,每种零件有m个备选方案,且装配每种零件的成本已知。

问应选择哪些零件及其具体方案才能使得总装配成本最低?4. Matlab遗传算法工具箱的应用为了利用Matlab遗传算法工具箱求解上述离散变量优化问题,我们可以按照以下步骤进行操作:1) 利用Matlab的数据处理工具,将零件的备选方案数据以矩阵的形式导入Matlab环境;2) 利用工具箱提供的函数对遗传算法的参数进行设置,例如选择交叉方式、变异方式、群体大小、迭代次数等;3) 利用工具箱提供的函数对离散变量优化问题进行编码和解码,以便算法能够对离散变量进行操作;4) 利用工具箱提供的函数编写适应度函数,用于评价每个个体的适应度;5) 利用工具箱提供的主函数运行遗传算法,获取最优解及其对应的总装配成本。

5. 案例求解结果分析通过上述步骤,我们在Matlab环境中成功应用遗传算法工具箱求解了离散变量优化问题。

遗传算法 - 函数最优解计算

遗传算法 - 函数最优解计算

遗传算法 - 函数最优解计算遗传算法是一种基于生物进化原理的优化算法,可以用于求解函数的最优解问题。

在实际应用中,函数的最优解往往是指在给定约束条件下,使目标函数取得最大或最小值的变量取值。

遗传算法通过模拟自然选择、遗传交叉和变异等过程,逐步优化解空间中的个体,找到最优解。

我们来了解一下遗传算法的基本原理。

遗传算法的核心思想是模拟达尔文的进化论,通过选择、交叉和变异等操作对种群进行进化。

算法的过程可以简单地描述为以下几个步骤:1. 初始化种群:随机生成一组个体作为初始种群,每个个体代表函数的一个解。

2. 适应度评估:根据问题的具体情况,定义适应度函数来评估每个个体的好坏程度。

适应度函数可以根据问题的特点来设计,例如,对于求解函数的最大值问题,适应度函数可以直接使用函数值作为评估指标。

3. 选择操作:根据适应度函数的评估结果,选择一部分适应度较高的个体作为父代,用于后续的交叉和变异操作。

选择操作可以使用不同的方法,如轮盘赌选择、锦标赛选择等。

4. 交叉操作:从父代个体中随机选择两个个体,通过交叉操作生成新的个体。

交叉操作可以采用不同的方式,如单点交叉、多点交叉等。

5. 变异操作:对新生成的个体进行变异操作,从而增加种群的多样性。

变异操作可以随机选择个体的某些基因,并进行随机变换。

6. 更新种群:将新生成的个体加入到种群中,形成新一代种群。

7. 终止条件判断:根据问题的要求,设置终止条件,例如达到最大迭代次数或找到满足要求的解等。

8. 迭代操作:重复以上步骤,直到满足终止条件。

通过以上步骤的迭代,遗传算法能够逐步优化种群中的个体,找到函数的最优解。

在实际应用中,遗传算法可以用于求解各种函数的最优解问题,例如优化函数、组合优化、排课问题等。

遗传算法具有一定的优点,如能够在解空间中全局搜索、适应于多样化的问题、具有较好的鲁棒性等。

但同时也存在一些缺点,如算法的收敛速度较慢、对问题的依赖性较强等。

遗传算法是一种基于生物进化原理的优化算法,可以用于求解函数的最优解问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章遗传算法工具箱函数本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。

由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MA TLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。

MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。

遗传算法工具箱使用MA TLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。

用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。

5.1 工具箱结构本节给出GA工具箱的主要程序。

表5.1为遗传算法工具箱中的各种函数分类表。

表5.1 遗传算法工具箱中函数分类表5.1.1 种群表示和初始化种群表示和初始化函数有:crtbase,crtbp,crtrp。

GA工具箱支持二进制、整数和浮点数的基因表示。

二进制和整数种群可以使用工具箱中的crtbp建立二进制种群。

crtbase是附加的功能,它提供向量描述整数表示。

种群的实值可用crtrp进行初始化。

在二进制代码和实值之间的变换可使用函数bs2rv,它支持格雷码和对数编码。

5.1.2 适应度计算适应度函数有:ranking,scaling。

适应度函数用于转换目标函数值,给每一个个体一个非负的价值数。

这个工具箱支持Goldberg的偏移法(offsetting)和比率法以及贝克的线性评估算法。

另外,ranking函数支持非线性评估。

5.1.3 选择函数选择函数有:reins,rws,select,sus。

这些函数根据个体的适应度大小在已知种群中选择一定数量的个体,对它的索引返回一个列向量。

现在最合适的是轮盘赌选择(即rws函数)和随机遍历抽样(即sus函数)。

高级入口函数select为选择程序,特别为多种群的使用提供了一个方便的接口界面。

在这种情况下,代沟是必须的,这就是整个种群在每一代中没有被完全复制,reins能使用均匀的随机数或基于适应度的重新插入。

5.1.4 交叉算子交叉算子函数有:recdis,recint,reclin,recmut,recombin,xovdp,xovdprs,xovmp,xovsh,xovshrs,xovsp,xovsprs。

交叉是通过给定的概率重组一对个体产生后代。

单点交叉、两点交叉和洗牌交叉是由xovsp、xovdp、xovsh函数分别完成的。

缩小代理交叉函数分别是:xovdprs、xovshrs和xovsprs。

通用的多点交叉函数是xovmp,它提供均匀交换的支持。

为支持染色体实值表示,离散的、中间的和线性重组分别由函数recdis、recint、reclin完成。

函数recmut提供具有突变特征的线性重组。

函数recombin是一高级入口函数,对所有交叉操作提供多子群支持入口。

5.1.5 变异算子变异算子函数有:mut,mutate,mutbga。

二进制和整数变异操作由mut 完成。

实值的变异使用育种机函数mutbga 是有效的。

Mutate 对变异操作提供一个高级接口。

5.1.6 多子群支持多子群支持函数:migrate 。

遗传算法工具箱通过高层遗传操作函数migrate 对多子群提供支持,它的一个功能是在子群中交换个体。

一个单一种群通过使用工具箱中函数修改数据结构,使其分为许多子种群,这些子种群被保存在连续的数据单元块中。

高层函数如select 和reins 可独立地操作子种群,包含在一个数据结构中的每一子种群允许独自向前衍化。

基于孤岛或回迁模式,migrate 允许个体在子种群中迁移。

5.2 遗传算法中的通用函数在这一节,将详细介绍在MATLAB 中用于遗传算法的各种工具箱函数,对每个函数从功能、语法格式、使用说明以及用法举例等方面进行阐述。

关于每个函数的适用信息由在线帮助工具提供。

5.2.1 函数 bs2rv功能:二进制串到实值的转换格式:Phen = bs2rv(Chrom,FieldD)详细说明:Phen = bs2rv (Chrom, FieldD),根据译码矩阵FieldD 将二进制串矩阵Chrom 转换为实值向量。

返回矩阵Phen 包含对应的种群表现型。

使用格雷编码的二进制染色体表示被推荐作为量化间隔的规则海明距离,可使遗传搜索减少欺骗,设置量化点间刻度的可选方案是选择线性或对数编码从二进制变换到实值。

对数刻度用于决策变量的范围不知道,作为大范围参数的边界时,搜索可用较少的位数,以减少GA 的内存需求和计算量。

矩阵FieldD 有如下结构:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡ubin lbin scale code ub lb len 这里矩阵的行组成如下:len 是包含在Chrom 中每个子串长度,注意sum(len )等于length(Chrom)。

lb 和ub 是行向量,分别指明每个变量使用的下界和上界。

code 是二进制行向量,指明子串是怎样编码的,code (i)=1为标准的二进制编码,code (i)=0则为格雷编码。

scale 是二进制行向量,指明每个子串是否使用对数或算术刻度,scale (i) = 0则为算术,scale (i) = 1则为对数。

lbin 和 ubin 是二进制行向量,指明表示范围中是否包含每个边界。

选择lbin =0或ubin =0则从表示范围中去掉边界,lbin =1或ubin = 1则在表示范围中包含边界。

例5.1 函数bs2rv 应用举例。

下面的二进制种群Chrom ,由函数crtbp 创建,表示在[-1,10]之间的一组简单变量,程序代码表示如何使用函数bs2rv 将算术表示的格雷码或二进制串表示转换为实值表现型。

Chrom = crtbp(4,8) % 创建任意染色体,如为二进制串0000011110001001chrom 0010100011011011⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦FieldD = [8; -1; 10; 1; 0; 1; 1]; % 包括边界Phen = bs2rv(Chrom,FieldD) % 转换二进制到实值,使用算术刻度0.78439.3961phen 1.07065.2980-⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭ FieldD = [8; 1; 10; 1; 1; 0; 0];% 不包括边界 Phen = bs2rv(Chrom,FieldD) % 转换二进制到实值,使用对数刻度6.62235.0615phen 2.72771.5236⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭算法说明:bs2rv 作为GA 工具箱的一个M 文件执行,如果使用对数刻度,其范围必须不能包含零。

5.2.2 函数 crtbase功能:创建基向量格式:BaseVec = crtbase(Lind, Base)详细说明:crtbase 产生向量的元素对应染色体结构的基因座,使用不同的基本字符表示建立种群时这个函数可与函数crtbp 联合使用。

BaseV ec = crtbase(Lind, Base)创建长度为Lind 长的向量,它的每个元素由基本字符决定,如果Lind 是向量,BaseVec 的长度为Lind 的总长,如果Base 也是一个长为Lind 长的向量,则BaseVec 是一组由Lind 和基本字符Base 的元素决定长度的基本字符组组成。

当描述染色体结构的基因位基本字符时,最后一选项是有用的。

例5.2 函数BaseV ec 应用举例。

下面的程序代码为种群创建一有4个基数为8的基本字符{0,1,2,3,4,5,6,7}和6个基数为5的基本字符{0,1,2,3,4}的基本字符向量。

BaseV= crtbase ([4 6], [8 5])BaseV =[8 8 8 8 5 5 5 5 5 5]参见:crtbp ,bs2rv5.2.3 函数 crtbp功能:创建初始种群格式:① [Chrom,Lind,BaseV] = crtbp(Nind,Lind)② [Chrom,Lind,BaseV] = crtbp(Nind,BaseV)③ [Chrom,Lind,BaseV] = crtbp(Nind,Lind,Base)详细说明:遗传算法的第一步是创建由任意染色体组成的原始种群。

crtbp 创建一元素为随机数的矩阵Chrom 。

格式①创建一大小为Nind× Lind 的随机二元矩阵,这里Nind 指定种群中个体的数量,Lind 指定个体的长度。

此格式习惯于指定染色体的尺寸(维度)。

格式②返回长度为Lind 的染色体结构,染色体基因位的基本字符由向量BaseV 决定。

格式③用于产生基本字符为Base 的染色体矩阵。

如果Base 是向量,Base 的元素值指定了染色体的基因位的基本字符。

在这种情况下,右边的第二个变元可省略,即为格式②。

例5.3 使用函数crtbp 创建初始种群的应用举例。

① 创建一个长度为9、有6个个体的随机种群。

[Chrom,Lind,BaseV] = crtbp (6,9)或[Chrom,Lind,BaseV] = crtbp(6,9,BaseV)运行后得0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1Chrom 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 = 1 0 0 1 1 0 1 1 0 1 1⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭Lind = 9;BaseV = [ 2 2 2 2 2 2 2 2 2 ];② 创建一长度为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,9],[8 8 8 8 4 4 4 4 4]);运行后得431120203147521110130100002Chrom 155720231457701303424033110⎛⎫ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭Lind = 9;BaseV = [8 8 8 8 4 4 4 4 4];算法说明:crtbp 是GA 工具箱中的一个M 文件,它使用了MA TLAB 随机函数rand 。

参见:crtbase ,crtrp5.2.4 函数 crtrp。

相关文档
最新文档