主要内容

fminimax

求解极大极小约束问题

描述

fminimax求一个点,使一组目标函数的最大值最小。

这个问题包括任何类型的约束。在细节,fminimax求问题的最小值

最小值 x 马克斯 F x 这样 c x 0 c e x 0 一个 x b 一个 e x b e l b x u b

在哪里b而且说真的是向量,一个而且Aeq矩阵,cx),量表信x),Fx)是返回向量的函数。Fx),cx),量表信x)可以是非线性函数。

x,乌兰巴托可作为向量或矩阵传递;看到矩阵的参数

你也可以用fminimax,使用恒等式

马克斯 x 最小值 F x 最小值 x 马克斯 F x

你可以解决形式的问题

最小值 x 马克斯 | F x |

通过使用AbsoluteMaxObjectiveCount选择;看到利用一个目标的绝对值求解极大极小问题

例子

x= fminimax (有趣的x0起价x0找到一个极小极大解x中描述的功能有趣的

请注意

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

例子

x= fminimax (有趣的x0一个b解决了线性不等式的极大极小问题* x≤b

x= fminimax (有趣的x0一个bAeq说真的解决了线性方程的极大极小问题Aeq * x =说真的也如果不存在不等式,则设置一个= []而且b = []

例子

x= fminimax (有趣的x0一个bAeq说真的乌兰巴托解决了有界的极大极小问题x乌兰巴托.如果不存在等式,则设置Aeq = []而且说真的= [].如果x(我)下面是无界的,集合磅(i) =负无穷;如果x(我)上面是无界的,集合吗乌兰巴托(i) =正无穷

请注意

看到迭代可能会违反约束

请注意

如果问题的指定输入边界不一致,则输出xx0和输出fval[]

例子

x= fminimax (有趣的x0一个bAeq说真的乌兰巴托nonlcon解决了非线性不等式的极大极小问题c (x)或平等量表(x)中定义的nonlcon.函数优化到c (x)≤0而且量表(x) = 0.如果不存在边界,则设置磅= []乌兰巴托= [],或两者兼而有之。

例子

x= fminimax (有趣的x0一个bAeq说真的乌兰巴托nonlcon选项中指定的优化选项解决了极大极小问题选项.使用optimoptions设置这些选项。

x= fminimax (问题解决了的极小极大问题问题中描述的结构问题

例子

xfval) = fminimax (___,对于任何语法,返回计算的目标函数的值有趣的在解决方案x

例子

xfvalmaxfvalexitflag输出) = fminimax (___另外,返回目标函数在解处的最大值x,一个值exitflag的退出条件fminimax,以及一个结构输出包含关于优化过程的信息。

例子

xfvalmaxfvalexitflag输出λ) = fminimax (___另外返回一个结构λ谁的场包含解的拉格朗日乘子x

例子

全部折叠

创建一个情节而且因为函数及其在区间上的最大值(π-π,)

t = linspace(π-π);情节(t,罪(t)的r -)举行情节(t, cost,“b -”);情节(t,马克斯(罪(t),因为(t)),“柯”)传说(“罪(t)”“因为(t)”“马克斯(罪(t),因为(t))”“位置”“西北”

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些对象表示sin(t) cos(t) max(sin(t) cos(t))

图中显示了最大值的两个局部极小值,一个在1附近,另一个在-2附近。求1附近的最小值。

有趣= @ (x) [sin (x), cos (x));x0 = 1;x0, x1 = fminimax(有趣)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束条件满足到约束公差值之内。
x1 = 0.7854

求-2附近的最小值。

x0 = 2;x0, x2 = fminimax(有趣)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束条件满足到约束公差值之内。
x2 = -2.3562

本例的目标函数是线性加常数。有关目标函数的描述和图,请参见比较fminimax和fminunc

将目标函数设置为窗体的三个线性函数 d o t x v + v 0 为三个向量 v 和三个常量 v 0

一个= (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

一个= [1,3];b = 4;x0 = [1, 2];x = fminimax(乐趣,x0, A, b)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束条件满足到约束公差值之内。
x =1×2-5.8000 - 0.6000

本例的目标函数是线性加常数。有关目标函数的描述和图,请参见比较fminimax和fminunc

将目标函数设置为窗体的三个线性函数 d o t x v + v 0 为三个向量 v 和三个常量 v 0

一个= (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)

磅= (2,1);乌兰巴托= (2,1);x0 = (0,0);一个= [];%无线性约束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],[3 3],“颜色”“r”“线宽”, 8)

图中包含一个axes对象。axis对象包含两个类型为surface、line的对象。

本例的目标函数是线性加常数。有关目标函数的描述和图,请参见比较fminimax和fminunc

将目标函数设置为窗体的三个线性函数 d o t x v + v 0 为三个向量 v 和三个常量 v 0

一个= (1,1);b = (1, 1);c = [0, 1];a0 = 2;b0 = 3;c0 = 4;有趣= @ (x) [x * + a0, * b + b0, x * c + c0];

unitdisk函数表示非线性不等式约束 x 2 1

类型unitdisk
函数[c,ceq] = unitdisk(x) c = x(1)²+ x(2)²- 1;测查= [];

求极小极大问题的解unitdisk约束,从x0 = (0,0)

x0 = (0,0);一个= [];%没有其他约束b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = @unitdisk;x = fminimax (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束条件满足到约束公差值之内。
x =1×2-0.0000 - 1.0000

fminimax能使两者的最大值最小化吗 F x | F x | 的前几个值 通过使用AbsoluteMaxObjectiveCount选择。使…的绝对值最小 k 在目标中,排列目标函数值使 F 1 x 通过 F k x 目标是否为绝对最小化,并设定AbsoluteMaxObjectiveCount选项k

在本例中,将的最大值最小化而且因为,指定作为第一个目标,并且设定AbsoluteMaxObjectiveCount为1。

有趣= @ (x) [sin (x), cos (x));选择= optimoptions (“fminimax”“AbsoluteMaxObjectiveCount”1);x0 = 1;一个= [];%没有约束b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x1 = fminimax (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束条件满足到约束公差值之内。
x1 = 0.7854

试着从x0 = 2

x0 = 2;x2 = fminimax (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束条件满足到约束公差值之内。
x2 = -3.1416

绘制函数。

t = linspace(π-π);情节(t,马克斯(abs (sin (t)),因为(t)))

图中包含一个axes对象。axis对象包含一个类型为line的对象。

看看效果AbsoluteMaxObjectiveCount选项,将此图与示例中的图进行比较最小化sin和cos的最大值

得到极大极小点的位置和目标函数的值。有关目标函数的描述和图,请参见比较fminimax和fminunc

将目标函数设置为窗体的三个线性函数 d o t x v + v 0 为三个向量 v 和三个常量 v 0

一个= (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

将目标函数设置为窗体的三个线性函数 d o t x v + v 0 为三个向量 v 和三个常量 v 0

一个= (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

一个= [1,3];b = 4;x0 = [1, 2];

为迭代显示设置选项,并获得所有求解器输出。

选择= optimoptions (“fminimax”“显示”“通路”);Aeq = [];%没有其他约束说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[x, fval maxfval, exitflag,输出,λ)=...fminimax(有趣,x0, A、b Aeq,说真的,磅,乌兰巴托,nonlcon,选项)
目的最大行搜索定向Iter f计数值约束步长导数步骤0 4 0 6 19 5 0 1 0.981 2 14 4.889 8.882e-16 1 -0.302 Hessian修改两次3 19 3.4 8.132e-09 1 -0.302 Hessian修改两次局部最小值。约束满足。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 lssteplth: 1 stepsize: 6.0684e-10算法:'active-set' firstorderopt: [] constrbreach: 8.1323e-09 message: '本地最小可能。约束满足……”
λ=结构体字段:Lower: [2x1 double] upper: [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,目标,重量)

在哪里myfunMATLAB是一种®等功能

函数F = myfun(x...计算函数在x处的值。

有趣的也可以是匿名函数的函数句柄:

x = fminimax (@ (x) sin (x) * x), x0,目标,重量);

fminimax通过x目标函数和任何非线性约束函数的形状x0论点。例如,如果x0是5 × 3的数组吗fminimax通过x有趣的作为一个5 × 3的数组。然而,fminimax乘以线性约束矩阵一个Aeqx转换后x到列向量x (:)

使向量的某些元素的最坏情况绝对值最小Fx)(即min{max abs{Fx)}}),将这些目标划分到F的第一个元素中并使用optimoptions设置AbsoluteMaxObjectiveCount选择这些目标的数量。这些目标必须被分割成向量的第一个元素F返回的有趣的.示例请参见利用一个目标的绝对值求解极大极小问题

假设目标函数的梯度也可以计算出来而且SpecifyObjectiveGradient选择是真正的,按下列规定:

选择= optimoptions (“fminimax”“SpecifyObjectiveGradient”,真正的)

在这种情况下,函数有趣的必须在第二个输出参数中返回梯度值G(矩阵)x.梯度由偏导数组成dF / dx每一个F在点x.如果F是长度向量吗而且x长度n,在那里n的长度x0,则梯度GF (x)是一个n——- - - - - -矩阵G (i, j)的偏导数是多少F (j)关于x(我)(即jth列G梯度是多少jth目标函数F (j)).如果您定义F作为数组,则前面的讨论适用于F (:)的线性排序F数组中。在任何情况下,G是一个二维矩阵。

请注意

设置SpecifyObjectiveGradient真正的是只有当问题没有非线性约束时才有效,还是当问题有非线性约束时有效SpecifyConstraintGradient设置为真正的.在内部,目标被折叠到约束中,所以求解器需要同时提供梯度(目标和约束),以避免估计梯度。

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

初始点,指定为实向量或实数组。中的元素的数量x0和大小x0来确定变量的数量和大小有趣的接受。

例子:x0 =(1、2、3、4)

数据类型:

线性不等式约束,指定为实矩阵。一个是一个——- - - - - -N矩阵,不等式的个数,和N变量的个数(元素的个数?x0).对于大问题,不考虑一个作为一个稀疏矩阵。

一个编码线性不等式

A * x < =

在哪里x列向量是N变量x (:),b列向量是元素。

例如,考虑以下这些不等式:

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

通过输入以下约束指定不等式。

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:要指定x分量的和为1或更小,请使用一个= 1 (1,N)而且b = 1

数据类型:

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

b编码线性不等式

A * x < =

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

例如,考虑以下这些不等式:

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

通过输入以下约束指定不等式。

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:要指定x分量的和为1或更小,请使用一个= 1 (1,N)而且b = 1

数据类型:

线性等式约束,指定为实矩阵。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];说真的=(10、20);

例子:要指定x分量的和为1,使用Aeq = 1 (1, N)而且说真的= 1

数据类型:

线性等式约束,指定为实向量。说真的是一个元素向量相关的Aeq矩阵。如果你通过说真的作为行向量,求解器内部转换说真的到列向量说真的(:).对于大问题,不考虑说真的作为一个稀疏向量。

说真的编码线性等式

Aeq * x =说真的

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

例如,考虑以下等式:

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

通过输入以下约束来指定等式。

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:要指定x分量的和为1,使用Aeq = 1 (1, N)而且说真的= 1

数据类型:

下界,指定为实向量或实数组。如果元素的个数x0等于元素的个数,然后指定

x(我)> =磅(我)对所有

如果元素个数(磅)<元素个数(x0),然后指定

x(我)> =磅(我)1 <= I <= numel(lb)

如果元素少于x0,求解者发出警告。

例子:要指定所有x分量都是正的,使用磅= 0(大小(x0))

数据类型:

上界,指定为实向量或实数组。如果元素的个数x0等于元素的个数乌兰巴托,然后乌兰巴托指定

x (i) < =乌兰巴托(我)对所有

如果元素个数(乌兰巴托)<元素个数(x0),然后乌兰巴托指定

x (i) < =乌兰巴托(我)1 <= I <= numel(ub)

如果乌兰巴托元素少于x0,求解者发出警告。

例子:要指定所有x分量都小于1,使用乌兰巴托= 1(大小(x0))

数据类型:

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

  • c (x)是非线性不等式的数组约束在xfminimax试图满足

    c (x) < = 0对于所有的项c

  • 量表(x)是非线性等式约束的数组xfminimax试图满足

    量表(x) = 0对于所有的项量表信

例如,

x = fminimax (@mycon @myfun, x0,…)

在哪里mycon是一个MATLAB函数,如:

函数[c,ceq] = mycon(x) c =…计算非线性不等式在x. ceq =…计算在x处的非线性等式。

假设约束条件的梯度也可以计算出来而且SpecifyConstraintGradient选择是真正的,按下列规定:

选择= optimoptions(‘fminimax’,‘SpecifyConstraintGradient’,真的)

在这种情况下,函数nonlcon必须在第三和第四个输出参数中返回,GC的梯度c (x),GCeq的梯度量表(x).看到非线性约束关于如何在不接受提供的渐变的求解器中使用渐变的“条件化”解释。

如果nonlcon返回一个向量c组件和x长度n,在那里n的长度x0,则梯度GCc (x)是一个n——- - - - - -矩阵,GC (i, j)的偏导数是多少c (j)关于x(我)(即jth列GC梯度是多少jth不等式约束c (j)).同样地,如果量表信p组件,梯度GCeq量表(x)是一个n——- - - - - -p矩阵,GCeq (i, j)的偏导数是多少量表(j)关于x(我)(即jth列GCeq梯度是多少jth等式约束量表(j)).

请注意

设置SpecifyConstraintGradient真正的仅在以下情况下有效SpecifyObjectiveGradient被设置为真正的.在内部,目标被折叠到约束中,所以求解器需要同时提供梯度(目标和约束),以避免估计梯度。

请注意

因为优化工具箱™函数只接受类型的输入,用户提供的目标函数和非线性约束函数必须返回类型的输出

看到传递额外的参数为了解释如何参数化非线性约束函数nonlcon,如果必要的。

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

优化选项,指定为的输出optimoptions或者一个结构,比如optimset的回报。

的选项中缺少一些选项optimoptions显示。这些选项在下表中以斜体显示。有关详细信息,请参见视图选项

有关具有不同名称的选项的详细信息optimset,请参阅当前和遗留选项名称

选项 描述
AbsoluteMaxObjectiveCount

的元素数Fx的绝对值最小F.看到利用一个目标的绝对值求解极大极小问题

optimset,名字是MinAbsMax

ConstraintTolerance

约束违反上的终止容忍(一个正标量)。默认值是1 e-6.看到公差和停止标准

optimset,名字是TolCon

诊断

显示关于要最小化或解决的功能的诊断信息。的选择是“上”“关闭”(默认)。

DiffMaxChange

有限差分梯度(一个正标量)变量的最大变化量。默认值是

DiffMinChange

有限差分梯度(一个正标量)变量的最小变化。默认值是0

显示

显示水平(参见迭代显示):

  • “关闭”“没有”显示没有输出。

  • “通路”在每个迭代中显示输出,并给出默认的退出消息。

  • “iter-detailed”在每个迭代中显示输出,并给出技术退出消息。

  • “通知”仅在函数不收敛时显示输出,并给出默认的退出消息。

  • “notify-detailed”仅在函数不收敛时显示输出,并给出技术退出消息。

  • “最后一次”(default)只显示最终输出,并给出默认的退出消息。

  • 最后详细的只显示最终输出,并给出技术退出消息。

FiniteDifferenceStepSize

有限差分的标量或向量步长因子。当您设置FiniteDifferenceStepSize一个向量v,正向有限差分δ

δ= v *标志的(x) *马克斯(abs (x)、TypicalX);

在哪里符号“(x) =符号(x)除了标志' (0)= 1.中心有限差分为

δ= v *马克斯(abs (x)、TypicalX);

标量FiniteDifferenceStepSize展开成一个向量。默认值是sqrt (eps)对于正向有限差分,和eps ^ (1/3)对于中心有限差分。

optimset,名字是FinDiffRelStep

FiniteDifferenceType

用于估计梯度的有限差分的类型“前进”(默认)或“中央”(中心)。“中央”需要两倍的函数求值,但通常更准确。

该算法在估计两种有限差分时都小心地服从边界。例如,它可能需要一个后向差,而不是前向差,以避免在边界外的点上求值。

optimset,名字是FinDiffType

FunctionTolerance

函数值(一个正标量)上的终止公差。默认值是1 e-6.看到公差和停止标准

optimset,名字是TolFun

FunValCheck

检查它表示目标函数和约束值是否有效。“上”当目标函数或约束返回值为时显示错误复杂的,或.默认的“关闭”显示没有错误。

MaxFunctionEvaluations

允许的函数求值的最大数量(正整数)。默认值是100 * numberOfVariables.看到公差和停止标准而且迭代和函数计数

optimset,名字是MaxFunEvals

MaxIterations

允许的最大迭代次数(正整数)。默认值是400.看到公差和停止标准而且迭代和函数计数

optimset,名字是麦克斯特

MaxSQPIter

允许的SQP迭代的最大次数(正整数)。默认值是10*max(numberOfVariables, numberofinequations + numberOfBounds)

MeritFunction

如果此选项设置为“multiobj”(默认值),使用目标实现或最大极小值函数。如果此选项设置为“singleobj”,可以使用fmincon价值函数。

OptimalityTolerance

一阶最优性(一个正标量)上的终止公差。默认值是1 e-6.看到一阶最优性测量

optimset,名字是TolFun

OutputFcn

优化函数在每次迭代时调用的一个或多个用户定义函数。传递函数句柄或函数句柄的单元格数组。默认值是none ([]).看到输出函数和图函数语法

PlotFcn

显示算法执行过程中各种进度度量的图。从预定义的情节中选择或编写自己的情节。传递名称、函数句柄或名称或函数句柄的单元格数组。对于自定义plot函数,传递函数句柄。默认值是none ([]).

  • “optimplotx”绘制当前点。

  • “optimplotfunccount”绘制函数计数。

  • “optimplotfval”绘制目标函数值。

  • “optimplotconstrviolation”绘制最大违反约束。

  • “optimplotstepsize”绘制步长。

自定义plot函数使用与输出函数相同的语法。看到优化工具箱的输出函数而且输出函数和图函数语法

optimset,名字是PlotFcns

RelLineSrchBnd

相对边界(一个真实的非负标量值)上的直线搜索步长,使总位移在x满足x)|≤relLineSrchBnd·max(| .x) | |typicalx) |).这个选项提供了对位移大小的控制x当求解器采取的步骤太大时。默认值是none ([]).

RelLineSrchBndDuration

中指定的边界的迭代次数RelLineSrchBnd应该是主动的。默认值是1

SpecifyConstraintGradient

用户定义的非线性约束函数的梯度。当此选项设置为真正的fminimax期望约束函数有四个输出,如中所述nonlcon.当此选项设置为(默认),fminimax利用有限差分估计非线性约束的梯度。

optimset,名字是GradConstr这些值是“上”“关闭”

SpecifyObjectiveGradient

用户定义的目标函数的梯度。参考的描述有趣的看看如何定义梯度。将此选项设置为真正的fminimax使用目标函数的用户定义梯度。默认的,,使fminimax用有限差分估计梯度。

optimset,名字是GradObj这些值是“上”“关闭”

StepTolerance

终止上公差x(积极的标量)。默认值是1e-6。看到公差和停止标准

optimset,名字是TolX

TolConSQP

内部迭代SQP约束违反上的终止容忍(一个正标量)。默认值是1 e-6

TypicalX

典型的x值。元素的数量TypicalX等于元素的个数x0,起点。默认值为的(numberofvariables, 1).的fminimax函数使用TypicalX为缩放有限差分梯度估计。

UseParallel

使用并行计算的选项。当此选项设置为真正的fminimax并行估计梯度。默认值是.看到并行计算

例子:optimoptions(“fminimax”、“PlotFcn”、“optimplotfval”)

问题结构,指定为具有此表中的字段的结构。

字段名 条目

客观的

目标函数有趣的

x0

初始点x

Aineq

矩阵用于线性不等式约束

bineq

线性不等式约束的向量

Aeq

矩阵用于线性等式约束

说真的

线性等式约束的向量
下界向量
乌兰巴托 上界向量

nonlcon

非线性约束函数

解算器

“fminimax”

选项

选择创建optimoptions

你必须提供至少客观的x0解算器,选项字段问题结构。

数据类型:结构体

输出参数

全部折叠

解决方案,作为实向量或实数组返回。的大小x的尺寸是一样的吗x0.通常情况下,x本地解决问题是什么时候exitflag是正的。有关解决方案质量的信息,请参见当求解器成功时

目标函数值在解处,作为实数组返回。一般来说,fval有趣的(x)

目标函数值在解处的最大值,作为实标量返回。maxfval = max (fval (:))

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

1

函数收敛到一个解x

4

搜索方向的幅度小于规定公差,违反约束的幅度小于规定公差选项。ConstraintTolerance

5

方向导数的幅度小于规定的公差,违反约束的幅度小于规定的公差选项。ConstraintTolerance

0

超过的迭代次数选项。麦克斯特ations或者说超出函数求值的次数选项。米axFunctionEvaluations

-1

被输出函数或绘图函数停止

-2

没有找到可行的点。

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

迭代

迭代次数

funcCount

函数求值的次数

lssteplength

相对于搜索方向的直线搜索步长

constrviolation

约束函数的最大值

stepsize

最后位移的长度x

算法

优化算法

firstorderopt

一阶最优性的度量

消息

退出消息

解处的拉格朗日乘子,作为带有该表中字段的结构返回。

较低的

下界对应于

对应的上界乌兰巴托

ineqlin

线性不等式对应于一个而且b

eqlin

线性等式对应于Aeq而且说真的

ineqnonlin

对应的非线性不等式cnonlcon

eqnonlin

对应的非线性方程量表信nonlcon

算法

fminimax将极大极小问题转化为目标实现问题,然后用fgoalattain.转换将所有目标设置为0,所有权重设置为1。看到方程1多目标优化算法

选择功能

应用程序

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

扩展功能

版本历史

之前介绍过的R2006a

Baidu
map