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);
线性约束条件 。
一个= [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))标题(“帕累托点参数空间”)举行从
看到删除的线性约束的影响这个问题,看到的简单的多目标问题。
与绑定约束多目标优化
找到两个健身功能的帕累托面前sin (x)
和cos (x)
的时间间隔
。
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
更小。
设置边界保持人口成员范围。
磅= 5;乌兰巴托= 10;
设置选项查看帕累托面前gamultiobj
运行。
选择= optimoptions (“gamultiobj”,“PlotFcn”,@gaplotpareto);
调用gamultiobj
。
rng默认的%的再现性[x, fval exitflag、输出]= gamultiobj (@schaffer2 1[]、[][],[],磅,乌兰巴托,选项);
优化终止:超过了一代又一代的最大数目。
整数gamultiobj
创建一个以供应点函数在两个问题变量。
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
获取所有输出gamultiobj
运行一个简单的多目标问题,获得所有可用的输出。
再现性的随机数字生成器。
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
- - - - - -数量的变量
正整数
一个
- - - - - -线性不等式约束
真正的矩阵
线性不等式约束,指定为一个真正的矩阵。一个
是一个米
——- - - - - -据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 (:)
。
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
- - - - - -线性等式约束
真正的矩阵
线性等式约束,指定为一个真正的矩阵。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
- - - - - -非线性约束
函数处理|函数名
非线性约束条件,指定为一个函数处理或函数名。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)
,在那里mycon
MATLAB是一种®功能如以下:
功能测查[c] = mycon c (x) =…%计算非线性不等式测查x =…在x %计算非线性等式。
有关更多信息,请参见非线性约束。
数据类型:字符
|function_handle
|字符串
选项
- - - - - -优化选项
的输出optimoptions
|结构
优化选项,指定的输出optimoptions
或结构。看到选项的细节遗传算法的选择。
optimoptions
隐藏选项中列出斜体。看到选项optimoptions隐藏。
值
{}
表示默认值。{}*
代表默认当有线性约束和MutationFcn
当有界限。我*表明,解决处理整数约束的选择不同。
纳米不适用于表明选项
gamultiobj
。
选项遗传算法
和gamultiobj
选项 | 描述 | 值 |
---|---|---|
ConstraintTolerance |
决定了可行性对非线性约束。同时, 选择结构,使用 |
积极的标量| |
|
函数创建初始种群。指定的名称创建一个内置的函数或函数处理。看到人口的选择。 |
|
|
函数,该算法使用创建交叉的孩子。指定内置转换函数的名称或一个函数处理。看到交叉选项。 |
|
|
分数在下一代的人口,不包括精英孩子,交叉函数创建。 |
积极的标量| |
|
显示水平。 |
|
|
函数计算的距离测量的个体。指定一个内置的距离测量函数的名称或一个函数处理。适用于决策变量的值或设计空间(基因型)或功能空间(表现型)。默认的 选择结构,使用一个函数处理,而不是一个名字。 |
|
|
纳米正整数指定有多少个人在当前一代保证下一代生存。不习惯在 |
正整数| |
|
纳米如果适应度函数达到的价值 |
标量| |
|
函数尺度适应度函数的值。指定一个内置的扩展函数的名称或一个函数处理。选项不可用 |
|
FunctionTolerance |
该算法停止如果最好的适应度函数值的平均相对变化 为 选择结构,使用 |
积极的标量| |
|
我*函数,继续优化 另外,一个细胞数组指定混合函数和它的选项。看到ga混合函数。 为 当问题整数约束,你不能使用混合函数。 看到当使用混合功能。 |
函数名或处理| 或 1×2单元阵列| |
InitialPenalty |
纳米我*惩罚参数的初始值 |
积极的标量| |
|
用于种子遗传算法初始种群。有 选择结构,使用 |
矩阵| |
|
矩阵或向量指定初始种群个体的范围。适用于 选择结构,使用 |
矩阵或向量| |
|
初始值用于确定健康。有 选择结构,使用 |
列向量为单目标多目标| |矩阵 |
|
最大数量的迭代算法停止之前。 选择结构,使用 |
正整数| |
|
该算法停止如果最好的适应度函数值的平均相对变化 为 选择结构,使用 |
正整数| |
|
纳米该算法停止如果没有改进的目标函数 选择结构,使用 |
积极的标量 |
|
该算法停止运行后 选择结构,使用 |
积极的标量| |
MigrationDirection |
的方向迁移。看到迁移选项。 |
|
MigrationFraction |
标量的分数从0到1指定个人在每个分组人口迁移到另一个程序。看到迁移选项。 |
标量| |
MigrationInterval |
正整数指定数量的代亚种群之间的个人之间发生迁移。看到迁移选项。 |
正整数| |
|
函数产生突变的孩子。指定一个内置的变异函数的名称或一个函数处理。看到突变的选择。 |
|
|
非线性约束算法。看到非线性约束求解算法。选择不变的 选择结构,使用 |
|
|
的函数 选择结构,使用 |
函数处理或单元数组的函数处理| |
|
标量的分数从0到1指定个人继续第一帕累托面前,解算器从更高的领域,选择个人 |
标量| |
PenaltyFactor |
纳米我*点球更新参数。 |
积极的标量| |
|
功能块的数据计算的算法。指定一个内置的阴谋函数的名称,一个函数处理,或内置的单元阵列名称或函数处理。看到绘图选项。 选择结构,使用 |
|
PlotInterval |
连续正整数指定数量的后代之间的调用图的功能。 |
正整数| |
|
人口的规模。 |
正整数| |
|
数据类型的人口。必须 |
|
|
函数,选择交叉和变异的孩子的父母。指定一个内置的选择函数的名称或一个函数处理。
|
|
StallTest |
纳米停止测试类型。 |
|
UseParallel |
并行计算健身和非线性约束函数。看到Vectorize和并行选项(用户函数评价)和如何使用并行处理在全球优化工具箱。 |
|
|
指定是否矢量化功能。看到Vectorize和并行选项(用户函数评价)和Vectorize健身功能。 选择结构,使用 |
|
例子:optimoptions (‘gamultiobj’,‘PlotFcn @gaplotpareto)
问题
- - - - - -问题描述
结构
问题描述,指定为一个包含这些字段的结构。
fitnessfcn |
健身功能 |
据nvar |
设计变量的数量 |
Aineq |
|
Bineq |
|
Aeq |
|
说真的 |
|
磅 |
上下界 |
乌兰巴托 |
上限 |
nonlcon |
非线性约束函数 |
intcon |
整数变量的指标 |
rngstate |
字段来重置随机数发生器的状态 |
解算器 |
|
选项 |
选择使用 |
您必须指定字段fitnessfcn
,据nvar
,选项
。其余部分都是可选的gamultiobj
。
数据类型:结构体
输出参数
x
——帕累托分
米
——- - - - - -据nvar
数组
帕累托点,作为一个返回米
——- - - - - -据nvar
数组,米
在帕累托方面是点的数量。每一行的x
代表帕累托上的一个点。
fval
在帕累托方面,函数值
米
——- - - - - -nf
数组
函数值在帕累托方面,作为一个返回米
——- - - - - -nf
数组中。米
是点的数量在帕累托前沿,然后呢nf
是数量的健身功能。每一行的fval
代表了一个帕累托点的函数值x
。
exitflag
- - -原因gamultiobj
停止
整数
原因gamultiobj
停止,返回一个整数。
exitflag价值 | 停止条件 |
---|---|
1 |
几何平均的相对分布在价值的变化 |
0 |
超过了一代又一代的最大数目 |
1 |
通过一个输出函数优化终止或情节功能 |
2 |
没有找到可行的观点 |
5 |
超过了期限 |
输出
——优化过程的信息
结构
优化过程的信息,作为一个结构返回这些字段。
输出字段 | 意义 |
---|---|
problemtype |
类型的问题:
|
rngstate |
MATLAB随机数发生器的状态,就在算法开始。您可以使用的值 |
一代又一代 |
代,总数不包括HybridFcn 迭代。 |
funccount |
总数量的评价函数。 |
消息 |
gamultiobj 退出消息。 |
averagedistance |
平均“距离”,默认情况下是正常的标准偏差的区别帕累托前成员和他们的意思。 |
传播 |
组合的“距离”,衡量的运动点最后的两次迭代之间的帕累托面前。 |
maxconstraint |
最后帕累托集最大约束违反。 |
人口
——最后的人口
n
——- - - - - -据nvar
数组
最终的人口,作为一个返回n
——- - - - - -据nvar
数组,n
是成员的数量的人口。
分数
——最后的人口的分数
n
——- - - - - -nf
数组
最终的人口,作为一个返回n
——- - - - - -nf
数组中。n
成员的人口的数量,nf
是数量的健身功能。
当有非线性约束,gamultiobj
设置分数
不可行的人口成员正
。
更多关于
算法
gamultiobj
使用一个控制,精英遗传算法(NSGA-II的变种[1])。精英GA总是有利于个人更好的健身价值(等级)。控制精英GA也有利于个人,可以帮助增加种群的多样性,即使他们有一个较低的健身价值。重要的是维持种群的多样性收敛到一个最优的帕累托。多样性是由控制的精英成员人口随着算法的进展。两个选项,ParetoFraction
和DistanceMeasureFcn
,控制精英主义。ParetoFraction
限制数量的个人在帕累托前沿(精英成员)。的距离函数,选择DistanceMeasureFcn
有助于保持多样性,有利于个人相对前面在前面很远的地方。该算法停止如果传播衡量运动的帕累托前沿,很小。有关详细信息,请参见gamultiobj算法。
选择功能
应用程序
的优化住编辑任务提供了一个可视化界面gamultiobj
。
引用
[1]Deb, Kalyanmoy。使用进化多目标优化算法。英国奇切斯特:约翰威利& Sons, 2001。
扩展功能
自动并行支持万博1manbetx
加速代码通过自动运行并行计算使用并行计算工具箱™。
并行运行,设置“UseParallel”
选项真正的
。
选择= optimoptions ('
solvername
”、“UseParallel’,真的)
有关更多信息,请参见如何使用并行处理在全球优化工具箱。
版本历史
介绍了R2007b
Abrir比如
这种版本modificada德埃斯特比如。害怕Desea abrir埃斯特比如con sus modificaciones吗?
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。