解决Minimax约束问题
Fminimax.
寻找使一组目标函数的最大值最小化的点。
这个问题包括任何类型的约束。在细节,Fminimax.
旨在最少的问题
在哪里B.和贝卡是向量,一种和AEQ.是矩阵,和C(X),CEQ.(X), 和F(X)是返回向量的函数。F(X),C(X), 和CEQ.(X)可以是非线性函数。
X那磅, 和乌兰巴托可以作为向量或矩阵传递;看到矩阵论据.
你也可以用Fminimax.
,使用身份
你可以解决表格的问题
通过使用absolutemaxObjectiveCount.
选项;看到使用一个目标的绝对值来解决极小的问题.
罪
和因为
创造一个情节罪
和因为
功能及其在间隔内的最大值[-pi,pi]
.
t = linspace(π-π);绘图(T,SIN(T),'r-')举行在绘图(T,COS(T),'b-');情节(t,马克斯(罪(t),因为(t)),“柯”)传说(“罪(t)”那“因为(t)”那“马克斯(罪(t),因为(t))”那“位置”那“西北”)
该曲线显示了两个最大,一个接近1的局部最小值,另一个局部最小值。找到最小近1。
fun = @(x)[sin(x); cos(x)];x0 = 1;x1 = fminimax(有趣,x0)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
X1 = 0.7854.
求-2附近的最小值。
x0 = -2;x2 = fminimax(有趣,x0)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x2 = -2.3562.
这个例子的目标函数是线性加常数。有关目标函数的描述和绘图,请参见比较fminimax和fminunc.
将目标函数设置为形式的三个线性函数 对于三个载体 和三个常数 .
一个= (1,1);b = (1, 1);c = [0, 1];a0 = 2;b0 = 3;c0 = 4;有趣= @ (x) [x * + a0, * b + b0, x * c + c0];
求这个不等式的极大极小点X (1) + 3* X (2) <= -4
.
a = [1,3];b = -4;x0 = [-1,-2];x = fminimax(乐趣,x0,a,b)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x =1×2-5.8000 - 0.6000
这个例子的目标函数是线性加常数。有关目标函数的描述和绘图,请参见比较fminimax和fminunc.
将目标函数设置为形式的三个线性函数 对于三个载体 和三个常数 .
一个= (1,1);b = (1, 1);c = [0, 1];a0 = 2;b0 = 3;c0 = 4;有趣= @ (x) [x * + a0, * b + b0, x * c + c0];
设置界限-2 <= x(1)<= 2
和-1 <= x(2)<= 1
然后求解极大极小问题[0,0]
.
lb = [-2,-1];UB = [2,1];x0 = [0,0];a = [];无线性约束b = [];Aeq = [];说真的= [];[x, fval] = fminimax (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x =1×2-0.0000 - 1.0000
fval =1×33.0000 -2.0000 3.0000
在这种情况下,解决方案不是唯一的。许多点满足约束条件且具有相同的极小极大值。绘制代表三个目标函数最大值的曲面,并绘制一条红线,显示具有相同的极小最大值的点。
[x,y] = meshgrid(linspace(-2,2),linspace(-1,1));z = max(fun([x(:),y(:)],[],2);z =重塑(z,size(x));冲浪(x,y,z,'linestyle'那'没有任何')查看(-118,28)持有在线([ - 2,0],[1,1],[3,3],'颜色'那'r'那“线宽”, 8)离开
这个例子的目标函数是线性加常数。有关目标函数的描述和绘图,请参见比较fminimax和fminunc.
将目标函数设置为形式的三个线性函数 对于三个载体 和三个常数 .
一个= (1,1);b = (1, 1);c = [0, 1];a0 = 2;b0 = 3;c0 = 4;有趣= @ (x) [x * + a0, * b + b0, x * c + c0];
这UnitDisk.
函数表示非线性不等式约束
.
类型UnitDisk.
函数c = unitdisk(x) c = x(1)²+ x(2)²- 1;测查= [];
用。求解极大极小问题UnitDisk.
约束,从x0 = [0,0]
.
x0 = [0,0];a = [];%没有其他限制b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = @unitdisk;x = fminimax (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x =1×2-0.0000 - 1.0000
Fminimax.
可以最大限度地减少最大值
或
对于第一个值
通过使用absolutemaxObjectiveCount.
选项。尽量减少绝对值
目的,安排客观函数值,使其如此
通过
是绝对最小化的目标,并设置absolutemaxObjectiveCount.
选择K.
.
在这个例子中,最小化的最大值罪
和因为
,指定罪
作为第一个目标,并设定absolutemaxObjectiveCount.
到1。
有趣= @ (x) [sin (x), cos (x));选择= optimoptions (“fminimax”那“AbsoluteMaxObjectiveCount”,1);x0 = 1;a = [];百分比没有限制b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x1 = fminimax(fun,x0,a,b,aeq,beq,lb,Ub,nonlcon,选项)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
X1 = 0.7854.
尝试从x0 = 2
.
x0 = -2;x2 = fminimax(fun,x0,a,b,aeq,beq,lb,Ub,nonlcon,选项)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x2 = -3.1416.
绘制函数。
t = linspace(π-π);情节(t,马克斯(abs (sin (t)),因为(t)))
看看效果如何absolutemaxObjectiveCount.
选项,将此绘图与示例中的绘图进行比较sin和cos的最大值.
求出极大极小点的位置和目标函数的值。有关目标函数的描述和绘图,请参见比较fminimax和fminunc.
将目标函数设置为形式的三个线性函数 对于三个载体 和三个常数 .
一个= (1,1);b = (1, 1);c = [0, 1];a0 = 2;b0 = 3;c0 = 4;有趣= @ (x) [x * + a0, * b + b0, x * c + c0];
将初始点设置为[0,0]
求极大极小点和值。
x0 = [0,0];[x,fval] = fminimax(乐趣,x0)
地方最低可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x =1×2-2.5000 - 2.2500
fval =1×31.7500 1.7500 1.7500
所有三个目标函数在最低限度点处具有相同的值。无约束问题通常具有至少两个等于解决方案的目标,因为如果任何目标的点不是局部最小值,并且只有一个目标具有最大值,则可以降低最大目标。
这个例子的目标函数是线性加常数。有关目标函数的描述和绘图,请参见比较fminimax和fminunc.
将目标函数设置为形式的三个线性函数 对于三个载体 和三个常数 .
一个= (1,1);b = (1, 1);c = [0, 1];a0 = 2;b0 = 3;c0 = 4;有趣= @ (x) [x * + a0, * b + b0, x * c + c0];
求这个不等式的极大极小点X (1) + 3* X (2) <= -4
.
a = [1,3];b = -4;x0 = [-1,-2];
设置迭代显示选项,并获得所有求解器输出。
选择= optimoptions (“fminimax”那'展示'那'iter');Aeq = [];%没有其他限制说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[x,fval,maxfval,退出帧,输出,lambda] =...fminimax(有趣,x0, A、b Aeq,说真的,磅,乌兰巴托,nonlcon,选项)
目标Max Line搜索方向Iter F-count值约束步长导数步骤0 4 0 6 19 5 0 1 0.981 2 14 4.889 8.882e-16 1 -0.302 Hessian修正2次3 19 3.4 8.132 -09 1 -0.302 Hessian修正2次局部最小可能。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长的值的量,但是满足约束公差的值满足。
x =1×2-5.8000 - 0.6000
fval =1×3-3.2000 3.4000 3.4000.
maxfval = 3.4000
EXITFLAG = 4.
输出=结构体字段:迭代:4 Funccount:19 Lssteplenth:1步骤化:6.0684E-10算法:'Active-Set'的Firstorderopt:[] Constrviolation:8.1323E-09消息:'...'
lambda =结构体字段:下:[2x1 double]上:[2x1 double] eqlin: [0x1 double] eqnonlin: [0x1 double] ineqlin: 0.2000 ineqnonlin: [0x1 double]
检查退回的信息:
两个目标函数值在解处相等。
该求解器收敛于4次迭代和19次函数计算。
这lambda.ineqlin.
值是非零,指示线性约束在解决方案处为活动状态。
乐趣
-目标函数目标函数,指定为函数句柄或函数名称。乐趣
是一个接受向量的函数X
并返回向量F
,目标函数的取值为X
.您可以指定函数乐趣
作为函数文件的函数句柄:
x = fminimax(@ myfun,x0,目标,重量)
在哪里myfun
是一个matlab.®功能如
函数F = myfun(x)…%计算函数在x处的值。
乐趣
也可以是匿名功能的函数句柄:
x = fminimax (@ (x) sin (x) * x), x0,目标,重量);
如果用户定义的值X
和F
是阵列,Fminimax.
使用线性索引将它们转换为向量(参见数组索引).
最小化矢量某些元素的最坏情况绝对值F(X)(即,最小{max abs {F(X)}}),将这些目标划分为F和use的第一个元素优化选择
设置absolutemaxObjectiveCount.
选择这些目标的数量。这些目标必须被分割成向量的第一个元素F
返回乐趣
.例如,看到使用一个目标的绝对值来解决极小的问题.
假设也可以计算目标函数的梯度和这specifyobjectivegradient.
选择是真的
,如:
选项= Optimoptions('fminimax','specifyobjectivegradient',true)
在这种情况下,功能乐趣
必须在第二个输出参数中返回梯度值G
(矩阵)在X
.渐变由部分衍生物组成df / dx.每个F
当时X
.如果F
是长度的矢量m
和X
有长度N
, 在哪里N
是的长度x0
,然后梯度G
的F (x)
是一个N
-经过-m
矩阵G (i, j)
是部分衍生的缩略词)
关于x(i)
(那就是j
th列G
梯度是j
目标职能缩略词)
).如果您定义F
作为一个阵列,那么前面的讨论适用于F(:)
,线性排序F
大批。在任何情况下,G
是一个二维矩阵。
笔记
环境specifyobjectivegradient.
来真的
只有当问题没有非线性约束时才有效,或者当问题具有非线性约束时specifyConstraintGRadient.
设置真的
.在内部,目标被折叠到约束中,因此求解器需要提供梯度(客观和约束)以避免估计梯度。
数据类型:char
|细绳
|function_handle.
x0
-初始点一种
-线性不平等约束线性不等式约束,指定为真实矩阵。一种
是一个m
-经过-N
矩阵,其中m
是不平等的数量,而且N
是变量数量(元素数x0
).对于大问题,通过一种
作为稀疏矩阵。
一种
编码m
线性不等式
a * x <= b
那
在哪里X
列向量是N
变量x (:)
, 和B.
是一个列向量m
元素。
例如,指定
X1+ 2X2≤10
3.X1+ 4X2≤20
5.X1+ 6X2≤30,
输入这些约束:
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例子:指定x组件总和为1或更少,使用一个= 1 (1,N)
和B = 1
.
数据类型:双倍的
B.
-线性不平等约束线性不平等约束,指定为真正的矢量。B.
是一个m
元素向量相关的一种
矩阵。如果你通过了B.
作为一排矢量,求解器内部转换B.
到列向量b (:)
.对于大问题,通过B.
作为稀疏的矢量。
B.
编码m
线性不等式
a * x <= b
那
在哪里X
列向量是N
变量x (:)
, 和一种
是大小的矩阵m
-经过-N
.
例如,考虑这些不等式:
X1+ 2X2≤10
3.X1+ 4X2≤20
5.X1+ 6X2≤30。
输入以下约束指定不等式。
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例子:指定x组件总和为1或更少,使用一个= 1 (1,N)
和B = 1
.
数据类型:双倍的
AEQ.
-线性平等约束线性平等约束,指定为真实矩阵。AEQ.
是一个我
-经过-N
矩阵,其中我
是平等的数量,和N
是变量数量(元素数x0
).对于大问题,通过AEQ.
作为稀疏矩阵。
AEQ.
编码我
线性平等
Aeq * x =说真的
那
在哪里X
列向量是N
变量x (:)
, 和贝卡
是一个列向量我
元素。
例如,指定
X1+ 2X2+ 3X3.= 10.
2X1+ 4X2+X3.= 20,
输入这些约束:
AEQ = [1,2,3; 2,4,1];Beq = [10; 20];
例子:要指定x分量的和为1,使用AEQ = ONE(1,N)
和Beq = 1
.
数据类型:双倍的
贝卡
-线性平等约束线性等式约束,指定为实向量。贝卡
是一个我
元素向量相关的AEQ.
矩阵。如果你通过了贝卡
作为一排矢量,求解器内部转换贝卡
到列向量Beq(:)
.对于大问题,通过贝卡
作为稀疏的矢量。
贝卡
编码我
线性平等
Aeq * x =说真的
那
在哪里X
列向量是N
变量x (:)
, 和AEQ.
是大小的矩阵我
-经过-N
.
例如,考虑以下平等:
X1+ 2X2+ 3X3.= 10.
2X1+ 4X2+X3.= 20。
通过输入以下约束来指定等式。
AEQ = [1,2,3; 2,4,1];Beq = [10; 20];
例子:要指定x分量的和为1,使用AEQ = ONE(1,N)
和Beq = 1
.
数据类型:双倍的
磅
-下限下界,指定为实向量或实数组。如果元素的数量x0
等于元素的数量磅
, 然后磅
指定
x(i)> = lb(i)
对全部一世
.
如果numel(lb)
磅
指定
x(i)> = lb(i)
为了1 <= I <= numel(lb)
.
如果有更少的元素磅
比在x0
,解决方案发出警告。
例子:要指定所有x组件是正的,请使用lb = zeros(size(x0))
.
数据类型:双倍的
乌兰巴托
-上限上限,指定为真实的矢量或真实数组。如果元素的数量x0
等于元素的数量乌兰巴托
, 然后乌兰巴托
指定
x(i)<= UB(i)
对全部一世
.
如果numel(Ub)
乌兰巴托
指定
x(i)<= UB(i)
为了1 <= i <= numel(UB)
.
如果有更少的元素乌兰巴托
比在x0
,解决方案发出警告。
例子:要指定所有x组件小于1,请使用UB =α(大小(x0))
.
数据类型:双倍的
nonlcon.
-非线性约束非线性约束,指定为函数句柄或函数名。nonlcon.
是接受向量还是数组的函数X
并返回两个数组,C(x)
和CEQ(x)
.
C(x)
是非线性不等式约束的数组X
.Fminimax.
试图满足
C(x)<= 0
的所有条目C
.
CEQ(x)
是非线性平等约束的数组X
.Fminimax.
试图满足
CEQ(x)= 0
的所有条目CEQ.
.
例如,
x = fminimax (@mycon @myfun, x0,…)
在哪里mycon
是一个MATLAB功能,如下:
函数[c,ceq] = mycon(x)%计算非线性不等式在x. ceq =…计算x处的非线性等式。
假设也可以计算约束的梯度和这specifyConstraintGRadient.
选择是真的
,如:
选择= optimoptions(‘fminimax’,‘SpecifyConstraintGradient’,真的)
在这种情况下,功能nonlcon.
还必须返回,在第三和第四个输出参数中,GC
,梯度C(x)
, 和GCeq
,梯度CEQ(x)
.看非线性约束有关如何在不接受提供梯度的求解器中“调整”梯度的说明。
如果nonlcon.
返回一个向量C
的m
组件和X
有长度N
, 在哪里N
是的长度x0
,然后梯度GC
的C(x)
是一个N
-经过-m
矩阵,其中GC (i, j)
是部分衍生的C(j)
关于x(i)
(那就是j
th列GC
梯度是j
不平等限制C(j)
).同样,如果CEQ.
拥有P.
组件,梯度GCeq
的CEQ(x)
是一个N
-经过-P.
矩阵,其中GCeq (i, j)
是部分衍生的CEQ(j)
关于x(i)
(那就是j
th列GCeq
梯度是j
平等约束CEQ(j)
).
笔记
环境specifyConstraintGRadient.
来真的
只是有效的时候specifyobjectivegradient.
被设置为真的
.在内部,目标被折叠到约束中,因此求解器需要提供梯度(客观和约束)以避免估计梯度。
笔记
因为最优化工具箱™函数只接受类型的输入双倍的
,用户提供的目标和非线性约束函数必须返回类型的输出双倍的
.
看传递额外的参数有关如何参数化非线性约束函数的说明nonlcon.
,如果必要的。
数据类型:char
|function_handle.
|细绳
选项
-优化选项优化选择
|结构如optimset
回报的输出,指定为优化选项优化选择
或者一个结构optimset
返回。
某些选择缺席优化选择
显示。这些选项在下表中以斜体显示。有关详细信息,请参见查看选项.
有关具有不同名称的选项的详细信息optimset
, 看当前和遗留选项名称.
选项 | 描述 |
---|---|
absolutemaxObjectiveCount. |
元素数F一世(X)为此,最小化绝对值F一世.看使用一个目标的绝对值来解决极小的问题. 为了 |
ConstraintTolerance |
约束违背的终止容限(正标量)。默认值是 为了 |
诊断 | 显示要最小化或解决的功能的诊断信息。选择是 |
diffmaxchange. | 有限差分梯度(正标量)的变量最大变化。默认值是 |
差异 | 有限差分梯度(正标量)变量变化的最小值。默认值是 |
|
显示水平(见迭代显示):
|
FiniteDifferenceStepSize |
有限差分的标量或向量步长因子。当您设置
签名'(x)= sign(x) 除了标志' (0)= 1 .中央有限差异是
FiniteDifferenceStepSize 展开成一个向量。默认值是SQRT(EPS) 对于正向有限差分,和EPS ^(1/3) 用于中央有限差异。为了 |
FiniteDifferenceType |
用于估计梯度的有限差异的类型 当估计两种类型的有限差异时,算法小心遵循界限。例如,它可能是向后差异而不是前向差异,以避免在界限之外的点处评估。 为了 |
functiontolerance. |
函数值的终止公差(一个正标量)。默认值是 为了 |
FunValCheck | 检查表示目标函数和约束值是否有效。 |
MaxFunctionEvaluations. |
允许的最大函数求值数(一个正整数)。默认值是 为了 |
最大 |
允许的最大迭代次数(正整数)。默认值是 为了 |
maxsqpiter. | 允许的最大SQP迭代次数(正整数)。默认值是 |
meritfunction. | 如果此选项设置为 |
OptimalityTolerance |
终止耐受一阶最优性(正标量)。默认值是 为了 |
outputfcn. |
一个或多个用户定义的函数,用于在每次迭代时调用优化函数。通过功能句柄或功能句柄的单元格数组。默认值为none( |
Plotfcn. |
在算法执行时显示各种进展措施的图。从预定义的地块中选择或写自己的。通过名称,函数句柄或名称或功能句柄的单元数组。对于自定义绘图功能,通过功能句柄。默认值为none(
自定义绘图功能使用与输出功能相同的语法。看优化工具箱™的输出功能和输出函数和绘图函数语法. 为了 |
Rellinesrchbnd. | 直线搜索步长上的相对界(一个实非负标量值),使总位移在 |
RelLineSrchBndDuration | 中指定的边界所对应的迭代次数 |
specifyConstraintGRadient. |
用户定义的非线性约束函数的梯度。此选项设置为 为了 |
specifyobjectivegradient. |
用户定义的目标函数的梯度。请参阅描述 为了 |
StepTolerance. |
终止上公差 为了 |
Tolconsqp. | 终止公差对内部迭代SQP约束违规(正标量)。默认值是 |
典型的 |
典型的 |
使用指α. |
使用并行计算的选项。此选项设置为 |
例子:Optimoptions('fminimax','plotfcn','OptimplotFval')
fval.
- 解决方案的目标函数值目标函数在解时的值,作为实数组返回。一般来说,fval.
=有趣的(x)
.
maxfval
- 解决方案的最大客观函数值最多可以在解决方案处的目标函数值,作为实际标量返回。maxfval = max(fval(:))
.
ExitFlag.
- - -原因Fminimax.
停止原因Fminimax.
停止,返回整数。
|
功能融合到解决方案 |
|
搜索方向的幅度小于指定的公差,约束违规小于 |
|
方向衍生物的幅度小于指定的公差,约束违规小于 |
|
超出迭代次数 |
|
通过输出函数或绘图函数停止 |
|
没有发现可行的点。 |
输出
-优化流程信息有关优化过程的信息,返回与此表中字段的结构。
迭代 |
采取的迭代人数 |
Funccount. |
功能评估数量 |
lssteplentht |
线路搜索步骤的大小相对于搜索方向 |
constrviolation |
约束函数的最大值 |
stepsize |
最后一次位移的长度 |
算法 |
优化算法 |
firstordopt. |
一阶最优性的衡量 |
信息 |
退出消息 |
这优化Live Editor任务提供可视界面Fminimax.
.
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。