主要内容

gamultiobj

找到帕累托多个适应度函数使用遗传算法的面前

描述

例子

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

请注意

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

例子

x= gamultiobj (有趣的,据nvar,一个,b)发现当地的帕累托集x线性不等式 一个 x b 。看到线性不等式约束gamultiobj万博1manbetx支持线性约束仅为默认PopulationType选项(“doubleVector”)。

x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的)发现当地的帕累托集x线性等式 一个 e x = b e 和线性不等式 一个 x b ,请参阅线性等式约束。(设置一个= []b = []如果不存在不平等)。gamultiobj万博1manbetx支持线性约束仅为默认PopulationType选项(“doubleVector”)。

例子

x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托)定义了一组上下界限的设计变量x所以当地的帕累托集范围内找到x乌兰巴托,请参阅绑定约束。使用空矩阵Aeq说真的如果不存在线性等式约束。gamultiobj万博1manbetx只有默认支持绑定约束PopulationType选项(“doubleVector”)。

x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托,nonlcon)发现一个帕累托集中定义的约束nonlcon。这个函数nonlcon接受x并返回向量c量表信,分别代表非线性不等式和等式。gamultiobj最小化有趣的这样c (x)0量表(x) = 0。(设置磅= []乌兰巴托= []如果不存在边界)。gamultiobj万博1manbetx只有默认支持非线性约束PopulationType选项(“doubleVector”)。

例子

x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托,选项)x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托,nonlcon,选项)发现一个帕累托集x使用默认的优化参数值所取代选项。创建选项使用optimoptions(推荐)或结构。

例子

x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托,nonlcon,intcon)x= gamultiobj (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托,nonlcon,intcon,选项)要求中列出的变量intcon取整数值。

