gamultiobj

利用遗传算法找到帕累托前沿的多个健身功能

描述

X= gamultiobj(开玩笑据nvar发现X帕累托前沿的中定义的目标函数开玩笑据nvar是优化问题(决策变量的数目)的尺寸。解决方案X是局部的,这意味着它可能不在全局帕累托前沿。

请注意

传递额外的参数(优化工具箱)解释了如何额外的参数,传递给目标函数和约束的非线性函数,如果必要的。

X= gamultiobj(开玩笑据nvar一个b发现当地的帕累托集X受线性不等式 一个 X b 。看到不等式约束条件(优化工具箱)。gamultiobj万博1manbetx仅在默认情况下支持线性约束PopulationType选项 (“doubleVector”)。

X= gamultiobj(开玩笑据nvar一个bAEQBEQ发现当地的帕累托集X服从线性等式 一个 Ë q X = b Ë q 和线性不等式 一个 X b 线性等式约束(优化工具箱)。(组A = []b = []如果没有不平等存在。)gamultiobj万博1manbetx仅在默认情况下支持线性约束PopulationType选项 (“doubleVector”)。

X= gamultiobj(开玩笑据nvar一个bAEQBEQUB在设计变量上定义一组下界和上界X这样就在值域内找到了一个局部的帕累托集XUB绑定约束(优化工具箱)。使用空矩阵AEQBEQ如果不存在线性等式约束。gamultiobj万博1manbetx支持绑定的限制仅适用于默认PopulationType选项 (“doubleVector”)。

X= gamultiobj(开玩笑据nvar一个bAEQBEQUBnonlcon查找符合定义的约束的Pareto集合nonlcon。这个函数nonlcon接受X并返回向量CCEQ,分别表示非线性不等式和不等式。gamultiobj最小化开玩笑这样C(X)0量表(x) = 0。(组磅= []乌兰巴托= []如果没有边界存在。)gamultiobj万博1manbetx仅在默认情况下支持非线性约束PopulationType选项 (“doubleVector”)。

X= gamultiobj(开玩笑据nvar一个bAEQBEQUB选项要么X= gamultiobj(开玩笑据nvar一个bAEQBEQUBnonlcon选项找到一个帕累托集合X由值替换默认的优化参数选项。创建选项使用optimoptions(推荐)或从优化应用程序导出。

X= gamultiobj(问题发现了帕累托集问题,在那里问题是一个结构。创建问题从优化应用程序中导出一个问题,如导入和导出您的工作(优化工具箱)。

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

[XFVALexitflag产量)= gamultiobj (___回报exitflag的整数,识别算法停止的原因,并产量,包含有关优化过程中信息的结构。

[XFVALexitflag产量人口分数)= gamultiobj (___回报人口,其行是最后的人口,和分数,最终群体的分数。

例子

全部收缩

找到帕累托前一个简单的多目标的问题。有两个目标和两个决策变量X

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

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

rng默认的%的再现性x = gamultiobj (fitnessfcn 2);
优化终止:在帕累托解小于options.FunctionTolerance蔓延平均变化。万博 尤文图斯

画出解点。

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

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

这个例子展示了如何在线性约束条件下找到一个多目标问题的帕累托前缘。

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

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

线性约束 X 1 + X 2 1 / 2

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

找到帕累托前沿。

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

画出约束解和线性约束。

积(X(:,1)中,x(:,2),“柯”)T = linspace(-1 / 2,2);Y = 1/2  - 吨;保持情节(t y'b--')xlabel(“x”(1))ylabel('×(2)')标题(“参数空间帕累托点”)举行

要查看从该问题中删除线性约束的效果,请参见简单的多目标问题

找到这两个适应度函数的帕累托前沿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,[],[],[],[],磅,乌兰巴托)
优化终止:在帕累托解小于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沿着整个帕累托前沿找到点。

情节(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(i) <= 1 y(i,1) = -x(i);elseifx(i) <=3 y(i,1) = x(i) -2;elseifx(i) <= 4y (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更小。

设置界限以使人口成员保持在范围内le x 5美元\ \ le 10美元

磅= -5;UB = 10;

设置选项以查看Pareto frontgamultiobj运行。

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

呼叫gamultiobj

rng默认的%的再现性[x, fval exitflag、输出]= gamultiobj (@schaffer2 1[]、[][],[],磅,乌兰巴托,选项);
优化终止:几代人的最大数量超标。

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

设置随机数生成器以保证再现性。

rng默认的

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

fitnessfcn = @kur_multiobjective;nvars = 3;

kur_multiobjective函数具有下面的代码。

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

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

设置所有变量的下界和上界。

ub = [5,5,5];磅=乌兰巴托;

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

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

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

sizex = size(x) sizepopulation = size(人口)sizescore = size(分数)
SIZEX = 18 3 = sizepopulation 50个3 sizescores = 50 2

返回的Pareto front包含18个点。最终人口有50人。每一个人口row有三个维度,对应于三个决策变量。每一个分数行有两个维度,对应于两个健身功能。

输入参数

全部收缩

健身功能进行优化,指定为功能手柄或函数的名称。

开玩笑一个函数是否接受一个双精度实行向量X据nvar返回一个实向量F(X)的目标函数值。有关编写细节开玩笑计算目标函数

如果你设置UseVectorized选项真正, 然后开玩笑接受大小的矩阵ñ——- - - - - -据nvar,其中,所述矩阵表示ñ个人。开玩笑返回大小的矩阵ñ——- - - - - -,在那里是目标函数的个数。看到矢量化的健身功能

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

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

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

例:4

数据类型:

线性不等式约束,指定为实矩阵。一个是一个中号——- - - - - -据nvar矩阵,中号是不等式的个数。

一个编码中号线性不等式

A * x < =

在哪里X是列向量据nvar变量x (:)b列向量是中号元素。

例如,给予约束= [1,2,3,4,5,6)B = [10; 20; 30]指定这些金额:

X1+ 2X2≤10
3X1+ 4X2≤20
X1+ 6X2≤30。

例:于x组分的总和设置为1或更小,取一个= 1 (1,N)B = 1

数据类型:

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

b编码中号线性不等式

A * x < =

在哪里X是列向量据nvar变量x (:)一个是大小的矩阵中号——- - - - - -据nvar

例如,给予约束= [1,2,3,4,5,6)B = [10; 20; 30]指定这些金额:

X1+ 2X2≤10
3X1+ 4X2≤20
X1+ 6X2≤30。

例:于x组分的总和设置为1或更小,取一个= 1 (1,N)B = 1

数据类型:

线性等式约束,指定为一个实矩阵。AEQ是一个——- - - - - -据nvar矩阵,是等式的数目。

AEQ编码线性等式

AEQ * X = BEQ

在哪里X是列向量据nvar变量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)BEQ = 1

数据类型:

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

BEQ编码线性等式

AEQ * X = BEQ

在哪里X是列向量据nvar变量x (:)AEQ是大小的矩阵毫克当量——- - - - - -ñ

例如,给予约束AEQ = [1,2,3; 2,4,1]BEQ = [10; 20]指定这些金额:

X1+ 2X2+ 3X3= 10
2X1+ 4X2+X3= 20。

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

数据类型:

下界,指定为实向量或实数组。如果元素个数(磅)=据nvar, 然后指定x(我)> =磅(我)对所有一世

如果numel(LB), 然后指定x(我)> =磅(我)对于1 <= i <= numel(lb)

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

例:要指定所有x分量为正,集LB =零(nvars,1)

数据类型:

上界,指定为实向量或实数组。如果numel(UB)= nvars, 然后UB指定x (i) < =乌兰巴托(我)对所有一世

如果元素个数(乌兰巴托)<据nvar, 然后UB指定x (i) < =乌兰巴托(我)对于1 <= i <= numel(ub)

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

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

数据类型:

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

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

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

如果你设置UseVectorized选项真正, 然后nonlcon接受大小的矩阵ñ——- - - - - -据nvar,其中,所述矩阵表示ñ个人。nonlcon返回大小的矩阵ñ——- - - - - -MC在第一个参数中MC为非线性不等式约束的个数。nonlcon返回大小的矩阵ñ——- - - - - -mceq在第二个参数中mceq是非线性等式约束的数目。看到矢量化的健身功能

例如,X = gamultiobj(@ myfun,nvars,A,B,AEQ,BEQ,LB,UB,@ mycon),在那里mycon是MATLAB®功能,诸如以下:

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

有关更多信息,请参见非线性约束(优化工具箱)。

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

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

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

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

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

  • {} *表示缺省时有线性约束,和用于MutationFcn也当有边界。

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

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

对于选项GA, 整数GAgamultiobj

选项 描述
ConstraintTolerance

确定相对于非线性约束的可行性。也,MAX(开方(EPS),ConstraintTolerance)确定相对于线性约束可行性。

对于选项结构,请使用TolCon

积极的标量|{1 e - 3}

CreationFcn

一世*创建初始群体的功能。作为指定的名称内置创建函数或函数句柄。看到人口选项

{' gacreationuniform '}|{ 'gacreationlinearfeasible'} *|创建自定义函数

CrossoverFcn

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

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

CrossoverFraction

跨界函数产生的下一代人口比例(不包括精英儿童)。

积极的标量|{0.8}

显示

显示器的水平。

“关”|'ITER'|“诊断”|{'最后'}

DistanceMeasureFcn

计算个体距离的函数。指定为内置距离度量函数或函数句柄的名称。该值适用于决策变量或设计空间(基因型)或功能空间(表现型)。默认的'distancecrowding'是在功能空间(表现型)。为gamultiobj只有。看到多目标选项

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

{ 'distancecrowding'}意思和{@ distancecrowding, '表型'}|{@ distancecrowding, '基因型'}|自定义距离函数

EliteCount

纳米正整数,指定在当前这一代很多人都保证存活到下一代。在未使用gamultiobj

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

FitnessLimit

纳米如果适应度函数达到的值FitnessLimit,算法停止运行。

标量|{无穷}

FitnessScalingFcn

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

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

FunctionTolerance

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

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

对于选项结构,请使用TolFun

积极的标量|{1E-6}对于GA{1}的军医对于gamultiobj

HybridFcn

一世*之后继续优化的函数GA终止。指定为名称或函数句柄。

可替代地,一个单元阵列指定混合功能和它的选项。看到GA混合功能

gamultiobj,唯一的混合函数是@fgoalattain。看到gamultiobj混合功能

看到当使用混合功能

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

要么

1×2单元数组|{@solver, hybridoptions},在那里解算器= fminsearchpatternsearchfminunc, 要么fmincon{[]}

InitialPenalty

纳米一世*惩罚参数的初值

积极的标量|{10}

InitialPopulationMatrix

初始群体用于接种的遗传算法。拥有高达PopulationSizeñ列,ñ是变量的个数。可以传递部分总体,即小于的部分总体PopulationSize行。在这种情况下,遗传算法的用途CreationFcn产生剩余人口的成员。看到人口选项

对于选项结构,请使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

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

对于选项结构,请使用PopInitRange

矩阵或向量|{(-10;10)}对于无限的组件,{[-1e4 + 1; 1E4 + 1]}为的整数约束问题无界组件,{[磅; UB]}对于有界组件,修改默认范围以匹配单边界限。

InitialScoresMatrix

一世*初始分数来确定健身。拥有高达PopulationSize行,Nf列,Nf是(健身功能的数量1对于GA, 比...更棒1对于gamultiobj)。你可以通过一个部分分数矩阵,这意味着一个比少PopulationSize行。在这种情况下,解算器填充时,它评估的健身功能的分数。

对于选项结构,请使用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

纳米该算法停止,如果有目标函数为无改善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

纳米一世*处罚更新参数。

积极的标量|{100}

PlotFcn

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

对于选项结构,请使用PlotFcns

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

GA只要:'gaplotbestf' |'gaplotbestindiv' |'gaplotexpectation' |'gaplotrange'

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

PlotInterval

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

正整数|{1}

PopulationSize

人口规模。

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

PopulationType

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

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

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

SelectionFcn

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

gamultiobj只使用'selectiontournament'

{ 'selectionstochunif'}对于GA{' selectiontournament '}对于gamultiobj|'selectionremainder'|'selectionuniform'|'selectionroulette'|自定义选择功能

StallTest

纳米停止测试类型。

'geometricWeighted'|{' averageChange '}

UseParallel

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

真正|{假}

UseVectorized

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

对于选项结构,请使用矢量化与价值观'上'要么“关”

真正|{假}

例:optimoptions (‘gamultiobj’,‘PlotFcn @gaplotpareto)

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

fitnessfcn

健身功能

据nvar

设计变量数

Aineq

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

Bineq

b向量为线性不等式约束

AEQ

AEQ矩阵的线性等式约束

说真的

BEQ向量的线性等式约束

上下界X

UB

上限X

nonlcon

非线性约束函数

rngstate

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

解算器

'gamultiobj'

选项

选择使用optimoptions还是从优化应用出口

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

数据类型:结构

输出参数

全部收缩

帕累托点,返回为——- - - - - -据nvar数组,是在帕累托前沿点的数量。每行X表示帕累托前沿上的一个点。

上帕累托前面函数值,返回一个——- - - - - -NF阵列。是帕累托前沿的点的个数,和NF是适应度函数的个数。每行FVAL表示在一个Pareto点处的函数值X

原因gamultiobj停止,返回一个整数。

exitflag价值 停止条件
1

几何平均的相对变化值,在蔓延options.MaxStallGenerations世代少于options.FunctionTolerance,而最终的利差小于过去的平均利差options.MaxStallGenerations

0

超过最大代数

-1

优化终止通过输出功能或绘图功能

-2

没有找到可行点

-5

超过了期限

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

输出字段 意义
problemtype

类型的问题:

  • 无约束的- 无约束

  • 'boundconstraints'- 只有绑定的限制

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

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

rngstate

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

总数几代人,但不包括HybridFcn迭代。
funccount 函数计算的总次数。
信息 gamultiobj退出消息。
averagedistance 平均“距离”,默认情况下是帕累托前沿成员与其均值之差的范数的标准差。
传播 的“距离”,并在最后两次迭代之间的帕累托前的点的运动的度量的组合。
maxconstraint 在最终的帕累托集合上的最大约束冲突。

最后的人口,返回为ñ——- - - - - -据nvar数组,ñ是人口的数量。

最终群体的成绩,返回一个ñ——- - - - - -NF阵列。ñ是人口的数量,和NF是适应度函数的个数。

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

更多关于

全部收缩

帕累托前沿

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

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

作为本地与全局最优解(Optimization Toolbox),帕累托前沿可能是局部的,但不是全局的。“局部”的意思是,相对于附近的点,帕累托点可以是不差的,但是在参数空间中较远的点可能在每个组件中都有较低的函数值。

算法

gamultiobj使用受控的精英遗传算法(NSGA-II的变种)[1])。一个精英GA总是垂青有更好的适应值(等级)的个体。受控精英GA也有利于个人,可以帮助增加种群的多样性,即使他们有一个较低的锻炼价值。保持种群的收敛多样性,最优Pareto前是很重要的。多样性是通过控制人口的精英成员作为算法进展保持。有两种选择,ParetoFractionDistanceMeasureFcn,控制精英。ParetoFraction限制的帕累托前沿(精英成员)的个体的数量。距离函数,通过选择DistanceMeasureFcn,有利于在前线相对较远的个体,有助于在前线保持多样性。如果。则算法停止传播,帕累托前的运动的量度,是小的。有关详细信息,请参阅gamultiobj算法

参考文献

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

扩展功能

介绍了在R2007b