主要内容

gamultiobj

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

描述

例子

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

请注意

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

例子

x= gamultiobj (有趣的据nvar一个b找到一个局部帕累托集x根据线性不等式 一个 x b .看到线性不等式约束gamultiobj金宝app只支持默认的线性约束PopulationType选项(“doubleVector”).

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

例子

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

x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托nonlcon中定义的约束条件下的帕累托集合nonlcon.这个函数nonlcon接受x并返回向量c而且量表信,分别表示非线性不等式和不等式。gamultiobj最小化有趣的这样c (x)0而且Ceq (x) = 0.(设置Lb = []而且Ub = []如果不存在边界。)gamultiobj金宝app只支持默认的非线性约束PopulationType选项(“doubleVector”).

例子

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

例子

x= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托nonlconintconx= gamultiobj (有趣的据nvar一个bAeq说真的乌兰巴托nonlconintcon选项中列出的变量intcon取整数值。

请注意

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

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);
优化终止:帕累托解扩散的平均变化小于期权。金宝搏官方网站

画出解点。

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

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

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

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

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

画出约束解和线性约束。

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

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

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

求两个适应度函数的帕累托面sin (x)而且cos (x)在间隔上 0 x 2 π

Fitnessfcn = @(x)[sin(x),cos(x)];Nvars = 1;Lb = 0;Ub = 2*;rng默认的可重复性%据nvar x = gamultiobj (fitnessfcn ,[],[],[],[], 磅,乌兰巴托)
优化终止:帕累托解扩散的平均变化小于期权。金宝搏官方网站
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)”)标题(“帕累托面前”)传说(“帕累托面前”

图中包含一个axes对象。标题为Pareto Front的axes对象包含一个类型为line的对象。该对象表示帕累托前面。

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

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

函数Y = schaffer2(x)% y有两列为两个目标和所有x初始化yY = 0(长度(x),2);评估第一个目标。这个目标是分段连续的。I = 1:长度(x)如果X (i) <= 1 y(i,1) = -x(i);elseifX (i) <=3 y(i,1) = X (i) -2elseifX (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美元

Lb = -5;Ub = 10;

设置选项以查看帕累托前面为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;

指定问题边界gaplotpareto小区功能,人口规模为100。

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

找到这个问题的帕累托集合。

Nvars = 2;A = [];B = [];Aeq = [];Beq = [];Nonlcon = [];[x,fval] = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options);
优化终止:帕累托解扩散的平均变化小于期权。金宝搏官方网站

图遗传算法包含一个轴对象。标题为Pareto front的axes对象包含一个类型为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;Nvars = 3;

kur_multiobjective函数具有以下代码。

函数Y = kur_multiobjective(x)多目标问题的多目标函数。此双目标问题的帕累托最优集为非凸as%以及断开连接。函数KUR_MULTIOBJECTIVE计算两个%目标并返回一个大小为2乘1的向量y。%参考:Kalyanmoy Deb,“多目标优化使用《进化算法》,John Wiley & Sons ISBN 047187339版权所有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 5 5];Lb = -ub;

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

[x,fval,exitflag,output,population,scores] = gamultiobj(fitnessfcn,nvars,...[],[],[],[], 磅,乌兰巴托);
优化终止:帕累托解扩散的平均变化小于期权。金宝搏官方网站

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

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

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

输入参数

全部折叠

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

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

如果你设置UseVectorized选项真正的,然后有趣的接受一个大小的矩阵n——- - - - - -据nvar,其中矩阵表示n个人。有趣的返回一个大小的矩阵n——- - - - - -,在那里是目标函数的个数。看到向量化适应度函数

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

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

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

例子:4

数据类型:

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

一个编码线性不等式

A*x <= b

在哪里x列向量是据nvar变量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 = ones(1,N)而且B = 1

数据类型:

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

b编码线性不等式

A*x <= b

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

例如,给出约束条件A = [1,2;3,4;5,6]而且B = [10;20;30]指定这些和:

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

例子:要将x分量的和设置为1或更少,请取A = ones(1,N)而且B = 1

数据类型:

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

Aeq编码线性等式

Aeq*x = beq

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

例如,给出约束条件Aeq = [1,2,3;2,4,1]而且Beq = [10;20]指定这些和:

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