请注意

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

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),“柯”)包含(“x”(1))ylabel (“x”(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;持有情节(t y“b——”)包含(“x”(1))ylabel (“x”(2))标题(“帕累托点参数空间”)举行

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

看到删除的线性约束的影响这个问题,看到的简单的多目标问题

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

fitnessfcn = @ (x) [sin (x), cos (x));据nvar = 1;磅= 0;乌兰巴托= 2 *π;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 *)包含(“sin (x)”)ylabel (“cos (x)”)标题(“帕累托面前”)传说(“帕累托面前”)

图包含一个坐标轴对象。坐标轴对象与标题帕累托前面包含一个类型的对象。该对象代表帕累托。

找到并画出帕累托以供应点谢弗的第二个函数。这个函数有一个断开连接的帕累托。

这段代码复制到一个函数文件在你的MATLAB®路径。

函数y = schaffer2 (x)% y两列%初始化y两个目标和所有xy = 0(长度(x), 2);%评估的首要目标。%这个目标是分段连续的。i = 1:长度(x)如果x (i) < = 1 y(我,1)= - x(我);elseifx(我)< = 3 y(我,1)= x (i) 2;elseifx(我)< = 4 y(我,1)= 4 - x(我);其他的y(我,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;

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

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

调用gamultiobj

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

创建一个以供应点函数在两个问题变量。

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

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

intcon = 2;

指定范围的问题,gaplotpareto图功能,人口规模100人。

磅= [0 0];乌兰巴托= 50 [100];选择= optimoptions (“gamultiobj”,“PlotFcn”,“gaplotpareto”,“PopulationSize”,100);

找到帕累托集问题。

据nvar = 2;一个= [];b = [];Aeq = [];说真的= [];nonlcon = [];[x, fval] = gamultiobj (Aeq有趣,据nvar, A, b,说真的,磅,乌兰巴托,nonlcon, intcon,选项);
优化终止:平均变化量小于options.FunctionTolerance帕累托的传播解决方案。万博 尤文图斯

{“字符串”:“图遗传算法包含一个坐标轴对象。坐标轴对象与标题帕累托前面包含一个类型的对象行。”,“泰克斯”:[],“乳胶”:[]}

清单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计算两个%的目标,并返回一个向量y 2×1的大小。%%参考:Kalyanmoy Deb,“多目标优化使用%进化算法”,约翰威利& 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);结束

在所有变量设置上下界限。

乌兰巴托= (5 5 5);磅=乌兰巴托;

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

[x, fval exitflag、输出人口,分数)= gamultiobj(据nvar fitnessfcn,[]、[][],[],磅,乌兰巴托);
优化终止:平均变化量小于options.FunctionTolerance帕累托的传播解决方案。万博 尤文图斯

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

sizex =大小(x) sizepopulation =(人口)sizescores =大小(分数)
sizex = 18 3 sizepopulation = 50 3 sizescores = 50 2

返回的帕累托前面包含18分。有50个成员最后的人口。每一个人口行有三个维度,对应于三个决策变量。每一个分数行有两个维度,对应两个健身功能。

输入参数

全部折叠

健身功能优化,指定为一个函数处理或函数名。

有趣的是一个函数,它接受一个真正的行向量的双打吗x的长度据nvar并返回一个真正的向量F (x)目标函数值。有关写作有趣的,请参阅计算目标函数

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

例子:@ (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
5x1+ 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
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我< < = =元素个数(磅)

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

例子:指定所有x分量看作是积极的,集1磅= 0(据nvar)

数据类型:

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

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

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

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

数据类型:

非线性约束条件,指定为一个函数处理或函数名。nonlcon是一个函数,它接受一个行向量x并返回两个行向量,c (x)量表(x)

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

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

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

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

功能测查[c] = mycon c (x) =…%计算非线性不等式测查x =…在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时,算法停止的几何平均的相对变化值在蔓延options.MaxStallGenerations代小于options.FunctionTolerance,最终小于平均传播蔓延过去options.MaxStallGenerations一代又一代。看到gamultiobj算法

选择结构,使用TolFun

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

HybridFcn

我*函数,继续优化遗传算法终止。指定一个名称或一个函数处理。

另外,一个细胞数组指定混合函数和它的选项。看到ga混合函数

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

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

看到当使用混合功能

函数名或处理|“fminsearch”|“patternsearch”|“fminunc”|“fmincon”| {[]}

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

InitialPenalty

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

积极的标量|{10}

InitialPopulationMatrix

用于种子遗传算法初始种群。有PopulationSize行和N列,N是变量的数量。你可以通过部分人口,这就意味着不到PopulationSize行。在这种情况下,遗传算法的用途CreationFcn生成其余人口成员。看到人口的选择

选择结构,使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

矩阵或向量指定初始种群个体的范围。适用于gacreationuniform创建函数。遗传算法变化和尺度默认初始范围匹配任何有限的范围。

选择结构,使用PopInitRange

矩阵或向量|{(-10;10)}对于无限的组件,{[1 e4 + 1; 1 e4 + 1]}为无限组件integer-constrained问题,{(磅;乌兰巴托)}为有界的组件,使用默认范围修改为片面的范围相匹配

InitialScoresMatrix

初始值用于确定健康。有PopulationSize行和Nf列,Nf是健身的数量函数(1遗传算法,大于1gamultiobj)。你可以通过部分得分矩阵,意义与不足PopulationSize行。在这种情况下,解算器时填写分数评估健身功能。

选择结构,使用InitialScores

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

MaxGenerations

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

选择结构,使用一代又一代

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

MaxStallGenerations

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

gamultiobj时,算法停止的几何平均的相对变化值在蔓延options.MaxStallGenerations代小于options.FunctionTolerance,最终小于平均传播蔓延过去options.MaxStallGenerations一代又一代。看到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

功能块的数据计算的算法。指定一个内置的阴谋函数的名称,一个函数处理,或内置的单元阵列名称或函数处理。看到绘图选项

选择结构,使用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

并行计算健身和非线性约束函数。看到Vectorize和并行选项(用户函数评价)如何使用并行处理在全球优化工具箱

真正的|{假}

UseVectorized

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

选择结构,使用矢量化的值“上”“关闭”

真正的|{假}

例子: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代表帕累托上的一个点。

函数值在帕累托方面,作为一个返回——- - - - - -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——- - - - - -据nvar数组,n是成员的数量的人口。

最终的人口,作为一个返回n——- - - - - -nf数组中。n成员的人口的数量,nf是数量的健身功能。

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

更多关于

全部折叠

帕累托前沿

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

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

就像在本地和全球最适条件,可以为当地一个帕累托面前,而不是全球。“本地”意味着帕累托点可以一系列相对于附近的点,但在参数空间分远可以在每一个组件函数值较低。

算法

gamultiobj使用一个控制,精英遗传算法(NSGA-II的变种[1])。精英GA总是有利于个人更好的健身价值(等级)。控制精英GA也有利于个人,可以帮助增加种群的多样性,即使他们有一个较低的健身价值。重要的是维持种群的多样性收敛到一个最优的帕累托。多样性是由控制的精英成员人口随着算法的进展。两个选项,ParetoFractionDistanceMeasureFcn,控制精英主义。ParetoFraction限制数量的个人在帕累托前沿(精英成员)。的距离函数,选择DistanceMeasureFcn有助于保持多样性,有利于个人相对前面在前面很远的地方。该算法停止如果传播衡量运动的帕累托前沿,很小。有关详细信息,请参见gamultiobj算法

选择功能

应用程序

优化住编辑任务提供了一个可视化界面gamultiobj

引用

[1]Deb, Kalyanmoy。使用进化多目标优化算法。英国奇切斯特:约翰威利& Sons, 2001。

扩展功能

版本历史

介绍了R2007b