主要内容

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解决了线性不等式的极大极小问题A*x≤b

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

例子

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

请注意

看到迭代可能会违反约束

请注意

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

例子

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

例子

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

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

例子

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

例子

x,fval,maxfval,exitflag,输出= fminimax(___另外返回目标函数在解处的最大值x,一个值exitflag的退出条件fminimax,和结构输出有关优化过程的信息。

例子

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

例子

全部折叠

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

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

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象表示sin(t),cos(t), max(sin(t),cos(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(fun,x0)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束被满足到约束公差值之内。
X2 = -2.3562

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

将目标函数设为如下形式的三个线性函数 d o t x , v + v 0 对于三个向量 v 还有三个常数 v 0

A = [1;1];B = [-1;1];C = [0;-1];A0 = 2;B0 = -3;C0 = 4;Fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

找到符合不等式的极大极小点X (1) + 3* X (2) <= -4

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

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

将目标函数设为如下形式的三个线性函数 d o t x , v + v 0 对于三个向量 v 还有三个常数 v 0

A = [1;1];B = [-1;1];C = [0;-1];A0 = 2;B0 = -3;C0 = 4;Fun = @(x)[x*a+a0,x*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 = [];Beq = [];[x,fval] = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束被满足到约束公差值之内。
x =1×2-0.0000 - 1.0000
fval =1×33.0000 -2.0000 3.0000

在这种情况下,解不是唯一的。许多点满足约束条件且具有相同的极大极小值。绘制代表三个目标函数最大值的曲面,并绘制一条红线表示具有相同minimax值的点。

[X,Y] = meshgrid(linspace(-2,2),linspace(-1,1));Z = max(fun([X(:),Y(:)]),[],2);Z =重塑(Z,大小(X));冲浪(X, Y, Z,“线型”,“没有”)视图(-118,28)保持线((2,0),[1],[3 3],“颜色”,“r”,“线宽”, 8)

图中包含一个轴对象。坐标轴对象包含两个类型为surface、line的对象。

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

将目标函数设为如下形式的三个线性函数 d o t x , v + v 0 对于三个向量 v 还有三个常数 v 0

A = [1;1];B = [-1;1];C = [0;-1];A0 = 2;B0 = -3;C0 = 4;Fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

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

类型unitdisk
函数[c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1;Ceq = [];

求解服从的极大极小问题unitdisk约束,从X0 = [0,0]

X0 = [0,0];A = [];%无其他约束B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = @unitdisk;x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,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。

Fun = @(x)[sin(x),cos(x)];选项= optimoptions(“fminimax”,“AbsoluteMaxObjectiveCount”1);X0 = 1;A = [];%无约束B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = [];x1 = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束被满足到约束公差值之内。
X1 = 0.7854

试着从X0 = -2

X0 = -2;x2 = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
局部最小值。约束满足。Fminimax停止,因为当前搜索方向的大小小于步长公差值的两倍,约束被满足到约束公差值之内。
X2 = -3.1416

画出函数。

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

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

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

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

将目标函数设为如下形式的三个线性函数 d o t x , v + v 0 对于三个向量 v 还有三个常数 v 0

A = [1;1];B = [-1;1];C = [0;-1];A0 = 2;B0 = -3;C0 = 4;Fun = @(x)[x*a+a0,x*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

将目标函数设为如下形式的三个线性函数 d o t x , v + v 0 对于三个向量 v 还有三个常数 v 0

A = [1;1];B = [-1;1];C = [0;-1];A0 = 2;B0 = -3;C0 = 4;Fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

找到符合不等式的极大极小点X (1) + 3* X (2) <= -4

A = [1,3];B = -4;X0 = [-1,-2];

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

选项= optimoptions(“fminimax”,“显示”,“通路”);Aeq = [];%无其他约束Beq = [];Lb = [];Ub = [];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 modified twice 3 19 3.4 8.132e-09 1 -0.302 Hessian modified twice Local minimum possible。约束满足。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 algorithm: 'active-set' firstorderopt: [] constrviolation: 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,目标,重量)

在哪里myfun是一个MATLAB®函数如

函数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(我)(即j的第Th列G的梯度是j第Th目标函数F (j)).如果你定义F作为数组,则前面的讨论适用于F (:)的线性排序F数组中。无论如何,G是一个二维矩阵。

请注意

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

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

初始点,指定为实向量或实数组。求解器使用元素的数量x0和大小x0确定变量的数量和大小即有趣的接受。

例子:X0 = [1,2,3,4]

数据类型:

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

一个编码线性不等式

A*x <= b,

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

例如,考虑以下不等式:

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

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

A = [1,2;3,4;5,6];B = [10;20;30];

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

数据类型:

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

b编码线性不等式

A*x <= b,

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

例如,考虑以下不等式:

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

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

A = [1,2;3,4;5,6];B = [10;20;30];

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

数据类型:

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

Aeq编码线性等式

Aeq*x = beq,

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

例如,考虑以下不等式:

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

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

Aeq = [1,2,3;2,4,1];Beq = [10;20];

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

数据类型:

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

说真的编码线性等式

Aeq*x = beq,

在哪里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 = ones(1,N)而且Beq = 1

数据类型:

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

X (i) >= lb(i)对所有

如果数值(lb) <数值(x0),然后指定

X (i) >= lb(i)1 <= I <= number (lb)

如果元素少于x0,解算器发出警告。

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

数据类型:

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

X (i) <= ub(i)对所有

如果Numel (ub) < Numel (x0),然后乌兰巴托指定

X (i) <= ub(i)1 <= I <= numel(ub)

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

例子:要指定所有x分量都小于1,使用Ub = ones(size(x0))

数据类型:

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

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

    C (x) <= 0对于所有c

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

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

例如,

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

在哪里mycon为MATLAB函数,如下所示:

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

假设约束的梯度也可以计算出来而且SpecifyConstraintGradient选择是真正的,由:

options = optimoptions('fminimax',' specyconstraintgradient ',true)

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

如果nonlcon返回一个向量c组件和x长度n,在那里n的长度x0,然后是梯度GCc (x)是一个n——- - - - - -矩阵,GC (i, j)的偏导数是c (j)关于x(我)(即j的第Th列GC的梯度是jt不等式约束c (j)).同样地,如果量表信p分量,梯度GCeq量表(x)是一个n——- - - - - -p矩阵,GCeq (i, j)的偏导数是量表(j)关于x(我)(即j的第Th列GCeq的梯度是j等式约束量表(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,正向有限差分δ

delta = v *符号' (x).*max(abs(x),TypicalX);

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

delta = v.*max(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, numberOfInequalities + numberOfBounds)

MeritFunction

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

OptimalityTolerance

一阶最优性(正标量)上的终止容差。默认为1 e-6。看到一阶最优测度

optimset,名字是TolFun

OutputFcn

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

PlotFcn

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

  • “optimplotx”绘制当前点。

  • “optimplotfunccount”绘制函数计数。

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

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

  • “optimplotstepsize”绘制步长。

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

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多目标优化算法

选择功能

应用程序

优化活动编辑器任务提供了一个可视化界面fminimax

扩展功能

版本历史

R2006a之前介绍