例子:将x分量的和设为1,取Aeq = ones(1,N)而且Beq = 1

数据类型:

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

说真的编码线性等式

Aeq*x = beq

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

例如,给出约束条件Aeq = [1,2,3;2,4,1]而且Beq = [10;20]指定这些和:

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

例子:将x分量的和设为1,取Aeq = ones(1,N)而且Beq = 1

数据类型:

下界,指定为实向量或实数组。如果Numel (lb) = nvars,然后指定X (i) >= lb(i)对所有

如果Numel (lb) < nvars,然后指定X (i) >= lb(i)1 <= I <= numel(lb)

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

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

数据类型:

上界,指定为实向量或实数组。如果Numel (ub) = nvars,然后乌兰巴托指定X (i) <= ub(i)对所有

如果Numel (ub) < nvars,然后乌兰巴托指定X (i) <= ub(i)1 <= I <= numel(ub)

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

例子:要指定所有x分量小于1,请设置Ub = ones(nvars,1)

数据类型:

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

  • c (x)是否行向量的非线性不等式约束在x.的gamultiobj函数尝试满足C (x) <= 0对于所有的项c

  • 量表(x)行向量是否为非线性等式约束x.的gamultiobj函数尝试满足Ceq (x) = 0对于所有的项量表信

如果你设置UseVectorized选项真正的,然后nonlcon接受一个大小的矩阵n——- - - - - -据nvar,其中矩阵表示n个人。nonlcon返回一个大小的矩阵n——- - - - - -mc在第一个论证中mc是非线性不等式约束的个数。nonlcon返回一个大小的矩阵n——- - - - - -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隐藏的选项

  • {}表示默认值。

  • {} *表示存在线性约束时的默认值,而对于MutationFcn当有边界时也是如此。

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

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

选项遗传算法而且gamultiobj

选项 描述
ConstraintTolerance

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

对于选项结构,使用TolCon

正标量|{1 e - 3}

CreationFcn

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

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

CrossoverFcn

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

