gamultiobj

利用遗传算法寻找多重适应度函数的帕累托前沿

描述

例子

x= gamultiobj (开玩笑,nvars)认定xPareto前沿定义的目标函数开玩笑nvars为优化问题的维数(决策变量的数量)。解决方案x是本地的,这意味着它可能不会对全球帕累托前沿。

注意

传递额外的参数(Optimization Toolbox)说明如何向目标函数和非线性约束函数传递额外的参数(如有需要)。

例子

x= gamultiobj (开玩笑,nvars,一个,b)发现当地的帕累托集x受线性不等式 一个 * x b 。看到不等式约束条件(优化工具箱)。gamultiobj万博1manbetx支持线性约束只为默认PopulationType选项(“doubleVector”)。

x= gamultiobj (开玩笑,nvars,一个,b,Aeq,BEQ)发现当地的帕累托集x受线性等式 一个 e * x = b e 和线性不等式 一个 * x b ,请参阅线性等式约束(优化工具箱)。(组A = []B = []如果不存在不平等。)gamultiobj万博1manbetx支持线性约束只为默认PopulationType选项(“doubleVector”)。

例子

x= gamultiobj (开玩笑,nvars,一个,b,Aeq,BEQ,,UB)定义了设计变量的一组上限和下限的x使本地帕累托集的范围内被发现xUB,请参阅界约束(优化工具箱)。使用空矩阵AeqBEQ如果不存在线性等式约束。gamultiobj万博1manbetx支持绑定的限制仅适用于默认PopulationType选项(“doubleVector”)。

x= gamultiobj (开玩笑,nvars,一个,b,Aeq,BEQ,,UB,nonlcon)根据定义的约束条件找到一个Pareto集合nonlcon。功能nonlcon接受x并返回向量c量表信,分别表示非线性不等式和等式。gamultiobj最小化开玩笑这样C(X)0CEQ(X)= 0。(组磅= []UB = []如果没有边界存在。)gamultiobj万博1manbetx支持非线性约束只为默认PopulationType选项(“doubleVector”)。

例子

x= gamultiobj (开玩笑,nvars,一个,b,Aeq,BEQ,,UB,选项)要么x= gamultiobj (开玩笑,nvars,一个,b,Aeq,BEQ,,UB,nonlcon,选项)找到一个帕累托集x由值替换默认的优化参数选项。创建选项运用optimoptions(推荐)或通过从优化应用程序导出。

x= gamultiobj (问题)找到帕累托集合问题,其中问题是一个结构。创建问题通过从优化应用程序导出的一个问题,如在导入和导出您的工作(优化工具箱)。

(x,FVAL] = gamultiobj(___),对于任何输入变量,返回一个矩阵FVAL中定义的所有适应度函数的值开玩笑对于所有的解万博 尤文图斯xFVALNF列,其中NF是目标的数量,并且具有相同的行数为x

(x,FVAL,exitflag,产量] = gamultiobj(___)返回exitflag的整数,识别算法停止的原因,并产量包含优化过程信息的结构。

例子

(x,FVAL,exitflag,产量,人口,分数] = gamultiobj(___)返回人口,其行为最终总体,且分数,最终群体的分数。

例子

全部收缩

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

fitnessfcn = @(X)[范数(X)^ 2,0.5 *范数(X(:) -  [2; -1])^ 2 + 2];

找到帕累托前这个目标函数。

RNG默认%用于重现X = gamultiobj(fitnessfcn,2);
优化终止:在帕累托解小于options.FunctionTolerance蔓延平均变化。万博 尤文图斯

画出解点。

积(X(:,1)中,x(:,2),'KO')xlabel('×(1)')ylabel('×(2)')标题("参数空间中的帕累托点")

要看到在这个问题上的线性约束的效果,看多目标问题的线性约束

这个例子展示了如何找到帕累托前用于在线性约束的存在的多目标问题。

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

fitnessfcn = @(X)[范数(X)^ 2,0.5 *范数(X(:) -  [2; -1])^ 2 + 2];

