解决极大极小约束问题
fminimax
寻找使一组目标函数的最大值最小化的点。
这个问题包括任何类型的约束。在细节,fminimax
寻求以下公式指定的问题的最小值:
在哪里B.和贝基是向量,一种和AEQ是矩阵,和C(X),CEQ(X), 和F(X)是返回向量的函数。F(X),C(X), 和CEQ(X)可以是非线性函数。
X那磅和乌兰巴托可以作为向量或矩阵传递;看到矩阵参数.
你也可以用fminimax
,使用身份
你可以解决表格的问题
通过使用AbsoluteMaxObjectiveCount
选项看见解决极小极大问题采用一种客观绝对值.
罪
和因为
创建的一个阴谋罪
和因为
函数及其在区间内的最大值[–π,π]
.
t=linspace(-pi,pi);plot(t,sin(t),“r-”)举行在…上情节(吨,COS(T),“b -”);情节(t,马克斯(罪(t),因为(t)),“柯”)传说(“罪(t)”那“因为(t)”那“马克斯(罪(t),因为(t))”那“位置”那“西北”)
该图显示了最大的两个局部极小,一个接近1,而其他近-2。查找附近1最小。
fun=@(x)[sin(x);cos(x)];x0=1;x1=fminimax(fun,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(乐趣([X(:),Y(:)]),[],2);Z =重塑(Z,大小(X));冲浪(X,Y,Z,“线型”那'没有任何')视图(-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];
这单位盘
函数表示非线性不等式约束
.
类型单位盘
函数c = unitdisk(x) c = x(1)²+ x(2)²- 1;测查= [];
用。求解极大极小问题单位盘
约束,从开始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。
fun=@(x)[sin(x),cos(x)];options=options(“fminimax”那“AbsoluteMaxObjectiveCount”,1); x0=1;A=[];%无约束b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x1 = fminimax (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)
当地最小的可能。约束满足。fminimax停止,因为当前的搜索方向的大小是步长公差小于两倍的值和约束约束公差值内满意。
x1=0.7854
试着从x0 = 2
.
x0=-2;x2=fminimax(乐趣、x0、A、b、Aeq、beq、lb、ub、非LCON、选项)
当地最小的可能。约束满足。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(fun,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 = [];%没有其他限制beq=[];lb=[];ub=[];nonlcon=[];[x,fval,maxfval,exitflag,output,lambda]=...fminimax(有趣,x0, A、b Aeq,说真的,磅,乌兰巴托,nonlcon,选项)
目标最大线搜索方向Iter F计数值约束步长导数程序0 4 0 6 1 9 5 0 1 0.981 2 14 4.889 0 1-0.302 Hessian修改两次3 19 3.4 8.132e-09 1-0.302 Hessian修改两次局部最小可能值。满足约束。fminimax停止,因为当前搜索方向的大小小于twice步长公差值和约束满足在约束公差值范围内。
x =1×2-5.8000 - 0.6000
fval=1×3-3.2000 3.4000 3.4000
maxfval = 3.4000
exitflag=4
输出=结构体字段:firstderopt: [] constructor: 8.1323e-09 message: '…'
λ=结构体字段:下:[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)(即min{max abs{F(X)}}),将这些目标划分为F和use的第一个元素optimoptions
设置AbsoluteMaxObjectiveCount
选择这些目标的数量。这些目标必须被分割成向量的第一个元素F
返回的享乐
.例如,看到解决极小极大问题采用一种客观绝对值.
假设也可以计算目标函数的梯度和这SpecifyObjectiveGradient
选择是符合事实的
,由以下机构设定:
options=optimoptions('fminimax','SpecifyObjectiveGradient',true)
在本例中,函数享乐
必须在第二个输出参数中返回梯度值G
(a)在X
.梯度由偏导数组成DF / DX各F
当时X
.如果F
是长度的向量m
和X
长度N
哪里N
是的长度x0
,然后是梯度G
属于F (x)
是一个N
-借-m
矩阵G (i, j)
是的偏导数F(j)
关于x(我)
(那就是j
th列G
梯度是j
目标函数F(j)
).如果您定义F
作为数组,则前面的讨论适用于F (:)
的线性排序F
数组。无论如何,G
是一个二维矩阵。
笔记
设置SpecifyObjectiveGradient
来符合事实的
仅当问题没有非线性约束时,或当问题具有带约束的非线性约束时,该方法才有效SpecifyConstraintGradient
着手符合事实的
.在内部,该目标被折叠成的制约,所以解算器需要以避免估计梯度供给两个梯度(目标和约束)。
数据类型:烧焦
|字符串
|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 = 1 (1, N)
和BEQ = 1
.
数据类型:双重的
贝基
-线性等式约束线性等式约束,指定为实向量。贝基
是一个我
元素向量相关的AEQ
矩阵。如果您通过贝基
作为行向量,解算器在内部进行转换贝基
到列向量贝基(:)
. 对于大问题,请通过贝基
作为稀疏向量。
贝基
编码我
线性等式
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 = 1 (1, N)
和BEQ = 1
.
数据类型:双重的
磅
-下限下界,指定为实向量或实数组。如果元素的数量x0
等于中的元素数磅
然后磅
指定
x(我)> =磅(我)
对所有一世
.
如果努美尔(磅)<努美尔(x0)
然后磅
指定
x(我)> =磅(我)
对于1 <= I <= numel(lb)
.
如果有较少的元素磅
比在x0
,解算器发出警告。
例子:要指定所有x分量都是正数,请使用lb=零(尺寸(x0))
.
数据类型:双重的
乌兰巴托
-上界上界,指定为实向量或实数组。如果元素的数量x0
等于中的元素数乌兰巴托
然后乌兰巴托
指定
x (i) < =乌兰巴托(我)
对所有一世
.
如果numel(UB)
乌兰巴托
指定
x (i) < =乌兰巴托(我)
对于1<=i<=numel(ub)
.
如果有较少的元素乌兰巴托
比在x0
,解算器发出警告。
例子:要指定所有x组件都小于1,请使用UB =酮(尺寸(X0))
.
数据类型:双重的
非LCON
-非线性约束非线性约束,指定为函数句柄或函数名。非LCON
是接受向量还是数组的函数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’,真的)
在本例中,函数非LCON
也必须返回,在第三和第四输出参数,GC
,梯度c(x)
和GCeq
,梯度CEQ(x)的
看见非线性约束有关如何将梯度“条件化”,以便在不接受已提供梯度的求解器中使用。
如果非LCON
返回一个向量C
属于m
组件和X
长度N
哪里N
是的长度x0
,然后是梯度GC
属于c(x)
是一个N
-借-m
矩阵,在哪里GC (i, j)
是的偏导数c(j)
关于x(我)
(那就是j
th列GC
梯度是j
个不等式约束c(j)
).同样,如果CEQ
有P.
组件,梯度GCeq
属于CEQ(x)的
是一个N
-借-P.
矩阵,在哪里GCeq (i, j)
是的偏导数行政长官(j)
关于x(我)
(那就是j
th列GCeq
梯度是j
个等式约束行政长官(j)
).
笔记
设置SpecifyConstraintGradient
来符合事实的
是有效的,只有当SpecifyObjectiveGradient
被设置为符合事实的
。在内部,目标被折叠到约束中,因此解算器需要同时提供梯度(目标和约束),以避免估计梯度。
笔记
因为最优化工具箱™函数只接受类型的输入双重的
,用户提供的目标和非线性约束函数必须返回类型的输出双重的
.
看传递额外的参数有关如何参数化非线性约束函数的说明非LCON
,如果必要的。
数据类型:烧焦
|function_handle
|字符串
选择权
-优化选项optimoptions
|结构,如optimset
回报的输出,指定为优化选项optimoptions
或者一个结构optimset
返回。
有些选项是从缺席optimoptions
显示。这些选项在下表中以斜体显示。有关详细信息,请参见查看选项.
有关具有不同名称的选项的详细信息optimset
, 看当前和旧选项名称.
选项 | 描述 |
---|---|
AbsoluteMaxObjectiveCount |
元素数F一世(X)要使F一世看见解决极小极大问题采用一种客观绝对值. 对于 |
ConstraintTolerance |
约束违背的终止容限(正标量)。默认值是 对于 |
诊断 | 显示有关要最小化或解决的功能的诊断信息。选项如下 |
DiffMaxChange | 有限差分梯度(正标量)变量的最大变化。默认值为 |
DiffMinChange | 有限差分梯度(正标量)变量变化的最小值。默认值是 |
|
显示水平(见迭代显示):
|
FiniteDifferenceStepSize |
有限差分的标量或向量步长因子。当您设置
符号'(X)=符号(x)的 除了标志' (0)= 1 . 中心有限差分是
FiniteDifferenceStepSize 展开为向量。默认值为sqrt(每股收益) 对于正向有限差分,和EPS ^(1/3) 中央有限差。对于 |
FiniteDifferenceType |
用于估计梯度的有限差分类型 估计这两种类型的有限差时该算法是小心服从边界。例如,它可能需要一个落后的差别,而不是正向的差异,避免在边界之外的一点评价。 对于 |
功能公差 |
函数值的终止公差(一个正标量)。默认值是 对于 |
FunValCheck | 检查表示目标函数和约束值是否有效。 |
MaxFunctionEvaluations. |
允许的最大函数求值数(一个正整数)。默认值是 对于 |
最大 |
允许的最大迭代次数(正整数)。默认值是 对于 |
MaxSQPIter | 允许的最大SQP迭代次数(正整数)。默认值是 |
功绩函数 | 如果此选项设置为 |
OptimalityTolerance |
一阶最优性的终止容限(正标量)。默认值是 对于 |
OutputFcn |
一个或多个用户定义的函数,一个优化函数在每次迭代调用。传递一个函数手柄或手柄功能的单元阵列。默认值是无( |
PlotFcn |
显示算法执行时各种进度度量的绘图。从预定义绘图中选择或编写自己的绘图。传递名称、函数句柄或名称或函数句柄的单元格数组。对于自定义绘图函数,传递函数句柄。默认为无(
自定义功能阴谋使用相同的语法输出功能。看优化工具箱的输出函数™和输出函数和绘图函数语法. 对于 |
RelLineSrchBnd | 直线搜索步长上的相对界(一个实非负标量值),使总位移在 |
RelLineSrchBndDuration | 中指定的边界所对应的迭代次数 |
SpecifyConstraintGradient |
梯度由用户定义的非线性约束函数。当此选项设置为 对于 |
SpecifyObjectiveGradient |
用户定义的目标函数的梯度。请参阅的说明 对于 |
阶跃公差 |
终止上公差 对于 |
TolConSQP | 内部迭代SQP约束冲突的终止容差(正标量)。默认值为 |
典型的 |
典型的 |
使用并行 |
使用并行计算的选项。当此选项设置为 |
例子:optimoptions('fminimax'、'PlotFcn'、'optimplotfval')
问题
-问题结构问题结构,指定为与该表中的字段的结构。
字段名 | 进入 |
---|---|
|
目标函数享乐 |
|
初始点X |
|
线性不等式约束的矩阵 |
|
线性不等式约束向量 |
|
线性等式约束的矩阵 |
|
线性等式约束向量 |
磅 |
下限的矢量 |
乌兰巴托 |
上界向量 |
|
非线性约束函数 |
|
“fminimax” |
|
使用创建的选项optimoptions |
您必须提供至少客观的
那x0
那解算器
和选择权
田野问题
结构。
数据类型:结构
未来值
-解的目标函数值目标函数在解时的值,作为实数组返回。一般来说,未来值
=有趣的(x)
.
maxfval
-解的目标函数值的最大值目标函数在解处值的最大值,作为实标量返回。maxfval=max(fval(:)
.
exitflag
- - -原因fminimax
停止原因fminimax
停止,返回一个整数。
|
函数收敛到一个解 |
|
搜索方向的大小小于指定的公差,约束冲突小于 |
|
方向导数的大小小于指定的公差,且约束冲突小于 |
|
超过迭代次数 |
|
通过输出功能或绘图功能停止 |
|
没有找到可行的点。 |
输出
-优化流程信息关于优化过程中,返回与此表中的字段的结构信息。
迭代 |
采取迭代次数 |
功能计数 |
功能评估的数量 |
lssteplength |
相对于搜索方向的行搜索步长的大小 |
constrviolation |
约束函数的最大值 |
步长 |
最后一次位移的长度 |
算法 |
优化算法 |
第一顺序选择 |
衡量一阶最优的 |
信息 |
退出消息 |
这优化活动编辑器任务为fminimax
.
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。