{' crossoverscattered '}遗传算法{' crossoverintermediate} *gamultiobj|{' crossoverlaplace '}我*|“crossoverheuristic”|“crossoversinglepoint”|“crossovertwopoint”|“crossoverarithmetic”|自定义交叉功能

CrossoverFraction

在下一代中,不包括精英儿童,交叉功能所创造的人口比例。

正标量|{0.8}

显示

显示水平。

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

DistanceMeasureFcn

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

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

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

EliteCount

纳米正整数,说明这一代中有多少个体能保证存活到下一代。不用于gamultiobj

正整数|{装天花板(0.05 * PopulationSize)}|{0.05 *(默认PopulationSize)}对于混合整数问题

FitnessLimit

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

标量|{无穷}

FitnessScalingFcn

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

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

FunctionTolerance

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

gamultiobj,当spread over的相对变化值的几何平均值时,算法停止选项。米axStallGenerations代小于选项。FunctionTolerance,最终价差小于过去的平均价差选项。米axStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,使用TolFun

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

HybridFcn

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

或者,指定混合函数及其选项的单元格数组。看到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,当spread over的相对变化值的几何平均值时,算法停止选项。米axStallGenerations代小于选项。FunctionTolerance,最终价差小于过去的平均价差选项。米axStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,使用StallGenLimit

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

MaxStallTime

纳米的目标函数没有改进时,算法停止MaxStallTime秒,用抽搐而且toc

对于选项结构,使用StallTimeLimit

积极的标量| {Inf}

MaxTime

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

对于选项结构,使用期限

正标量|{Inf}

MigrationDirection

迁移方向。看到迁移选项

“两个”|{“向前”}

MigrationFraction

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

标量|{0.2}

MigrationInterval

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

正整数|{20}

MutationFcn

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

{' mutationgaussian '}遗传算法无约束|{' mutationadaptfeasible} *gamultiobj遗传算法约束条件|{' mutationpower '}我*|“mutationpositivebasis”|“mutationuniform”|自定义突变函数

NonlinearConstraintAlgorithm

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

对于选项结构,使用NonlinConAlgorithm

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

OutputFcn

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

对于选项结构,使用OutputFcns

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

ParetoFraction

从0到1的标量,指定保留在第一个帕累托前沿的个体的比例,而求解器从更高的前沿选择个体,为gamultiobj只有。看到多目标的选择

标量|{0.35}

PenaltyFactor

纳米我*惩罚更新参数。

正标量|{100}

PlotFcn

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

对于选项结构,使用PlotFcns

遗传算法gamultiobj{[]} |“gaplotdistance”|“gaplotgenealogy”|“gaplotselection”|“gaplotscorediversity”|“gaplotscores”|“gaplotstopping”| |“gaplotmaxconstr”自定义绘图功能

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

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

PlotInterval

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

正整数|{1}

PopulationSize

人口规模。

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

PopulationType

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

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

遗传算法当忽略所有约束时PopulationType设置为“位”“自定义”.看到人口的选择

SelectionFcn

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

gamultiobj只使用“selectiontournament”

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

StallTest

纳米停止测试类型。

“geometricWeighted”|{' averageChange '}

UseParallel

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

真正的|{假}

UseVectorized

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

对于选项结构,使用矢量化有了这些值“上”“关闭”

真正的|{假}

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

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

请注意

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

例子:要指定偶数项x是否为整数值intcon据nvar 2:2:

数据类型:

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

fitnessfcn

健身功能

据nvar

设计变量数量

Aineq

一个矩阵用于线性不等式约束

Bineq

b线性不等式约束的向量

Aeq

Aeq矩阵用于线性等式约束

说真的

说真的线性等式约束的向量

的下界x

乌兰巴托

上限值x

nonlcon

非线性约束函数

intcon 整型变量的索引
rngstate

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

解算器

“gamultiobj”

选项

使用optimoptions或者是期权结构

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

数据类型:结构体

输出参数

全部折叠

帕累托点,作为——- - - - - -据nvar数组,是帕累托前沿的点数。每一行x代表帕累托前沿的一个点。

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

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

exitflag价值 停止条件
1

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

0

超过最大代数

-1

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

-2

找不到可行点

5

超过时限

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

输出字段 意义
problemtype

问题类型:

  • 无约束的-无约束

  • “boundconstraints”-仅绑定约束

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

  • “nonlinearconstr”-非线性约束,包括或不包括其他类型的约束

rngstate

状态的MATLAB随机数发生器,刚刚开始算法。中的值rngstate再现…的输出gamultiobj.看到复制的结果

一代又一代 总代数,不包括HybridFcn迭代。
funccount 函数求值的总数。
消息 gamultiobj退出消息。
averagedistance 平均“距离”,默认情况下是帕累托前成员之间的差的范数的标准差。
传播 “距离”的组合,以及帕累托前沿点在最后两次迭代之间的移动度量。
maxconstraint 最终帕累托集的最大约束违例。

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

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

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

更多关于

全部折叠

帕累托前沿

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

换句话说,对于帕累托前沿的每个点,你只能通过降低另一个适应度函数来改善一个适应度函数。详情请参见什么是多目标优化?

就像在本地vs.全局优化在美国,帕累托阵线可能是局部的,但不是全球性的。“局部”意味着帕累托点可以不次于附近的点,但在参数空间中更远的点在每个分量中的函数值可能更低。

算法

gamultiobj使用一种受控的精英遗传算法(NSGA-II的变体)[1]).精英GA总是倾向于适合度值(等级)更高的个体。受控制的精英GA也倾向于那些有助于增加种群多样性的个体,即使它们的适合度值较低。保持种群的多样性是收敛到最优帕累托前沿的重要保证。随着算法的发展,通过控制群体中的精英成员来保持多样性。两个选项,ParetoFraction而且DistanceMeasureFcn控制精英主义。ParetoFraction限制帕累托阵线(精英成员)的个体数量。距离函数,由DistanceMeasureFcn,通过偏爱在前线相对较远的个体,有助于保持前线的多样性。算法停止传播(衡量帕累托锋面运动的指标)很小。详情请参见gamultiobj算法

选择功能

应用程序

优化Live Editor任务提供了一个可视化的界面gamultiobj

参考文献

Deb, Kalyanmoy。基于进化算法的多目标优化.奇切斯特,英格兰:John Wiley & Sons出版社,2001年。

扩展功能

在R2007b中引入