线性约束 x ( 1 ) + x ( 2 ) 1 / 2

A = [1,1];B = 1/2;

找到帕累托前沿。

RNG默认%用于重现X = gamultiobj(fitnessfcn,2,A,B);
优化终止:在帕累托解小于options.FunctionTolerance蔓延平均变化。万博 尤文图斯

画出约束解和线性约束。

积(X(:,1)中,x(:,2),'KO')T = linspace(-1 / 2,2);Y = 1/2  - 吨;保持图(T,Y,'b--')xlabel('×(1)')ylabel('×(2)')标题("参数空间中的帕累托点")保持

看到去除这一问题的线性约束的效果,看简单的多目标问题

找到帕累托前两个健身功能的sin(x)COS(x)的的时间间隔 0 x 2 π

fitnessfcn = @(X)[的sin(x),COS(X)];nvars = 1;LB = 0;UB = 2 * PI;RNG默认%,持续重现X = gamultiobj(fitnessfcn,nvars,[],[],[],[],LB,UB)
优化终止:在帕累托解小于options.FunctionTolerance蔓延平均变化。万博 尤文图斯
X =18×14.7124 4.7124 3.1415 3.6733 3.9845 3.4582 3.9098 4.4409 4.0846 3.8686⋮

画出的解决方案。gamultiobj发现沿整个Pareto前沿分。

图(的sin(x),cos(x)的,'R *')xlabel('的sin(x)')ylabel('COS(X)')标题(“Pareto前沿”)图例(“帕累托前”)

查找并绘制帕累托前两个目标谢弗的第二功能。这个函数有一个断开Pareto前沿。

这段代码的功能文件复制您的MATLAB®路径上。

功能y = schaffer2 (x)%Y有两列%初始化y代表两个目标,并为所有的xY =零(长度(X),2);评估第一个目标。%这一目标是分段连续。对于I = 1:长度(X)如果X(ⅰ)<= 1个Y(I,1)= -x(ⅰ);ELSEIFX(ⅰ)<= 3 Y(I,1)= X(I)-2;ELSEIFX(ⅰ)<= 4 Y(I,1)= 4  -  X(ⅰ);其他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 \乐X \文件$ 10

磅= 5;乌兰巴托= 10;

设置选项来查看帕累托前方gamultiobj运行。

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

呼叫gamultiobj

RNG默认%用于重现[X,FVAL,exitflag,输出] = gamultiobj(@ schaffer2,1,[],[],[],[],LB,UB,选项);
终止优化:超过最大代数。

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

设置重复性的随机数发生器。

RNG默认

设置健身功能kur_multiobjective,有三个控制变量和返回两个适应度函数值的功能。

fitnessfcn = @kur_multiobjective;nvars = 3;

kur_multiobjective函数有以下代码。

功能Y = kur_multiobjective(x)的一个多目标的问题%KUR_MULTIOBJECTIVE目标函数。%该两目标问题的帕累托最优集合是作为非凸%以及断开。函数KUR_MULTIOBJECTIVE计算两个%的目标,并返回大小2×1的向量y。%%参考:格利亚莫伊·德布,“多目标优化使用%进化算法”,John Wiley和Sons ISBN 047187339%版权所有2007 MathWorks公司对于两个目标初始化%Y =零(2,1);%计算第一目标对于I = 1:2 Y(1)= Y(1) -  10 * EXP(-0.2 * SQRT(X(I)^ 2 + X(I + 1)^ 2));结束%计算第二个目标对于I = 1:3 Y(2)= Y(2)+ ABS(X(i))的0.8 ^ + 5 *的sin(x(I)^ 3);结束

这个功能也出现在例如多目标遗传算法选择

在所有变量设定的上限和下限。

UB = [5 5 5]。LB = -UB;

找到帕累托前,所有其它输出这个问题。

[X,FVAL,exitflag,输出,人口​​,分数] = gamultiobj(fitnessfcn,nvars,...[]、[][],[],磅,乌兰巴托);
优化终止:在帕累托解小于options.FunctionTolerance蔓延平均变化。万博 尤文图斯

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

