主要内容

gamultiobj.

利用遗传算法求解多个适应度函数的Pareto前沿

描述

例子

x= gamultiobj (乐趣nvars发现x帕累托前沿中定义的目标函数乐趣nvars为优化问题的维数(决策变量的个数)。解决方案x是局部的,这意味着它可能不在全球帕累托前线。

笔记

传递额外参数说明如何在必要时向目标函数和非线性约束函数传递额外参数。

例子

x= gamultiobj (乐趣nvars一个b找到一个局部帕累托集合x服从线性不等式 一个 x b .看到线性不等式约束gamultiobj.金宝app仅支持默认情况下的线性约束PopulationType选项(“doubleVector”).

x= gamultiobj (乐趣nvars一个bAeqBEQ.找到一个局部帕累托集合x服从线性等式 一个 e x b e 和线性不平等 一个 x b ,请参阅线性等式约束.(设置一个= []b=[]如果不存在不平等的话。)gamultiobj.金宝app仅支持默认情况下的线性约束PopulationType选项(“doubleVector”).

例子

x= gamultiobj (乐趣nvars一个bAeqBEQ.乌兰巴托定义一组设计变量的上下限x这样就可以在这个范围内找到一个局部Pareto集x乌兰巴托,请参阅绑定约束. 将空矩阵用于AeqBEQ.如果没有存在线性平等约束。gamultiobj.金宝app仅支持默认约束PopulationType选项(“doubleVector”).

x= gamultiobj (乐趣nvars一个bAeqBEQ.乌兰巴托nonlcon找到受中定义的约束的帕累托集nonlcon.功能nonlcon接受x并返回向量c量表信,分别代表非线性不等式和等分。gamultiobj.最小化乐趣这样c (x)0量表(x) = 0.(设置磅= []ub=[]如果没有界限。)gamultiobj.金宝app仅支持默认的非线性约束PopulationType选项(“doubleVector”).

例子

x= gamultiobj (乐趣nvars一个bAeqBEQ.乌兰巴托选项x= gamultiobj (乐趣nvars一个bAeqBEQ.乌兰巴托nonlcon选项找到一个Pareto集x默认优化参数替换为值选项.创建选项使用optimoptions(推荐)或结构。

例子

x= gamultiobj (乐趣nvars一个bAeqBEQ.乌兰巴托nonlconintconx= gamultiobj (乐趣nvars一个bAeqBEQ.乌兰巴托nonlconintcon选项要求中列出的变量intcon取整数值。

笔记

当存在整数约束时,gamultiobj.不接受非线性平等约束,只有非线性不等式约束。

x= gamultiobj (问题找到帕累托设定的问题,在那里问题是描述的结构问题

xfval.]=gamultiobj(___,对于任何输入变量,返回一个矩阵fval.中定义的所有适应度函数的值乐趣对于所有的解金宝搏官方网站xfval.nf列,nf是目标的数量,并且具有相同的行数为x

xfval.exitflag输出]=gamultiobj(___返回exitflag,该整数标识算法停止的原因,并且输出,该结构包含有关优化过程的信息。

例子

xfval.exitflag输出人口分数]=gamultiobj(___返回人口,其行是最终population,并且分数,最终人口的分数。

例子

全部收缩

求一个简单的多目标问题的帕累托前沿。有两个目标和两个决策变量x

fitnessfcn = @ (x)[规范(x) ^ 2 * 0.5规范(x (:) - (2, 1)) ^ 2 + 2);

找到此目标函数的帕累托前面。

rng违约%的再现性x=gamultiobj(fitnessfcn,2);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站

绘制解决点。

情节(x (: 1) x (:, 2),“高”)包含("x(1)") ylabel ('x(2)')标题(参数空间中的帕累托点

图中包含一个axes对象。参数空间中标题为Pareto Points的axes对象包含一个line类型的对象。

要了解线性约束对这个问题的影响,请参见带线性约束的多目标问题

这个例子展示了如何在存在线性约束的情况下找到多目标问题的Pareto前沿。

有两个目标函数和两个决策变量x

fitnessfcn = @ (x)[规范(x) ^ 2 * 0.5规范(x (:) - (2, 1)) ^ 2 + 2);

线性约束为 x 1 + x 2 1 / 2

一个= [1];b = 1/2;

找到帕累托。

rng违约%的再现性X = GAPULTIOBJ(Fitnessfcn,2,A,B);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站

画出约束解和线性约束。

情节(x (: 1) x (:, 2),“高”t = linspace(-1/2,2);Y = 1/2 - t;持有情节(t y“b——”)包含("x(1)") ylabel ('x(2)')标题(参数空间中的帕累托点)持有离开

图中包含一个轴对象。标题为参数空间中的帕累托点的轴对象包含2个类型为line的对象。

从这个问题中去除线性约束的效果,请参见简单的多目标问题

求两个适应度函数的帕累托前沿sin (x)cos (x)的时间间隔 0 x 2 π

fitnessfcn = @(x)[sin(x),cos(x)];nvars = 1;lb = 0;UB = 2 * pi;rng违约再现性的百分比据nvar x = gamultiobj (fitnessfcn ,[],[],[],[], 磅,乌兰巴托)
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站
x =18×14.7124 4.7124 3.1415 3.6733 3.9845 3.4582 3.9098 4.4409 4.0846 3.8686⋮

绘制解决方案。gamultiobj.沿整个帕累托前沿查找点。

图(sin(x),cos(x),的r *)包含('sin(x)') ylabel (“cos (x)”)标题(“帕累托面前”)传说(“帕累托阵线”

图中包含一个轴对象。带有标题帕累托前线的轴对象包含类型线的对象。此对象代表Paroto Front。

找到并绘制双目标谢弗第二个函数的帕累托前沿。这个函数有一个断开的帕累托前端。

将此代码复制到MATLAB®路径上的函数文件中。

作用y = schaffer2 (x)% y有两列%初始化两个目标和所有xY =零(长度(x),2);评估第一个目标。%这一目标是分段连续的。为了i = 1:长度(x)如果x(i)<=1y(i,1)=-x(i);埃尔塞夫x(i)<=3y(i,1)=x(i)-2;埃尔塞夫X (i) <=4 y(i,1) =4 - X (i);别的Y (i,1) = x(i) - 4;结束结束评估第二个目标Y (:,2) = (x -5).^2;

规划两个目标。

x = -1:0.1:8;y = schaffer2(x);绘图(x,y(:,1),“r”, x, y (:, 2),“b”);包含xylabel'Schaffer2(x)'传奇(“目标1”《目标2》

这两个目标函数相互竞争x在范围内(1、3),[4,5]. 但是,帕累托最优前沿仅由两个断开的区域组成,对应于x在范围内[1,2][4,5].有不连通的区域,因为区域(2、3)差不多[4,5].在这个范围内,目标1有相同的价值观,但客观吗2更小。

设置边界以保持种群成员在范围内$-5\le x\le 10$

磅= 5;乌兰巴托= 10;

设置选项以查看帕累托前面gamultiobj.运行。

选择= optimoptions (“gamultiobj”'plotfcn', @gaplotpareto);

调用gamultiobj.

rng违约%的再现性[x,fval,exitflag,output]=gamultiobj(@schaffer2,1,[],[],[],[],[],[],[],[],[],[],[],[],lb,ub,options);
优化终止:超过了最大代数。

在两个问题变量中创建一个双目标函数。

rng违约%的再现性M = diag([-1 -1]) + randn(2)/4;%两个问题变量有趣= @ (x) [(x ')。^2 / 30 + M*x'];%两个目标

指定第二个变量必须是整数。

intcon = 2;

指定问题边界帕累托绘图函数,人口规模为100。

Lb = [0 0];Ub = [100 50];选择= optimoptions (“gamultiobj”“plotfcn”“gaplotpareto”...“PopulationSize”, 100);

找到问题的帕累托集合。

据nvar = 2;一个= [];b = [];Aeq = [];说真的= [];nonlcon = [];[x, fval] = gamultiobj (Aeq有趣,据nvar, A, b,说真的,磅,乌兰巴托,nonlcon, intcon,选项);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站

图遗传算法包含轴对象。带有标题帕累托前线的轴对象包含类型线的对象。

列出10个解,注意第二个变量是整金宝搏官方网站数值的。

x (1:10,:)
ans =10×28.3393 28.0000 12.9927 49.0000 7.1611 27.0000 7.0210 18.0000 0.0004 12.0000 9.089 44.0000 9.3974 29.0000 0.5537 17.0000 6.4010 17.0000 7.0531 31.0000

运行一个简单的多目标问题并获得所有可用的输出。

为再现性设置随机数生成器。

rng违约

设置适应度函数为kur_multiobjective,一个具有三个控制变量并返回两个适应度函数值的函数。

fitnessfcn = @kur_multiobjective;据nvar = 3;

kur_multiobjective函数的代码如下。

作用y = kur_multiobjective (x)%多目标问题的KUR_多目标函数。这个双目标问题的pareto最优集是非凸的为%以及断开连接。函数KUR_MULTIOBJECTIVE计算两个%目标并返回大小为2 * 1的向量y。%参考:Kalyanmoy Deb,“使用多目标优化%进化算法”,约翰·威利父子公司ISBN 047187339%版权所有2007 MathWorks,Inc。%初始化两个目标Y =零(2,1);计算第一个目标为了i=1:2y(1)=y(1)-10*exp(-0.2*sqrt(x(i)^2+x(i+1)^2));结束计算第二目标为了i=1:3y(2)=y(2)+abs(x(i))^0.8+5*sin(x(i)^3;结束

设置所有变量的上下限。

Ub = [5 5 5];磅=乌兰巴托;

找到这个问题的帕累托前沿和所有其他输出。

[x, fval exitflag、输出人口,分数)= gamultiobj(据nvar fitnessfcn,...[],[],[],[], 磅,乌兰巴托);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站

检查一些返回变量的大小。

Sizex = size(x) sizepopulation = size(population) sizescores = size(scores)
Sizex = 18 3 sizepopulation = 50 3 sizescores = 50 2

返回的帕累托前线包含18个点。最终人口中有50人。每个人人口行有三个维度,对应于三个决策变量。每个分数行有两个维度,对应两个适应度函数。

输入参数

全部收缩

适应度函数要优化,指定为函数句柄或函数名。

乐趣是一个接受双精度实行向量的函数x长度nvars返回一个实向量F (x)目标函数值的。关于写作的细节乐趣,请参阅计算目标函数

如果你设定使用矢量化选项真正的, 然后乐趣接受大小矩阵n——- - - - - -nvars,其中矩阵表示n个人。乐趣返回一个size的矩阵n——- - - - - -,在那里为目标函数的个数。看到向适应度函数向量化

例子:@ (x) (sin (x), cos (x))

数据类型:字符|function_handle|字符串

变量数,指定为正整数。求解器通过了长度的行向量nvars乐趣

例子:4

数据类型:

线性不等式约束,指定为真实矩阵。一个是一个——- - - - - -nvars矩阵,是不平等的数量。

一个编码线性不等式

A * x < =

哪里x列向量是nvars变量x(:),b是一列矢量元素。

例如,给出约束条件A=[1,2;3,4;5,6]b =(10、20、30)指定这些金额:

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30。

例子:将x分量的和设为1或更小,取A=一(1,N)b = 1

数据类型:

线性不等式约束,指定为实向量。b是一个元素向量相关的一个矩阵。如果你通过b作为一排矢量,求解器内部转换b到列向量b(:)

b编码线性不等式

A * x < =

哪里x列向量是nvars变量x(:),一个矩阵的大小是多少——- - - - - -nvars

例如,给出约束条件A=[1,2;3,4;5,6]b =(10、20、30)指定这些金额:

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30。

例子:将x分量的和设为1或更小,取A=一(1,N)b = 1

数据类型:

线性等式约束,指定为实矩阵。Aeq是一个——- - - - - -nvars矩阵,是等式的个数。

Aeq编码线性等式

Aeq * x =说真的

哪里x列向量是nvars变量x(:),BEQ.是一列矢量元素。

例如,给出约束条件Aeq =[1、2、3、2、4、1]说真的=(10、20)指定这些金额:

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20。

例子:将x分量的和设为1,取Aeq = 1 (1, N)说真的= 1

数据类型:

线性等式约束,指定为实向量。BEQ.是一个元素向量相关的Aeq矩阵。如果你通过BEQ.作为一排矢量,求解器内部转换BEQ.到列向量说真的(:)

BEQ.编码线性等式

Aeq * x =说真的

哪里x列向量是nvars变量x(:),Aeq矩阵的大小是多少微地震——- - - - - -N

例如,给出约束条件Aeq =[1、2、3、2、4、1]说真的=(10、20)指定这些金额:

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20。

例子:将x分量的和设为1,取Aeq = 1 (1, N)说真的= 1

数据类型:

下界,指定为实向量或实数组。如果numel(lb)= nvars, 然后指定x(我)> =磅(我)对所有

如果元素个数(磅)<据nvar, 然后指定x(我)> =磅(我)为了1<=i<=numel(磅)

在这种情况下,求解器发出警告。

例子:要指定所有x分量为正,请设置1磅= 0(据nvar)

数据类型:

上界,指定为实向量或实数组。如果元素个数(乌兰巴托)=据nvar, 然后乌兰巴托指定x(i)<=ub(i)对所有

如果元素个数(乌兰巴托)<据nvar, 然后乌兰巴托指定x(i)<=ub(i)为了1 <= I <= numel(ub)

在这种情况下,求解器发出警告。

例子:要指定所有x分量小于1,请设置乌兰巴托的=(据nvar, 1)

数据类型:

非线性约束,指定为函数句柄或函数名。nonlcon是一个接受行向量的函数x返回两个行向量,c (x)量表(x)

  • c (x)非线性不等式的行向量约束在x.的gamultiobj.函数试图满足c (x) < = 0的所有条目c

  • 量表(x)行向量是非线性等式约束吗x.的gamultiobj.函数试图满足量表(x) = 0的所有条目量表信

如果你设定使用矢量化选项真正的, 然后nonlcon接受大小矩阵n——- - - - - -nvars,其中矩阵表示n个人。nonlcon返回一个size的矩阵n——- - - - - -mc在第一个论点中,在哪里mc为非线性不等式约束的个数。nonlcon返回一个size的矩阵n——- - - - - -MCEQ.在第二个论证中MCEQ.为非线性等式约束的个数。看到向适应度函数向量化

例如,x = gamultiobj(@ myfun,nvars,a,b,aeq,beq,lb,ub,@ mycon),在那里麦肯MATLAB是一种®功能如:

函数[c,ceq] = mycon(x)%计算非线性不等式在x. ceq =…计算x处的非线性等式。

有关更多信息,请参见非线性约束

数据类型:字符|function_handle|字符串

的输出,指定为优化选项optimoptions或结构。请参阅选项详细信息遗传算法的选择

optimoptions中列出的选项斜体字.看到Options隐藏的选项

  • 价值{}表示默认值。

  • {} *表示存在线性约束时的默认值MutationFcn还有当有界限的时候。

  • 我*指示解算器以不同方式处理整数约束的选项。

  • 纳米表示该选项不适用于gamultiobj.

选项GA.gamultiobj.

选项 描述
约束耐受性

确定非线性约束下的可行性。同时,max (sqrt (eps), ConstraintTolerance)确定关于线性约束的可行性。

对于期权结构,请使用TolCon

正标量|{1e-3}

CreationFcn

函数创建初始填充。指定为内置创建函数或函数句柄的名称。看到人口的选择

{' gacreationuniform '}|{' gacreationlinearfeasible} *|'gacreationnonlinearfeasible'|{' gacreationuniformint '}我*为了GA.|{' gacreationsobol '}我*为了gamultiobj.|自定义创建功能

CrossoverFcn

算法用来创建交叉子结点的函数。指定为内置交叉函数或函数句柄的名称。看到交叉选项

{' crossoverscattered '}为了GA.{' crossoverintermediate} *为了gamultiobj.|{'crossoverlace'}我*|“crossoverheuristic”|“crossoversinglepoint”|“crossovertwopoint”|'跨过竞技'|自定义转换函数

CrossoverFraction

跨界功能产生的下一代人口比例,不包括精英子女。

正标量|{0.8}

显示

显示水平。

“关闭”|“通路”|“诊断”|{'final'}

DistanceMeasureFcn

计算个人距离测量的功能。指定为内置距离测量功能或函数句柄的名称。该值适用于判定变量或设计空间(基因型)或功能空间(表型)。默认值'distancercowing'是在功能空间(表型)。为gamultiobj.只有。看到多目标的选择

对于选项结构,请使用函数句柄,而不是名称。

{'distancercowding'}意思等同于{@distancecrowding,“表现型”}|{@ distancrovding,'genotype'}|自定义距离函数

EliteCount

纳米正整数,指定当前一代中有多少个体可以保证存活到下一代。不习惯在gamultiobj.

正整数|{装天花板(0.05 * PopulationSize)}|{0.05 *(默认PopulationSize)}整数的问题

FitnessLimit

纳米若适应度函数为FitnessLimit,算法暂停。

标量|{-Inf}

FitnessScalingfcn.

度量适应度函数值的函数。指定为内置缩放函数或函数句柄的名称。选项不可用gamultiobj.

{' fitscalingrank '}|“fitscalingshiftlinear”|“fitscalingprop”|“fitscalingtop”|自定义适应度缩放函数

FunctionTolerance

当最优适应度函数的平均相对变化值超过时,算法停止MaxStallGenerations代小于或等于FunctionTolerance如果失速试验“geometricWeighted”,如果加权平均相对变化小于或等于,则算法停止FunctionTolerance

gamultiobj.,算法停止时,相对变化的几何平均值的扩散options.maxstallgenerations.世代少于选项。FunctionTolerance,且最终利差小于过去的平均利差options.maxstallgenerations.一代又一代。看到gamultiobj算法

对于期权结构,请使用TolFun

正标量|{1 e-6}为了GA.{1e-4}为了gamultiobj.

HybridFcn

我*函数,该函数在GA.终止。指定为名称或函数句柄。

或者,指定混合函数及其选项的单元格数组。看到ga混合函数

gamultiobj.,唯一的混合函数是@fgoalattain.看到gamultiobj混合函数

当问题有整数约束时,不能使用混合函数。

看到何时使用混合函数

函数名或句柄|'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

1×2单元阵列|{@solver, hybridoptions},在那里解算器= fminsearchpatternsearchfminunc,或fmincon{[]}

初始惩罚

纳米我*惩罚参数的初始值

正标量|{10}

InitialPopulationMatrix

初始种群用于遗传算法的种子。有人口规模行和N列,N为变量的个数。你可以通过部分人口,也就是少于人口规模行。在这种情况下,遗传算法使用CreationFcn生成剩余的填充成员。看到人口的选择

对于期权结构,请使用初始化

矩阵|{[]}

initialpopulationrange.

表示初始种群中个体的范围的矩阵或向量。适用于gacreationuniform创建函数。GA.转移并缩放默认初始范围以匹配任何有限界限。

对于期权结构,请使用Popinitrange.

矩阵还是向量|{(-10; 10)}对于无界组件,{[1 e4 + 1; 1 e4 + 1]}对于整数约束问题的无界分量,{(磅;乌兰巴托)}对于有界组件,修改默认范围以匹配单边边界

InitialScoresMatrix.

用于确定健身的初始分数。有人口规模行和核因子列,核因子为适应度函数的个数(1为了GA.,大于1为了gamultiobj.).您可以通过部分分数矩阵,这意味着一个少于人口规模行。在这种情况下,求解器在计算适应度函数时填写分数。

对于期权结构,请使用初始分数

列向量为单目标|,列矩阵为多目标|{[]}

MaxGenerations

算法停止前的最大迭代次数。

对于期权结构,请使用世代

正整数|{100 * numberOfVariables}为了GA.{200 * numberOfVariables}为了gamultiobj.

MaxStallGenerations

当最优适应度函数的平均相对变化值超过时,算法停止MaxStallGenerations代小于或等于FunctionTolerance如果失速试验“geometricWeighted”,如果加权平均相对变化小于或等于,则算法停止FunctionTolerance

gamultiobj.,算法停止时,相对变化的几何平均值的扩散options.maxstallgenerations.世代少于选项。FunctionTolerance,且最终利差小于过去的平均利差options.maxstallgenerations.一代又一代。看到gamultiobj算法

对于期权结构,请使用StallGenLimit

正整数|{50}为了GA.{100}为了gamultiobj.

MaxStallTime

纳米如果目标函数没有改进,则算法停止MaxStallTime秒,以抽搐toc

对于期权结构,请使用StallTimeLimit

积极的标量| {Inf}

MaxTime

算法在运行for后停止MaxTime秒,以抽搐toc.这个限制在每次迭代之后都会执行,所以GA.当迭代花费大量时间时,可能会超过该限制。

对于期权结构,请使用期限

正标量|{inf}

MigrationDirection

的方向迁移。看到迁移选项

'两个都'|{“向前”}

MigrationFraction

从0到1的标量,指定每个子种群中迁移到不同子种群的个体的比例。看到迁移选项

标量|{0.2}

MigrationInterval

正整数,指定发生在亚种群间个体迁移之间的代数。看到迁移选项

正整数|{20}

MutationFcn

产生突变子的功能。指定为内置突变函数或函数句柄的名称。看到突变的选择

{' mutationgaussian '}为了GA.没有约束|{' mutationadaptfeasible} *为了gamultiobj.GA.与约束|{' mutationpower '}我*|“突变阳性杆菌病”|“mutationuniform”|定制的变异函数

NonlinearConstraintAlgorithm

非线性约束算法。看到非线性约束求解算法.选项不可改变gamultiobj.

对于期权结构,请使用非inconalongorithm.

{' auglag '}为了GA.{'惩罚'}为了gamultiobj.

OutputFcn

的函数GA.每次迭代时调用。指定为函数句柄或函数句柄的单元格数组。看到输出函数的选择

对于期权结构,请使用OutputFcns

功能手柄或单元格阵列函数处理{[]}

ParetoFraction

从0到1的标量指定个人的分数,以保持第一帕施转移前线,而求解器选择来自较高前部的个体gamultiobj.只有。看到多目标的选择

标量|{0.35}

PenaltyFactor

纳米我*点球更新参数。

正标量|{100}

PlotFcn

绘制由算法计算的数据的函数。指定为内置绘图函数、函数句柄或内置名称或函数句柄的单元格数组的名称。看到绘图选项

对于期权结构,请使用PlotFcns

GA.gamultiobj.{[]} |' gaplotdistance' |' gaplotgenealogy' |' gaplotselection' |' gaplotscorediversity' |'gaplotscores' |' gaplotstops ' |' gaplotmaxconstr' |自定义绘图功能

GA.只有:'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' | 'gaplotrange'

gamultiobj.只有:'gaplotpareto'|'gaplotcaretodistance'|'gaplotrankhist'|'gaplotspread'

PlotInterval

正整数指定对绘制函数的连续调用之间的几代数量。

正整数|{1}

人口规模

人口规模。

正整数|{50}变量数<=5{200}否则|{最小(最大(10 *据nvar, 40), 100)}整数的问题

PopulationType

人口的数据类型。必须为“doubleVector”对于混合整数问题。

“位”|“自定义”|{' doubleVector '}

GA.忽略所有约束:PopulationType被设置为“位”“自定义”.看到人口的选择

SelectionFcn

选择交叉和突变的孩子的父母的功能。指定为内置选择函数或函数句柄的名称。

gamultiobj.仅用于“selectiontournament”

{' selectionstochunif '}为了GA.{'selectiontournament'}为了gamultiobj.|“selectionremainder”|“selectionuniform”|“selectionroulette”|自定义选择函数

失速试验

纳米停止测试类型。

“geometricWeighted”|{' averageChange '}

使用指α.

并行计算适应度和非线性约束函数。请参阅向量化和并行选项(用户函数评估)如何在全局优化工具箱中使用并行处理

真正的|{假}

使用矢量化

指定是否对函数进行矢量化。看见向量化和并行选项(用户函数评估)向适应度函数向量化

对于期权结构,请使用量化的的值“上”“关闭”

真正的|{假}

例子:optimoptions('gamultiobj'、'PlotFcn'、@gaplotpareto)

整数变量,指定为从1nvars.每个值在intcon代表A.x整数值的组件。

笔记

intcon非空的,nonlcon必须返回空量表信

例子:将偶数项指定为x是整数值,设置intcon据nvar 2:2:

数据类型:

问题描述,指定为包含这些字段的结构。

适合性

健身功能

nvars

设计变量数

Aineq

一个线性不等式约束的矩阵

Bineq

b线性不等式约束的矢量

Aeq

Aeq线性等式约束矩阵

BEQ.

BEQ.线性等式约束向量

上下界x

乌兰巴托

上界x

nonlcon

非线性约束函数

intcon 整变量指数
rngstate

字段重置随机数生成器的状态

解算器

“gamultiobj”

选项

选择使用optimoptions或者是期权结构

必须指定字段适合性nvars,选项.其余的是可选的gamultiobj.

数据类型:结构体

输出参数

全部收缩

帕累托点,返回为——- - - - - -nvars数组,在哪里是帕累托前面的点数。每一行的x代表帕累托前面的一点。

帕累托前面的函数值,作为一个返回——- - - - - -nf大批。是帕累托前沿上的点数,以及nf是适应度函数的数目。每行fval.表示中一个Pareto点处的函数值x

原因gamultiobj.已停止,返回为整数。

exitflag价值 停止条件
1

分布值相对变化的几何平均值options.maxstallgenerations.世代少于选项。FunctionTolerance,且最终利差小于过去的平均利差options.maxstallgenerations.一代又一代

0

已超过最大生成数

-1

由输出函数或绘图函数终止的优化

-2

没有找到可行点

-5

超过了期限

有关优化过程的信息,作为具有这些字段的结构返回。

输出字段 意义
problemtype

类型的问题:

  • “不受约束”-无约束

  • “boundconstraints”-仅限约束

  • “linearconstraints”-线性约束,带或不带约束

  • “nonlinearconstr”- 非线性约束,有或没有其他类型的约束

rngstate

状态的MATLAB随机数生成器,就在算法开始之前。中的值可以使用rngstate复制…的输出gamultiobj..看到复制的结果

一代又一代 代的总数,不包括HybridFcn迭代。
funccount 函数求值的总数。
消息 gamultiobj.退出消息。
averagedistance 平均“距离”,默认情况下是帕累托前端成员与其平均值之间的差的标准偏差。
传播 “距离”的组合和衡量决赛前两次迭代之间的帕累托正面点的运动。
最大约束 最大约束违背在最后的帕累托集合。

最后的人口,返回为n——- - - - - -nvars数组,在哪里n是人口的成员数。

最终人口的分数,作为n——- - - - - -nf大批。n是人口成员的数量,以及nf为适应度函数的个数。

当存在非线性约束时,gamultiobj.设定分数不可行的人口成员

更多关于

全部收缩

帕累托前沿

一个帕累托前面是参数空间(决策变量空间)中具有非劣适应度函数值的点的集合。

换句话说,对于帕累托前部的每个点,只能通过劣化另一个适合函数来改善一个健身功能。有关详细信息,请参阅什么是多目标优化?

就像在局部优化与全局优化在美国,帕累托前沿可能是局部的,但不是全局的。“局部”是指Pareto点相对于附近的点并不逊色,但参数空间中距离较远的点在每个分量中的函数值可能较低。

算法

gamultiobj.使用一种受控的精英遗传算法(NSGA-II的变体)[1]).精英型遗传算法总是偏爱适合度值(等级)较高的个体。受控制的精英遗传算法也青睐那些有助于增加种群多样性的个体,即使它们的适应度值较低。为了收敛到最优Pareto前沿,保持种群的多样性是很重要的。随着算法的发展,通过控制种群中的精英成员来保持多样性。两个选项,ParetoFractionDistanceMeasureFcn控制精英主义。ParetoFraction限制帕累托前线(精英成员)的人数。距离函数,由DistanceMeasureFcn通过偏爱那些在前线相对较远的个体,有助于保持前线的多样性。如果传播帕累托前沿运动的一个尺度是很小的。有关详细信息,请参阅gamultiobj算法

替代功能

应用程序

优化活动编辑器任务为gamultiobj.

参考文献

[1] Deb, Kalyanmoy。使用进化算法的多目标优化.英国奇切斯特:约翰·威利父子公司,2001年出版。

扩展功能

介绍在R2007B.