主要内容

gamultiobj

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

描述

例子

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

请注意

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

例子

x= gamultiobj (有趣的据nvar一个b找到一个局部帕累托集合x服从线性不等式 一个 x b 看见线性不等式约束gamultiobj金宝app仅支持默认的线性约束人口类型选项(“doubleVector”).

x= gamultiobj (有趣的据nvar一个bAeq说真的找到一个局部帕累托集合x服从线性等式 一个 e x b e 线性不等式 一个 x b ,请参阅线性等式约束.(设置一个= []b = []如果不存在不平等的话。)gamultiobj金宝app仅支持默认的线性约束人口类型选项(“doubleVector”).

例子

x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托定义设计变量的一组上下限x以便在范围内找到一个局部帕累托集合x乌兰巴托,请参阅约束条件.使用空矩阵Aeq说真的如果不存在线性等式约束。gamultiobj金宝app仅支持默认的绑定约束人口类型选项(“doubleVector”).

x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托非LCON找到受中定义的约束的帕累托集非LCON.这个函数非LCON接受x并返回向量c量表信,分别表示非线性不等式和等式。gamultiobj最小化有趣的以致c (x)0ceq(x)=0.(设置磅= []乌兰巴托= []如果没有边界的话。)gamultiobj金宝app仅支持默认情况下的非线性约束人口类型选项(“doubleVector”).

例子

x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托选择权x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托非LCON选择权找到帕累托集合x中的值替换默认优化参数选择权.创建选择权使用optimoptions(推荐)或结构。

例子

x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托非LCONintconx= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托非LCONintcon选择权要求所列的变量intcon取整数值。

请注意

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

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

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

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

例子

xfvalexitflag输出人口分数) = gamultiobj (___返回人口,其行是最终population,并且分数,即最终人口的分数。

例子

全部折叠

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

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

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

rng默认的%为了再现性x = gamultiobj (fitnessfcn 2);
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站

绘制解决方案点。

情节(x (: 1) x (:, 2),“柯”)包含(“x”(1)) ylabel (“x”(2))头衔(参数空间中的帕累托点

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

要查看线性约束对此问题的影响,请参见具有线性约束的多目标问题

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

有两个目标函数和两个决策变量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);
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站

画出约束解和线性约束。

情节(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));据nvar = 1;磅= 0;乌兰巴托= 2 *π;rng默认的%的再现性x=gamultiobj(fitnessfcn、nvars、[]、[]、[]、[]、[]、lb、ub)
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站
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)”)头衔(“帕累托面前”)传说(“帕累托面前”

图中包含一个轴对象。标题为Pareto Front的axis对象包含一个类型为line的对象。这个对象代表帕累托前沿。

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

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

函数y = schaffer2 (x)%y有两列为两个目标和所有的x初始化yy = 0(长度(x), 2);评估第一个目标。这个目标是分段连续的。i = 1:长度(x)如果y(i,1) = -x(i);elseify(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;乌兰巴托= 10;

设置选项以查看Pareto前面为gamultiobj运行。

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

调用gamultiobj

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

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

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

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

intcon = 2;

指定问题的边界gaplotparetoPlot函数,人口规模为100。

Lb = [0 0];Ub = [100 50];选择= optimoptions (“gamultiobj”“PlotFcn”“帕累托”...“PopulationSize”,100);

找到问题的帕累托集合。

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

图遗传算法包含一个轴对象。标题为Pareto front的axis对象包含一个类型为line的对象。

列出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.0989 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_MULTIOBJECTIVE多目标问题的目标函数。%这两个目标问题的帕累托最优集是非凸的%以及断开连接。函数KUR_MULTIOBJECTIVE计算两个%目标并返回大小为2 * 1的向量y。参考文献:Kalyanmoy Deb,“多目标优化使用%进化算法",John Wiley & Sons ISBN 047187339版权所有2007 The MathWorks, Inc.%初始化两个目标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];lb=-ub;

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

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

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

sizex=大小(x)sizepopulation=大小(总体)sizecores=大小(分数)
Sizex = 18 3 sizepopulation = 50 3 sizescores = 50 2

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

输入参数

全部折叠

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

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

如果你设置UseVectorized选择真正的,然后有趣的接受大小矩阵n-借-据nvar,其中矩阵表示n个人。有趣的返回一个size的矩阵n-借-哪里是目标函数的数目。请参阅向适应度函数向量化

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

数据类型:烧焦|function_handle|一串

变量的数量,指定为正整数。求解器传递长度的行向量据nvar有趣的

例子:4

数据类型:双重的

线性不等式约束,指定为实矩阵。一个是一个-借-据nvar矩阵,在哪里是不等式的个数。

一个编码线性不等式

A*x<=b

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

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

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

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

数据类型:双重的

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

b编码线性不等式

A*x<=b

在哪里x列向量是据nvar变量x (:),一个矩阵的大小是多少-借-据nvar

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

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

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

数据类型:双重的

线性等式约束,指定为实矩阵。Aeq是一个-借-据nvar矩阵,在哪里是等式的个数。

Aeq编码线性等式

Aeq * x =说真的

在哪里x列向量是据nvar变量x (:),说真的列向量是元素。

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

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

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

数据类型:双重的

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

说真的编码线性等式

Aeq * x =说真的

在哪里x列向量是据nvar变量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

数据类型:双重的

下限,指定为实向量或实数组。如果元素个数(磅)=据nvar,然后指定x(我)> =磅(我)总的来说

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

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

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

数据类型:双重的

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

如果努梅尔(乌兰巴托),然后乌兰巴托指定x(i)<=ub(i)1<=i<=numel(ub)

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

例子:要将所有x组件指定为小于一个,请设置乌兰巴托的=(据nvar, 1)

数据类型:双重的

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

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

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

如果你设置UseVectorized选择真正的,然后非LCON接受大小矩阵n-借-据nvar,其中矩阵表示n个人。非LCON返回一个size的矩阵n-借-mc在第一个参数中mc为非线性不等式约束的个数。非LCON返回一个size的矩阵n-借-mceq在第二个论证中mceq为非线性等式约束的个数。看到向适应度函数向量化

例如x = gamultiobj(据nvar @myfun, A、b Aeq,说真的,磅,乌兰巴托,@mycon)哪里myconMATLAB是一种®功能如:

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

有关详细信息,请参阅非线性约束

数据类型:烧焦|function_handle|一串

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

optimoptions中列出的选项斜体看见Options隐藏的选项

  • {}表示默认值。

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

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

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

选项遗传算法gamultiobj

选项 描述
ConstraintTolerance

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

对于选项结构,请使用托尔康

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

CreationFcn

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

{'gacreationuniform'}|{' gacreationlinearfeasible} *|“gacreationnonlinearfeasible”|{' gacreationuniformint '}我*遗传算法|{'gacreationsobol'}我*gamultiobj|创建自定义函数

CrossoverFcn

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

{' crossoverscattered '}遗传算法{' crossoverintermediate} *gamultiobj|{' crossoverlaplace '}我*|“crossoverheuristic”|“交叉点”|“crossovertwopoint”|“crossoverarithmetic”|自定义转换函数

CrossoverFraction

交叉功能产生的下一代人口比例,不包括精英儿童。

积极的标量|{0.8}

显示

显示水平。

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

DistanceMeasureFcn

计算个人距离的函数。指定为内置距离测量函数或函数句柄的名称。该值适用于决策变量或设计空间(基因型)或功能空间(表型)。默认的“distancecrowding”在功能空间(表型)中gamultiobj只有,看到了吗多目标的选择

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

{' distancecrowding '}意思与{@distancecrowding,“表现型”}|{@distancecrowding,基因型的}|自定义距离函数

精英帐户

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

正整数|{ceil(0.05*人口规模)}|{0.05 *(默认PopulationSize)}关于混合整数问题

FitnessLimit

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

标量|{无穷}

FitnessScalingFcn

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

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

FunctionTolerance

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

gamultiobj,算法停止时,相对变化的几何平均值的扩散选项。米axStallGenerations世代不到选项。FunctionTolerance最后的价差小于过去的平均价差选项。米axStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,请使用TolFun

积极的标量|{1 e-6}遗传算法{1}的军医gamultiobj

杂交

我*函数,之后继续优化遗传算法终止。指定为名称或函数句柄。

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

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

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

看到何时使用混合函数

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

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

InitialPenalty

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

积极的标量|{10}

InitialPopulationMatrix

初始种群用于遗传算法的种子。有PopulationSize行和N列,其中N是变量的数量。您可以传递部分总体,即小于PopulationSize行。在这种情况下,遗传算法使用CreationFcn生成剩余的填充成员。看到人口的选择

对于选项结构,请使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

表示初始种群中个体的范围的矩阵或向量。适用于gacreationuniform创建函数。遗传算法移动和缩放默认的初始范围以匹配任何有限的边界。

对于选项结构,请使用PopInitRange

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

InitialScoresMatrix

用来确定适合度的初始分数。有PopulationSize行和Nf列,其中Nf为适应度函数的个数(1遗传算法,大于1gamultiobj).你可以通过部分分数矩阵,也就是分数小于PopulationSize行。在这种情况下,求解器在计算适应度函数时填写分数。

对于选项结构,请使用InitialScores

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

MaxGenerations

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

对于选项结构,请使用一代又一代

正整数|{100*numberOfVariables}遗传算法{200*numberOfVariables}gamultiobj

MaxStallGenerations

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

gamultiobj,算法停止时,相对变化的几何平均值的扩散选项。米axStallGenerations世代不到选项。FunctionTolerance最后的价差小于过去的平均价差选项。米axStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,请使用StallGenLimit

正整数|{50}遗传算法{100}gamultiobj

最大失速时间

纳米如果目标函数没有改进,则算法停止最大失速时间秒,以抽搐toc

对于选项结构,请使用StallTimeLimit

积极的标量| {Inf}

MaxTime

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

对于选项结构,请使用期限

积极的标量|{Inf}

MigrationDirection

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

“两个”|{“向前”}

MigrationFraction

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

标量|{0.2}

MigrationInterval

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

正整数|{20}

MutationFcn

生成变异子函数的函数。指定为内置变异函数或函数句柄的名称。请参阅突变的选择

{'mutationgaussian'}遗传算法没有约束|{' mutationadaptfeasible} *gamultiobj以及遗传算法与约束|{' mutationpower '}我*|“mutationpositivebasis”|“变异制服”|定制的变异函数

非线性约束约束算法

非线性约束算法。请参阅非线性约束求解算法.选择不变的gamultiobj

对于选项结构,请使用NonlinConAlgorithm

{' auglag '}遗传算法{“惩罚”}gamultiobj

OutputFcn

的函数遗传算法每次迭代时调用。指定为函数句柄或函数句柄的单元格数组。看到输出功能选项

对于选项结构,请使用输出Fcns

函数句柄或函数句柄|的单元格数组{[]}

ParetoFraction

从0到1的标量,指定当求解器从更高的前沿选择个体时,保持在第一个Pareto前沿的个体比例gamultiobj只有,看到了吗多目标的选择

标量|{0.35}

惩罚因素

纳米我*点球更新参数。

积极的标量|{100}

PlotFcn

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

对于选项结构,请使用PlotFcns

遗传算法gamultiobj{[]} |' gaplotdistance' |' gaplotgenealogy' |' gaplotselection' |' gaplotscorediversity' |'gaplotscores' |' gaplotstops ' |' gaplotmaxconstr' |自定义绘制函数

遗传算法只有:'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' | 'gaplotrange'

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

PlotInterval

指定连续调用绘图函数之间的代数的正整数。

正整数|{1}

PopulationSize

人口规模。

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

人口类型

总体的数据类型。必须“doubleVector”为整数的问题。

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

遗传算法忽略所有约束:人口类型被设置为“位”“自定义”看见人口的选择

选择FCN

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

gamultiobj只使用“selectiontournament”

{' selectionstochunif '}遗传算法{' selectiontournament '}gamultiobj|“selectionremainder”|“selectionuniform”|“selectionroulette”|自定义选择函数

StallTest

纳米停止测试类型。

“geometricWeighted”|{'averageChange'}

UseParallel

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

真正的|{假}

UseVectorized

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

对于选项结构,请使用矢量化的值“上”“关闭”

真正的|{假}

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

整型变量,指定为从其中取值的正整数向量1据nvar.每个值在intcon代表一个x整数值组件。

请注意

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

例子:将偶数项指定为x是整数值,intcon2:2:nvars

数据类型:双重的

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

fitnessfcn

健身功能

据nvar

设计变量的数量

Aineq

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

Bineq

b线性不等式约束的向量

Aeq

Aeq线性等式约束的矩阵

说真的

说真的线性等式约束向量

上下限x

乌兰巴托

上限x

非LCON

非线性约束函数

intcon 整变量指数
rngstate

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

解算器

“gamultiobj”

选择权

使用创建的选项optimoptions或者是期权结构

必须指定字段fitnessfcn据nvar,选择权.其余的是可选的gamultiobj

数据类型:结构体

输出参数

全部折叠

帕累托点,返回为-借-据nvar数组,是帕累托前面的点数。每一行的x表示帕累托前沿上的一个点。

函数值的帕累托前端,返回为-借-nf数组中。是帕累托前面的点数,然后呢nf为适应度函数的个数。每一行的fval表示函数在一个帕累托点处的值x

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

exitflag值 停止条件
1

价差相对变化的几何平均值选项。米axStallGenerations世代不到选项。FunctionTolerance最后的价差小于过去的平均价差选项。米axStallGenerations一代又一代

0

超过了最大代数

-1

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

-2

未发现可行点

-5

超过了期限

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

输出字段 意思
problemtype

问题类型:

  • 无约束的——没有约束

  • “boundconstraints”-仅限约束

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

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

rngstate

在算法开始之前,MATLAB随机数生成器的状态。您可以使用rngstate复制…的输出gamultiobj看见重现结果

一代又一代 代的总数,不包括杂交迭代。
funccount 功能评估的总数。
消息 gamultiobj退出消息。
averagedistance 平均“距离”,默认情况下是帕累托前端成员与其平均值之间的差的标准偏差。
传播 结合“距离”和帕累托前沿点在最后两次迭代之间的移动度量。
maxconstraint 最终帕累托集的最大约束冲突。

最终人口,作为n-借-据nvar数组,n是人口的数量。

最终人口的分数,作为n-借-nf数组中。n是人口的数量,和nf为适应度函数的个数。

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

更多关于

全部折叠

帕累托前沿

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

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

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

算法

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

选择功能

应用程序

优化活动编辑器任务为gamultiobj

参考文献

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

扩展功能

介绍了R2007b