SIZEX = SIZE(X)= sizepopulation大小(人口)sizescores =尺寸(得分)
SIZEX = 18 3 = sizepopulation 50个3 sizescores = 50 2

返回的帕累托前包含18个点。还有最后的人口的50名成员。每人口行有三个维度,对应三个决策变量。每分数行有两个维数,对应两个适应度函数。

输入参数

全部收缩

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

开玩笑是接受双打的实际行向量函数xnvars返回一个实向量F(X)目标函数值。有关写作的详情开玩笑,请参阅计算目标函数

如果设置了UseVectorized选项真正, 然后开玩笑接受大小的矩阵n-通过-nvars,其中,所述矩阵表示n个人。开玩笑返回大小的矩阵n-通过-,其中是目标函数的数量。看到向量化适应度函数

例子:@(X)[的sin(x),COS(x)]的

数据类型:烧焦|function_handle|

变量数,指定为正整数。解算器通过长度的行向量nvars开玩笑

例子:4

数据类型:

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

一个编码线性不等式

A * X <= b的,

哪里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 <= b的,

哪里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 = BEQ,

哪里x是列向量nvars变量X(:)BEQ是与列矢量元素。

例如,给出约束条件Aeq = [1、2、3、2、4、1]BEQ = [10; 20]指定这些资金:

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

例子:于x组分的总和设置为1,取Aeq = 1 (1, N)说真的= 1

数据类型:

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

BEQ编码线性等式

AEQ * X = BEQ,

哪里x是列向量nvars变量X(:)Aeq是大小的矩阵毫克当量-通过-N

例如,给出约束条件Aeq = [1、2、3、2、4、1]BEQ = [10; 20]指定这些资金:

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

例子:于x组分的总和设置为1,取Aeq = 1 (1, N)说真的= 1

数据类型:

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

如果numel(LB), 然后该指定x(我)> =磅(我)对于1 <= I <= numel(Ib)的

在这种情况下,解决者发出警告。

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

数据类型:

上限,指定为实向量或真正的数组。如果元素个数(乌兰巴托)=据nvar, 然后UB该指定X(ⅰ)<= UB(I)对所有人

如果numel(UB), 然后UB该指定X(ⅰ)<= UB(I)对于1 <= I <= numel(UB)

在这种情况下,解决者发出警告。

例子:要指定所有x分量为小于1,组UB =酮(nvars,1)

数据类型:

非线性约束,指定为功能手柄或函数的名称。nonlcon是接受的行向量的函数x和返回两个行向量,C(X)量表(x)

  • C(X)是在非线性不等式约束的行矢量x。的gamultiobj功能试图满足C(X)<= 0对于所有条目c

  • 量表(x)处于行向量非线性等式约束x。的gamultiobj功能试图满足CEQ(X)= 0对于所有条目量表信

如果设置了UseVectorized选项真正, 然后nonlcon接受大小的矩阵n-通过-nvars,其中,所述矩阵表示n个人。nonlcon返回大小的矩阵n-通过-MC在第一个参数,其中MC为非线性不等式约束的个数。nonlcon返回大小的矩阵n-通过-mceq在第二个参数,其中mceq为非线性等式约束的个数。看到向量化适应度函数

例如,X = gamultiobj(@ myfun,nvars,A,B,AEQ,BEQ,LB,UB,@ mycon),其中myconMATLAB是一种®功能如下:

功能并[c,CEQ] = mycon(X)C = ...%计算非线性不等式x处。CEQ = ...%计算非线性等式x处。

欲了解更多信息,请参阅非线性约束(优化工具箱)。

数据类型:烧焦|function_handle|

优化选项,指定的输出optimoptions或结构。见选项细节遗传算法的选择

创建选项通过使用optimoptions(推荐)或通过优化应用程序导出选项。有关详细信息,请参阅导入和导出您的工作(优化工具箱)。

optimoptions隐藏其中列出的选项斜体。看到选项optimoptions隐藏

  • 在价值观{}表示默认值。

  • {} *表示存在线性约束时的默认值,以及forMutationFcn也当有边界。

  • 我*表明GA为整数约束不同的方式处理选项;这种表示法并不适用于gamultiobj

  • NM表示该选项不适用gamultiobj

对于选项GA, 整数GAgamultiobj

选项 描述
ConstraintTolerance

确定了考虑非线性约束的可行性。同时,MAX(开方(EPS),ConstraintTolerance)确定相对于线性约束可行性。

对于期权的结构,使用TolCon

正标|{1E-3}

CreationFcn

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

{ 'gacreationuniform'}|{' gacreationlinearfeasible} *|自定义创建功能

CrossoverFcn

我*该功能可在算法用来创建交叉孩子。作为指定的名称内置的交叉功能或功能句柄。看到交叉选项

{' crossoverscattered '}对于GA,{' crossoverintermediate} *对于gamultiobj|'crossoverheuristic'|'crossoversinglepoint'|“crossovertwopoint”|'crossoverarithmetic'|自交叉功能

CrossoverFraction

人口在下一代,不包括权贵子弟的比例,即交叉功能造成的。

正标|{0.8}

显示

显示水平。

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

DistanceMeasureFcn

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

对于期权的结构,使用功能句柄,不是一个名字。

{ 'distancecrowding'}装置相同{@ distancecrowding, '表型'}|{@ distancecrowding, '基因型'}|自定义距离函数

EliteCount

NM正整数,指定当前代中有多少个体能够存活到下一代。不习惯在gamultiobj

正整数|{小区(0.05 *族群大小)}|{0.05 *(默认族群大小)}对于混合整数问题

FitnessLimit

NM如果适应度函数达到的值FitnessLimit,算法暂停。

标|{} -Inf

FitnessScalingFcn

该功能可缩放适应度函数的值。作为指定的名称内置缩放功能或者功能的手柄。选项不可用gamultiobj

{ 'fitscalingrank'}|'fitscalingshiftlinear'|'fitscalingprop'|“fitscalingtop”|自定义适应度变换功能

FunctionTolerance

该算法停止如果最好的适应度函数值在平均相对变化MaxStallGenerations代数小于等于FunctionTolerance。如果StallTest'geometricWeighted',则算法停止,如果加权平均相对变化小于等于FunctionTolerance

对于gamultiobj中,该算法停止时的相对变化的在传播的值的几何平均超过options.MaxStallGenerations代小于options.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},其中解算器= fminsearch,patternsearch,fminunc, 要么fmincon{[]}

InitialPenalty

NM我*惩罚参数的初始值

正标|{10}

InitialPopulationMatrix

用于种子遗传算法的初始种群。有族群大小行和N列,其中N是变量的数目。您可以通过部分人口,这意味着比一个少族群大小行。在这种情况下,遗传算法使用CreationFcn生成剩余的人口成员。看到人口的选择

对于期权的结构,使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

指定初始种群中个体范围的矩阵或向量。适用于gacreationuniform创建功能。GA移和鳞默认的初始范围,以匹配任何有限边界。

对于期权的结构,使用PopInitRange

矩阵或向量|{[-10; 10]}无界成分,{[1 e4 + 1; 1 e4 + 1]}对于积分约束问题的无界分量,{(磅;乌兰巴托)}为界的部件,与所述默认范围修改以匹配片面界限。

InitialScoresMatrix

我*初始分数来确定健身。有族群大小行和具有NF列,其中NF为适应度函数的个数(1对于GA,大于1对于gamultiobj)。你可以通过一个部分分数矩阵,这意味着一个比少族群大小行。在这种情况下,求解器在评估适应度函数时填充分数。

对于期权的结构,使用InitialScores

对单一目标列向量|矩阵多目标|{[]}

MaxGenerations

该算法暂停前最大迭代次数。

对于期权的结构,使用

正整数|{100个* numberOfVariables}对于GA,{200个* numberOfVariables}对于gamultiobj

MaxStallGenerations

该算法停止如果最好的适应度函数值在平均相对变化MaxStallGenerations代数小于等于FunctionTolerance。如果StallTest'geometricWeighted',则算法停止,如果加权平均相对变化小于或等于FunctionTolerance

对于gamultiobj中,该算法停止时的相对变化的在传播的值的几何平均超过options.MaxStallGenerations代小于options.FunctionTolerance,并最终扩展小于平均价差在过去options.MaxStallGenerations代。看到gamultiobj算法

对于期权的结构,使用StallGenLimit

正整数|{50}对于GA,{100}对于gamultiobj

MaxStallTime

NM该算法停止,如果有目标函数为无改善MaxStallTime秒,如通过测量抽搐toc

对于期权的结构,使用StallTimeLimit

积极的标量|{}天道酬勤

MaxTime

后运行后的算法停止MaxTime秒,如通过测量抽搐toc。此限制是每次迭代之后执行的,所以GA当一个迭代花费大量的时间可以超过上限。

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

正标|{}天道酬勤

MigrationDirection

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

'都'|{'向前'}

MigrationFraction

从0标至1,指定在每个亚群的个体的馏分迁移到不同的亚群。看到迁移选项

标|{0.2}

MigrationInterval

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

正整数|{20}

MutationFcn

我*功能产生突变的孩子。作为指定的名称的内置功能突变或函数句柄。看到变异选项

{ 'mutationgaussian'}对于GA,{ 'mutationadaptfeasible'} *对于gamultiobj|'mutationuniform'|自定义功能突变

NonlinearConstraintAlgorithm

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

对于期权的结构,使用NonlinConAlgorithm

{' auglag '}对于GA,{'罚款'}对于gamultiobj

OutputFcn

函数GA在每次迭代调用。指定为功能句柄或函数处理的一个单元阵列。看到输出功能选项

对于期权的结构,使用OutputFcns

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

ParetoFraction

从0标至1指定的个人的分数,以保持在第一帕累托前沿而求解器选择的个体从较高方面,对于gamultiobj只要。看到多目标选项

标|{0.35}

PenaltyFactor

NM我*处罚更新参数。

正标|{100}

PlotFcn

功能,通过该算法计算曲线数据。作为指定的名称内建绘图功能,功能手柄,或者一个单元阵列内置名称或函数处理。看到图解选项

对于期权的结构,使用PlotFcns

GA要么gamultiobj:{[]} |' gaplotdistance' |' gaplotgenealogy' |' gaplotselection' |' gaplotscorediversity' |'gaplotscores' |' gaplot' |' gaplotmaxconstr' |自定义绘图功能

GA只有:'gaplotbestf' | 'gaplotbestindiv' | ' gaplotexpected ' | 'gaplotrange'

gamultiobj只有:'gaplotpareto' |'gaplotparetodistance' |'gaplotrankhist' |'gaplotspread'

PlotInterval

正整数,指定连续调用的情节功能之间几代人的数量。

正整数|{1}

族群大小

人口规模。

正整数|{50}什么时候numberOfVariables < = 5,{200}否则|{最小(最大(10 *据nvar, 40), 100)}对于混合整数问题

PopulationType

数据类型的人群。一定是“doubleVector”对于混合整数问题。

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

GA忽略时,所有约束PopulationType被设置为“位”要么“自定义”。看到人口的选择

SelectionFcn

我*功能交叉和变异的孩子的家长选择。作为指定的名称内置选择功能或功能句柄。

gamultiobj唯一用途'selectiontournament'

{' selectionstochunif '}对于GA,{ 'selectiontournament'}对于gamultiobj|“selectionremainder”|“selectionuniform”|'selectionroulette'|自定义选择函数

StallTest

NM停止测试类型。

'geometricWeighted'|{ 'averageChange'}

UseParallel

计算健身和并行非线性约束功能。看到矢量化和并行选项(用户功能评价)如何使用全局优化工具箱并行处理

真正|{假}

UseVectorized

指定是否函数量化。看到矢量化和并行选项(用户功能评价)向量化适应度函数

对于期权的结构,使用矢量化与价值观“上”要么“关闭”

真正|{假}

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

问题的说明中,规定作为包含这些字段的结构。

fitnessfcn

健身功能

nvars

设计变量数

Aineq

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

Bineq

b向量为线性不等式约束

Aeq

Aeq矩阵为线性等式约束

贝克

BEQ向量为线性等式约束

下界x

UB

上界上x

nonlcon

非线性约束函数

rngstate

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

求解

“gamultiobj”

选项

使用选项创建optimoptions还是从优化应用出口

创建问题通过从优化应用程序导出的一个问题,如在导入和导出您的工作(优化工具箱)。

数据类型:结构体

输出参数

全部收缩

帕累托点,返回一个-通过-nvars阵列,其中是帕累托前面的点数。每一行的x代表在帕累托前沿的一个点。

上帕累托前面函数值,返回一个-通过-NF阵列。是点上的帕累托前沿的数量,并且NF是的健身功能的数量。每一行的FVAL表示在一个帕累托点的函数值x

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

exitflag价值 停止条件
1

相对变化的几何平均的分布在中值options.MaxStallGenerations代小于options.FunctionTolerance,并最终扩展小于平均价差在过去options.MaxStallGenerations

0

超过世代的最大数量

-1

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

-2

没有可行的点中找到

-5

超过了期限

关于优化过程中,返回与这些领域的结构信息。

输出字段 含义
problemtype

问题类型:

  • “无约束”- 无约束

  • 'boundconstraints'-仅绑定约束

  • “linearconstraints”- 线性约束,有或没有结合的约束

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

rngstate

MATLAB的随机数生成器的状态,就在算法开始。您可以使用值rngstate重现的输出gamultiobj。看到结果重现

总数几代人,但不包括HybridFcn迭代。
funccount 总数功能评价。
消息 gamultiobj退出消息。
averagedistance 平均“距离”,默认为帕累托前沿成员与其均值之差的范数的标准差。
传播 的“距离”,并在最后两次迭代之间的帕累托前的点的运动的度量的组合。
maxconstraint 最大约束违规在最后帕累托集。

最终群体,返回一个n-通过-nvars阵列,其中n是群体成员的数量。

最后得分的人口,作为一个返回n-通过-NF阵列。n是群体的成员的数量,和NF是的健身功能的数量。

当存在非线性约束,gamultiobj设置分数不可行群体成员的

更多关于

全部收缩

Pareto前沿

一个Pareto前沿是具有非劣适应度函数值的参数空间(决策变量空间)中的一组点。

换句话说,对于帕累托正面的每个点,你只能通过降解另一个提高一个适应度函数。有关详细信息,请参阅什么是多目标优化?

就像在本地与全局优化(优化工具箱),它是可能的帕累托前面是局部的,但不是全球性的。“本地”在更远的参数空间意味着帕累托点可以不劣相对于附近的点,但是点可以在每一个部件下限函数值。

算法

gamultiobj使用受控的精英遗传算法(NSGA-II的变种)[1])。一个精英GA总是倾向于拥有更好的适应度值(等级)的个体。一个受控的精英遗传算法也有利于那些可以帮助增加种群多样性的个体,即使他们的适合度值较低。保持种群的多样性对于收敛到最优的帕累托前沿是很重要的。随着算法的发展,通过控制种群中的精英成员来保持多样性。两个选项,ParetoFractionDistanceMeasureFcn,控制精英。ParetoFraction限制帕累托前沿的个人数量(精英成员)。距离函数,由DistanceMeasureFcn,有助于通过有利于那些相对远在前面的个人保持在正面的多样性。该算法停止,如果传播,帕累托前的运动的量度,是小的。有关详细信息,请参阅gamultiobj算法

参考文献

[1]德布,Kalyanmoy。多目标优化使用进化算法。英格兰奇切斯特:约翰·威利与儿子出版社,2001年版。

扩展功能

介绍了在R2007b