主要内容

fmincon

找到最小约束的非线性多变量函数

描述

非线性规划求解器进行求解。

找到指定的最小的问题

最小值 x f ( x ) 这样 { c ( x ) 0 c e ( x ) = 0 一个 x b 一个 e x = b e l b x u b ,

b说真的是向量,一个Aeq矩阵,c(x),量表信(x)函数返回向量,f(x)是一个函数,它返回一个标量。f(x),c(x),量表信(x)可以是非线性函数。

x,,乌兰巴托可以通过向量或矩阵;看到矩阵的参数

例子

x= fmincon (有趣的,x0,一个,b)起价x0并试图找到一个最小值x中描述的功能有趣的线性不等式* x≤bx0可以是一个标量、向量或矩阵。

请注意

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

例子

x= fmincon (有趣的,x0,一个,b,Aeq,说真的)最小化有趣的线性等式Aeq * x =说真的* x≤b。如果不存在不平等,集一个= []b = []

例子

x= fmincon (有趣的,x0,一个,b,Aeq,说真的,,乌兰巴托)定义了一组设计变量的上下界限x,这样的解决方案总是范围x乌兰巴托。如果不存在平等,集Aeq = []说真的= []。如果x(我)下面是无界的,准备好了吗磅(i) =负无穷,如果x(我)上面是无界的,准备好了吗乌兰巴托(i) =正无穷

请注意

如果指定的输入范围不一致的问题,fmincon抛出一个错误。在这种情况下,输出xx0fval[]

为默认“内点”算法,fmincon集的组成部分x0违反的界限磅≤x≤乌兰巴托或等于绑定,绑定的内部区域。为“trust-region-reflective”算法,fmincon集违反组件绑定的内部区域。为其他算法,fmincon违反组件设置为最接近的束缚。组件,尊重界限并不改变。看到迭代可以违反约束

例子

x= fmincon (有趣的,x0,一个,b,Aeq,说真的,,乌兰巴托,nonlcon)对象非线性不等式的最小化c (x)或平等量表(x)中定义的nonlconfmincon优化,c (x)≤0量表(x) = 0。如果不存在边界,设置磅= []和/或乌兰巴托= []

例子

x= fmincon (有趣的,x0,一个,b,Aeq,说真的,,乌兰巴托,nonlcon,选项)最小化的优化选项中指定选项。使用optimoptions设置这些选项。如果有任何非线性不等式和等式约束,集nonlcon = []

例子

x= fmincon (问题)发现的最低标准问题描述的结构问题

例子

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

例子

(x,fval,exitflag,输出)= fmincon (___)此外,返回一个值exitflag描述的退出条件fmincon,一个结构输出的信息优化过程。

例子

(x,fval,exitflag,输出,λ,研究生,黑森)= fmincon (___)另外的回报:

  • λ——结构字段包含的拉格朗日乘数法的解决方案x

  • 研究生——梯度有趣的在解决方案x

  • 黑森——黑森有趣的在解决方案x。看到fmincon黑森

例子

全部折叠

的最小值。当有一个线性不等式约束的功能。

设置目标函数有趣的是。的函数。。最小化的功能是众所周知的困难。其最低目标值0点(1,- 1)。有关更多信息,请参见解决一个约束非线性问题,Solver-Based

有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;

找到最小值从点[1,2],限制 x ( 1 ) + 2 x ( 2 ) 1 。表达这种约束形式Ax < = b通过一个= [1,2]b = 1。注意,这个约束意味着解决方案不会在无约束的解决方案(1,1),因为在这一点上 x ( 1 ) + 2 x ( 2 ) = 3 > 1

x0 = [1, 2];一个= [1,2];b = 1;x = fmincon(乐趣,x0, A, b)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =1×20.5022 - 0.2489

找到。海涅的最小值函数当有线性不等式约束和线性等式约束。

设置目标函数有趣的是。的函数。

有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;

找到最小值从点(0.5,0),限制 x ( 1 ) + 2 x ( 2 ) 1 2 x ( 1 ) + x ( 2 ) = 1

  • 表达的线性不等式约束形式A * x < =通过一个= [1,2]b = 1

  • 表达的线性等式约束形式Aeq * x =说真的通过Aeq = (2, 1)说真的= 1

x0 = (0.5, 0);一个= [1,2];b = 1;Aeq = (2, 1);说真的= 1;x = fmincon(有趣,x0, A、b、Aeq beq)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =1×20.4149 - 0.1701

找到最小的目标函数的约束限制。

目标函数是一个简单的代数函数的两个变量。

有趣= @ (x) 1 + x (1) / (1 + x (2)) - 3 * x (1) * (2) + x (2) * (1 + x (1));

在该地区 x 有积极的价值观, x ( 1 ) 1 , x ( 2 ) 2

磅= (0,0);乌兰巴托= [1,2];

这个问题没有线性约束,所以设置这些参数[]

一个= [];b = [];Aeq = [];说真的= [];

做一个初始点中间的地区。

x0 =(磅+乌兰巴托)/ 2;

解决这个问题。

x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =1×21.0000 - 2.0000

不同初始点可能会导致一个不同的解决方案。

x0 = x0/5;x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =1×2106×0.4000 - 0.4000

确定哪个方案更好,明白了获得目标函数的值

找到一个函数的最小非线性约束

找到的地步。海涅的函数最小化一个圆,也受到一定约束。

有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;

看在该地区0美元le x (1) \ \ le 0.5美元,0.2美元le x (2) \ \ le 0.8美元

磅= [0,0.2];乌兰巴托= [0.5,0.8];

看上去也在圆心与半径的1/3 (1/3,1/3)。将下面的代码复制到一个文件在你的MATLAB®路径命名circlecon.m

% 2015年版权MathWorks公司。函数测查[c] = circlecon c (x) = (x (1) 1/3) ^ 2 + (x (2) 1/3) ^ 2 - (1/3) ^ 2;测查= [];

没有线性约束,所以设置这些参数[]

一个= [];b = [];Aeq = [];说真的= [];

选择一个初始点满足所有的约束。

x0 = (1/4, 1/4);

解决这个问题。

nonlcon = @circlecon;x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。x = 0.5000 - 0.2500

设置选项来查看迭代发生时和使用不同的算法。

观察fmincon解决方案过程中,设置显示选项“通路”。另外,试一试“sqp”算法,有时比默认更快或更准确“内点”算法。

选择= optimoptions (“fmincon”,“显示”,“通路”,“算法”,“sqp”);

找到。海涅的功能单元的最小磁盘,x $ | | | | ^ 2 \勒1美元。首先创建一个函数,它代表了非线性约束。保存这个文件命名unitdisk.m在你的MATLAB®路径。

函数测查[c] = unitdisk c (x) = x (1) ^ 2 + x (2) ^ 2 - 1;测查= [];

创建其余问题规范。然后运行fmincon

有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = @unitdisk;x0 = (0,0);x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)
Iter Func-count Fval可行性步长一阶最优步规范0 3 e + 00 1.000000 0.000 1.000 e + e + 00 00 12 0.000 2.000 e + e + 00 00 1 2.353 1.176 8.913011 e-01 0.000 e + 00 e-01 e-01 1.107 e + 01 2 22 8.047847 e-01 0.000 e + 00 8.235 e-02 1.900 e-01 1.330 e + 3 28 4.197517 e-01 0.000 e + 00 3.430 e-01 1.217 e-01 6.172 e + 00 4 31 e-01 2.733703 0.000 5.705 5.254 1.000 e + e + 00 00 e-02 e-01 5 34 e-01 2.397111 0.000 3.164 7.498 1.000 e + e + 00 00 e-02 e + 00 6 37 e-01 2.036002 0.000 3.106 5.960 1.000 e + e + 00 00 e-02 e + 00 7 40 1.164353 e-01 0.000 1.459 1.000 e + e + 00 00 e-01 1.059 e + 00 8 43 1.161753 e-01 0.000 1.754 1.000 e + e + 00 00 e-01 7.383 e + 00 9 46 5.901601 e-02 0.000 7.278 1.547 1.000 e + e + 00 00 e-02 e-01 10 49 4.533081 e-02 2.898 e 03 1.000 e + 00 2.225 4.567454 5.393 1.252 e-02 e-01 11 52 e-02 e-06 1.000 e + 00 1.492 e 03 1.679 e 03 12 55 4.567481 e-02 4.424 e-12 1.000 e + 00 2.095 e-06 1.501 e-05 13 58 4.567481 e-02 0.000 1.406 2.212 1.000 e + e + 00 00 e-12 e-05局部最小值。约束满足。fmincon停止因为当前步骤的大小小于一步尺寸公差的值和约束满足约束的值公差内。x = 0.7864 - 0.6177

包括评价目标函数的梯度更快或更可靠的计算。

包括梯度评价作为目标函数条件化输出文件。有关详细信息,请参见包括梯度和麻布。目标函数。函数,

$ $ f (x) = 100{\离开({{x_2} - x_1 ^ 2} \右)^ 2}+ & # xA; {(1 - {x_1}) ^ 2}, $ $

的梯度

$ $ \微分算符左f (x) = \[{\开始{数组}{* {20}{c}} & # xA;{- 400 \离开({{x_2} - x_1 ^ 2} \右){x_1} - 2 \离开({1 - {x_1}} \右)}\ \ & # xA; {200 \ ({{x_2} - x_1 ^ 2} \右)}& # xA;结束\{数组}}\右]。$ $

函数(f, g) = rosenbrockwithgrad (x)% f计算目标f = 100 * (x (2) - (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;如果nargout > 1%梯度要求g = (-400 * (x (2) - x (1) ^ 2) * x (1) 2 * (1 - x (1));200 * (x (2) - x (1) ^ 2)];结束

将该代码保存为一个文件命名rosenbrockwithgrad.m在你的MATLAB®路径。

创建选项使用目标函数梯度。

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

创建的其他投入的问题。然后调用fmincon

有趣= @rosenbrockwithgrad;x0 = [1, 2];一个= [];b = [];Aeq = [];说真的= [];磅= (2,2);乌兰巴托= (2,2);nonlcon = [];x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。x = 1.0000 - 1.0000

在解决相同的问题默认的选项使用问题的结构,而不是单独的参数。

创建选项和结构问题。看到问题所需的字段名和字段。

选择= optimoptions (“fmincon”,“显示”,“通路”,“算法”,“sqp”);问题。选项=选项;问题。解算器=“fmincon”;问题。目标= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;问题。x0=(0,0];

非线性约束函数unitdisk出现在这个例子。包括非线性约束函数问题

问题。nonlcon=@unitdisk;

解决这个问题。

x = fmincon(问题)
Iter Func-count Fval可行性步长一阶最优步规范0 3 e + 00 1.000000 0.000 1.000 e + e + 00 00 12 0.000 2.000 e + e + 00 00 1 2.353 1.176 8.913011 e-01 0.000 e + 00 e-01 e-01 1.107 e + 01 2 22 8.047847 e-01 0.000 e + 00 8.235 e-02 1.900 e-01 1.330 e + 3 28 4.197517 e-01 0.000 e + 00 3.430 e-01 1.217 e-01 6.172 e + 00 4 31 e-01 2.733703 0.000 5.705 5.254 1.000 e + e + 00 00 e-02 e-01 5 34 e-01 2.397111 0.000 3.164 7.498 1.000 e + e + 00 00 e-02 e + 00 6 37 e-01 2.036002 0.000 3.106 5.960 1.000 e + e + 00 00 e-02 e + 00 7 40 1.164353 e-01 0.000 1.459 1.000 e + e + 00 00 e-01 1.059 e + 00 8 43 1.161753 e-01 0.000 1.754 1.000 e + e + 00 00 e-01 7.383 e + 00 9 46 5.901601 e-02 0.000 7.278 1.547 1.000 e + e + 00 00 e-02 e-01 10 49 4.533081 e-02 2.898 e 03 1.000 e + 00 2.225 4.567454 5.393 1.252 e-02 e-01 11 52 e-02 e-06 1.000 e + 00 1.492 e 03 1.679 e 03 12 55 4.567481 e-02 4.424 e-12 1.000 e + 00 2.095 e-06 1.501 e-05 13 58 4.567481 e-02 0.000 1.406 2.212 1.000 e + e + 00 00 e-12 e-05局部最小值。约束满足。fmincon停止因为当前步骤的大小小于一步尺寸公差的值和约束满足约束的值公差内。
x =1×20.7864 - 0.6177

迭代显示和解决方案是一样的默认的选项

下面的代码创建unitdisk函数。

函数测查[c] = unitdisk c (x) = x (1) ^ 2 + x (2) ^ 2 - 1;测查= [];结束

调用fminconfval输出来获得目标函数的值的解决方案。

与绑定约束最小化示例显示了两个解决方案。金宝搏官方网站哪个更好?运行示例请求fval输出以及解决方案。

有趣= @ (x) 1 + x (1) / (1 + x (2)) - 3 * x (1)。* x (2) + (2) * (1 + x (1));磅= (0,0);乌兰巴托= [1,2];一个= [];b = [];Aeq = [];说真的= [];x0 =(磅+乌兰巴托)/ 2;[x, fval] = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =1×21.0000 - 2.0000
fval = -0.6667

运行问题使用不同的起点x0

x0 = x0/5;(x2, fval2) = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x2 =1×2106×0.4000 - 0.4000
fval2 = 1.0000

这个解决方案有一个目标函数的值fval2= 1,高于第一个值fval= -0.6667。第一个解决方案x局部最小目标函数值较低。

轻松地检查解决方案的质量,要求exitflag输出输出。

设置的问题最小化。磁盘上单位的功能,x $ | | | | ^ 2 \勒1美元。首先创建一个函数,它代表了非线性约束。保存这个文件命名unitdisk.m在你的MATLAB®路径。

函数测查[c] = unitdisk c (x) = x (1) ^ 2 + x (2) ^ 2 - 1;测查= [];

创建其余问题规范。

有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;nonlcon = @unitdisk;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];x0 = (0,0);

调用fmincon使用fval,exitflag,输出输出。

[x, fval exitflag、输出]= fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。x = 0.7864 - 0.6177 fval = 0.0457 exitflag = 1输出=结构体字段:迭代:24 funcCount: 84 constrviolation: 0 stepsize: 6.9162 e-06算法:“内点”firstorderopt: 2.4373 e-08 cgiterations: 4消息:“……“bestfeasible (1 x1结构):
  • exitflag价值1表明,该解决方案是一个局部最小值。

  • 输出结构报告几个统计信息解决方案的过程。特别是,它给出了迭代的数量output.iterations、功能评估output.funcCount,可行性output.constrviolation

fmincon选择返回几个输出,您可以使用分析报告的解决方案。

设置的问题最小化。单位磁盘上的功能。首先创建一个函数,它代表了非线性约束。保存这个文件命名unitdisk.m在你的MATLAB®路径。

函数测查[c] = unitdisk c (x) = x (1) ^ 2 + x (2) ^ 2 - 1;测查= [];

创建其余问题规范。

有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;nonlcon = @unitdisk;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];x0 = (0,0);

要求所有的fmincon输出。

[x, fval exitflag、输出λ,校友,黑森]= fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。x = 0.7864 - 0.6177 fval = 0.0457 exitflag = 1输出=结构体字段:迭代:24 funcCount: 84 constrviolation: 0 stepsize: 6.9162 e-06算法:“内点”firstorderopt: 2.4373 e-08 cgiterations: 4消息:“……“bestfeasible (1 x1结构):λ=结构体与f我elds: eqlin: [0x1 double] eqnonlin: [0x1 double] ineqlin: [0x1 double] lower: [2x1 double] upper: [2x1 double] ineqnonlin: 0.1215 grad = -0.1911 -0.1501 hessian = 497.2903 -314.5589 -314.5589 200.2392
  • lambda.ineqnonlin输出表明,非线性约束是活跃的解决方案,并给出了相关的拉格朗日乘数的值。

  • 研究生输出为目标函数的梯度值的解决方案x

  • 黑森输出中描述fmincon黑森

输入参数

全部折叠

函数最小化,指定为一个函数处理或函数名。有趣的是一个函数,它接受一个向量或数组x并返回一个真正的标量f的目标函数值x

fmincon通过x任何非线性目标函数和约束函数的形状x0论点。例如,如果x0是5-by-3数组,那么fmincon通过x有趣的作为一个5-by-3数组。然而,fmincon增加线性约束矩阵一个Aeqx转换后x的列向量x (:)

指定有趣的作为一个函数处理一个文件:

x = fmincon (@myfun, x0, A, b)

在哪里myfunMATLAB是一种®等功能

函数f = myfun f (x) =在x %计算函数值

您还可以指定有趣的作为一个匿名函数的函数处理:

x = fmincon (@ (x)规范(x) ^ 2, x0, A, b);

如果你能计算的梯度有趣的SpecifyObjectiveGradient选项设置为真正的设定的,

选择= optimoptions (“fmincon”,“SpecifyObjectiveGradient”,真正的)
然后有趣的梯度向量必须返回呢g (x)在第二个输出参数。

如果你也可以计算海赛矩阵HessianFcn选项设置为“目标”通过optimoptions算法选择是“trust-region-reflective”,有趣的必须返回黑森的值H (x)对称矩阵,在第三输出参数。有趣的能给一个稀疏的麻绳。看到海赛为fminunc信赖域或fmincon trust-region-reflective算法获取详细信息。

如果你也可以计算海赛矩阵和算法选项设置为“内点”,都有一个不同的方式通过黑森fmincon。有关更多信息,请参见海赛为fmincon内点算法。例如使用符号数学工具箱™计算梯度和黑森,明白了计算梯度,并使用符号数学工具箱™麻布

内点trust-region-reflective算法允许您提供一个黑森乘法函数。这个函数给出的结果Hessian-times-vector产品没有直接计算的麻绳。这可以节省内存。看到黑森乘法函数

例子:有趣= @ (x) sin (x (1)) * cos (x (2))

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

初始点,指定为一个真正的向量或真正的数组。解决使用元素的数量,大小,x0确定变量的数量和大小有趣的接受。

  • “内点”算法——如果HonorBounds选择是真正的(默认),fmincon重置x0组件或外部界限乌兰巴托值之间的严格界限。

  • “trust-region-reflective”算法,fmincon重置不可行x0组件是可行的范围或线性等式。

  • “sqp”,“sqp-legacy”,或“激活集”算法,fmincon重置x0组件的外部边界的值对应的边界。

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

数据类型:

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

一个编码线性不等式

A * x < =,

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

例如,考虑这些不平等:

x1+ 2x2≤10
3x1+ 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
3x1+ 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我< < = =元素个数(磅)

如果有更少的元素比x0,解决者发出警告。

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

数据类型:

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

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

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

x (i) < =乌兰巴托(我)1我< < = =元素个数(乌兰巴托)

如果乌兰巴托有更少的元素比x0,解决者发出警告。

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

数据类型:

非线性约束条件,指定为一个函数处理或函数名。nonlcon是一个函数,它接受一个向量或数组x并返回两个数组,c (x)量表(x)

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

    c (x) < = 0所有条目的c

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

    量表(x) = 0所有条目的量表信

例如,

x = fmincon (Aeq @myfun x0, A, b,说真的,磅,乌兰巴托,@mycon)

在哪里mycon是一个MATLAB函数如

功能测查[c] = mycon c (x) =…%计算非线性不等式测查x =…在x %计算非线性等式。
如果约束的梯度也可以计算SpecifyConstraintGradient选择是真正的设定的,
选择= optimoptions (‘fmincon’,‘SpecifyConstraintGradient’,真的)
然后nonlcon还必须返回,在第三和第四输出参数,GC的梯度,c (x),GCeq的梯度,量表(x)GCGCeq可以稀疏或密集。如果GCGCeq大,相对较少的非零项,节省运行时间和内存的内点代表他们是稀疏矩阵算法。有关更多信息,请参见非线性约束

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

优化选项,指定的输出optimoptions或结构等optimset的回报。

一些选项适用于所有算法,以及其他相关的特定算法。看到优化选择参考的详细信息。

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

所有的算法
算法

选择优化算法:

  • “内点”(默认)

  • “trust-region-reflective”

  • “sqp”

  • “sqp-legacy”(optimoptions唯一的)

  • “激活集”

选择算法的信息,请参阅选择算法

trust-region-reflective算法需要:

  • 目标函数梯度提供

  • SpecifyObjectiveGradient被设置为真正的

  • 绑定约束或线性等式约束,而不是两个

如果您选择了“trust-region-reflective”算法和这些条件不满足,fmincon抛出一个错误。

“激活集”,“sqp-legacy”,“sqp”算法并不是大规模的。看到大型和中型的算法

CheckGradients

比较用户提供衍生品(目标或约束的梯度)有限差分衍生品。的选择是(默认)或真正的

optimset,名字是DerivativeCheck和值“上”“关闭”。看到当前和遗留选项名称

ConstraintTolerance

公差约束违反,积极的标量。默认值是1 e-6。看到公差和停止条件

optimset,名字是TolCon。看到当前和遗留选项名称

诊断

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

DiffMaxChange

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

DiffMinChange

最低有限差分的变量变化梯度(积极的标量)。默认值是0

显示

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

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

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

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

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

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

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

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

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

有限的差异,用于估算梯度,要么“前进”(默认),或“中央”(中心)。“中央”需要两倍的功能评估但应该更准确。trust-region-reflective算法使用FiniteDifferenceType只有当CheckGradients被设置为真正的

fmincon时小心遵守限差分估计两种类型。例如,可能需要一个落后,而不是向前,避免在边界外的点评估。但是,对于内点算法,“中央”在评估如果差异可能违反界限HonorBounds选项设置为

optimset,名字是FinDiffType。看到当前和遗留选项名称

FunValCheck

检查目标函数值是否有效。默认设置,“关闭”,不执行一个检查。的“上”设置显示一个错误当目标函数返回一个值复杂的,,或

MaxFunctionEvaluations

最大允许函数值的运算次数,一个正整数。除了所有的默认值算法内点100 * numberOfVariables;为内点默认的算法3000年。看到公差和停止条件迭代和函数计算

optimset,名字是MaxFunEvals。看到当前和遗留选项名称

MaxIterations

最大允许的迭代次数,一个正整数。除了所有的默认值算法内点400年;为内点默认的算法1000年。看到公差和停止条件迭代和函数计算

optimset,名字是麦克斯特。看到当前和遗留选项名称

OptimalityTolerance

终止宽容的一阶最优性(积极的标量)。默认值是1 e-6。看到一阶最优性测量

optimset,名字是TolFun。看到当前和遗留选项名称

OutputFcn

指定一个或多个用户定义的函数,每个迭代的优化函数调用。通过一个函数处理或处理单元阵列的功能。默认是没有([])。看到输出函数和情节函数的语法

PlotFcn

情节在算法执行时进步的各种措施;从预定义的情节或编写自己的选择。通过一个内置的函数名,函数处理,或单元阵列的内置函数名或函数处理。自定义绘制函数,通过函数处理。默认是没有([]):

  • “optimplotx”情节当前点

  • “optimplotfunccount”情节的函数计算

  • “optimplotfval”情节的函数值

  • “optimplotfvalconstr”情节发现最好的可行的目标函数值作为一个阴谋。情节不可行点显示为红色和可行点蓝色,用宽容的可行性1 e-6

  • “optimplotconstrviolation”情节的最大约束违反

  • “optimplotstepsize”情节的步长

  • “optimplotfirstorderopt”情节一阶最优性措施

自定义函数使用相同的语法作为输出函数。看到输出函数优化工具箱™输出函数和情节函数的语法

optimset,名字是PlotFcns。看到当前和遗留选项名称

SpecifyConstraintGradient

梯度的非线性约束函数定义的用户。当设置为默认值,,fmincon估计梯度非线性约束的有限的差异。当设置为真正的,fmincon预计,约束函数有四个输出,所述nonlcon。的trust-region-reflective算法不接受非线性约束。

optimset,名字是GradConstr和值“上”“关闭”。看到当前和遗留选项名称

SpecifyObjectiveGradient

由用户定义的目标函数的梯度。看到的描述有趣的看到如何定义的梯度有趣的。默认的,,使fmincon估计使用有限差分梯度。设置为真正的fmincon使用一个用户定义的目标函数的梯度。使用“trust-region-reflective”梯度算法,必须提供,集SpecifyObjectiveGradient真正的

optimset,名字是GradObj和值“上”“关闭”。看到当前和遗留选项名称

StepTolerance

终止上公差x,一个积极的标量。除了所有的默认值算法“内点”1 e-6;为“内点”算法,默认1平台以及。看到公差和停止条件

optimset,名字是TolX。看到当前和遗留选项名称

TypicalX

典型的x值。元素的数量TypicalX等于元素的数量x0的起点。默认值是的(numberofvariables, 1)fmincon使用TypicalX为扩展有限差分梯度估计。

“trust-region-reflective”算法使用TypicalX只是为了CheckGradients选择。

UseParallel

真正的,fmincon估计并行梯度。禁用默认设置,trust-region-reflective需要一个梯度的目标UseParallel不适用。看到并行计算

Trust-Region-Reflective算法
FunctionTolerance

终止公差函数值,一个积极的标量。默认值是1 e-6。看到公差和停止条件

optimset,名字是TolFun。看到当前和遗留选项名称

HessianFcn

如果[](默认),fmincon接近黑森使用有限的差异,或使用一个黑森乘法函数(与选择HessianMultiplyFcn)。如果“目标”,fmincon使用一个用户定义的黑森(中定义有趣的)。看到海赛作为输入

optimset,名字是HessFcn。看到当前和遗留选项名称

HessianMultiplyFcn

黑森乘法函数,指定为一个函数处理。大规模的结构性问题,这个函数计算海赛矩阵产品H * Y没有真正形成H。的函数形式

W = hmfun (Hinfo, Y)

在哪里Hinfo包含一个矩阵用于计算H * Y

第一个参数是一样的第三个参数返回的目标函数有趣的例如,

[f, g, Hinfo] =乐趣(x)

Y是一个矩阵的行数一样有尺寸问题。矩阵W = H * Y,虽然H不是显式地形成的。fmincon使用Hinfo计算预调节器。信息如何提供任何额外的参数的值hmfun需要,请参阅传递额外的参数

请注意

使用HessianMultiplyFcn选项,HessianFcn必须设置为[],SubproblemAlgorithm必须“重心”(默认)。

看到黑森乘法函数。看到最小化茂密的结构化的麻绳,线性等式了一个例子。

optimset,名字是HessMult。看到当前和遗留选项名称

HessPattern

稀疏的黑森有限差分模式。集HessPattern (i, j) = 1当你可以∂2有趣的/∂x(我)x (j)≠0。否则,设置HessPattern (i, j) = 0

使用HessPattern时不方便计算海赛矩阵H有趣的,但你可以决定(验货)组件的梯度有趣的取决于x (j)fmincon可以近似H通过稀疏有限差分(梯度)如果你提供稀疏结构H的价值HessPattern。换句话说,提供非零的位置。

当结构是未知的,不确定HessPattern。就好像默认行为HessPattern是一个稠密矩阵的。然后fmincon在每个迭代计算完整的有限差分近似。这个计算可以为大问题非常昂贵,所以它通常是更好的稀疏结构来确定。

MaxPCGIter

最大数量的预处理共轭梯度迭代(PCG),一个积极的标量。默认值是马克斯(1楼(numberOfVariables / 2))bound-constrained问题,numberOfVariables约束问题。有关更多信息,请参见预处理共轭梯度法

PrecondBandWidth

上的带宽预调节器PCG,一个非负整数。默认情况下,对角预处理(0)上带宽。用于一些问题,增加带宽减少了PCG迭代的数量。设置PrecondBandWidth使用直接分解(柯列斯基)而非共轭梯度(CG)。直接分解比CG计算更贵,但质量更好一步生成解决方案。

SubproblemAlgorithm

确定迭代步骤是如何计算的。默认的,“重心”,但不准确的步骤需要一个速度更快“分解”。看到fmincon信赖域反射算法

TolPCG

在PCG迭代终止宽容,积极的标量。默认值是0.1

有效集算法
FunctionTolerance

终止公差函数值,一个积极的标量。默认值是1 e-6。看到公差和停止条件

optimset,名字是TolFun。看到当前和遗留选项名称

MaxSQPIter

最大数量的SQP迭代允许,一个正整数。默认值是10 *马克斯(numberOfVariables numberOfInequalities + numberOfBounds)

RelLineSrchBnd

相对绑定(一个真正的负的标量值)的搜索步长。的总位移x满足x()|≤relLineSrchBnd·马克斯(|x()| |typicalx()|)。此选项提供了控制位移的大小x在解算器需要的步骤被认为是太大。默认是没有界限([])。

RelLineSrchBndDuration

绑定中指定的迭代次数RelLineSrchBnd应该积极(默认值是什么1)。

TolConSQP

在内部迭代终止宽容SQP约束违反,积极的标量。默认值是1 e-6

内点算法
BarrierParamUpdate

指定如何fmincon参数(见更新障碍fmincon内点算法)。的选项是:

  • “单调”(默认)

  • 预估的

这个选项会影响速度和收敛的解算器,但效果并不容易预测。

EnableFeasibilityMode

真正的,fmincon使用不同的算法实现的可行性。这个设置可以帮助fmincon在某些情况下达到一个可行的解决方案。默认值是

可行性模式通常表现更好SubproblemAlgorithm“重心”。有关详细信息,请参见可行性模式。例如,看到的获得解决方案使用的可行性模式

HessianApproximation

指定如何fmincon计算黑森(见海赛作为输入)。的选择是:

  • “蓄热”(默认)

  • 有限差分的

  • “lbfgs”

  • {“lbfgs”,正整数}

请注意

使用HessianApproximation,两个HessianFcnHessianMultiplyFcn必须空条目([])。

optimset,名字是黑森和值用户提供的,“蓄热”,“lbfgs”,“fin-diff-grads”,“上”,或“关闭”。看到当前和遗留选项名称

HessianFcn

如果[](默认),fmincon使用指定的方法接近黑森HessianApproximation,或者使用一个提供HessianMultiplyFcn。如果一个函数处理,fmincon使用HessianFcn计算的麻绳。看到海赛作为输入

optimset,名字是HessFcn。看到当前和遗留选项名称

HessianMultiplyFcn

用户提供的函数,给出了Hessian-times-vector产品(见黑森乘法函数)。通过一个函数处理。

请注意

使用HessianMultiplyFcn选项,HessianFcn必须设置为[],SubproblemAlgorithm必须“重心”

optimset,名字是HessMult。看到当前和遗留选项名称

HonorBounds

默认的真正的确保在每个迭代绑定约束得到满足。禁用通过设置

optimset,名字是AlwaysHonorConstraints和值“界限”“没有”。看到当前和遗留选项名称

InitBarrierParam

最初的障碍价值,积极的标量。有时它可能有助于尝试一个高于默认值0.1,尤其是在目标或约束函数是大。

InitTrustRegionRadius

最初的信赖域半径,一个积极的标量。比例严重问题这可能帮助选择一个值小于默认 n ,在那里n是变量的数量。

MaxProjCGIter

公差(停止准则)的数量预计共轭梯度迭代;这是一个内部迭代,而不是算法的迭代次数。这个正整数的默认值2 * (numberOfVariables - numberOfEqualities)

ObjectiveLimit

宽容(停止准则)是一个标量。如果目标函数值ObjectiveLimit和迭代是可行的,迭代停止,因为问题可能是无界的。默认值是1 e20

ScaleProblem

真正的使算法规范化所有约束条件和目标函数。通过设置默认禁用

optimset的值是“obj-and-constr”“没有”。看到当前和遗留选项名称

SubproblemAlgorithm

确定迭代步骤是如何计算的。默认的,“分解”,通常是速度比“重心”不过,(共轭梯度)“重心”密集的麻布可能更快的大问题。看到fmincon内点算法

TolProjCG

一个相对宽容预计共轭梯度算法(停止准则);这是一种内在的迭代,迭代算法。这种积极的标量的违约0.01

TolProjCGAbs

绝对的宽容(停止准则)预计共轭梯度算法;这是一种内在的迭代,迭代算法。这种积极的标量的违约1平台以及

SQP和SQP遗产算法
ObjectiveLimit

宽容(停止准则)是一个标量。如果目标函数值ObjectiveLimit和迭代是可行的,迭代停止,因为问题可能是无界的。默认值是1 e20

ScaleProblem

真正的使算法规范化所有约束条件和目标函数。通过设置默认禁用

optimset的值是“obj-and-constr”“没有”。看到当前和遗留选项名称

例子:选择= optimoptions (‘fmincon’,‘SpecifyObjectiveGradient’,真的,SpecifyConstraintGradient,真的)

问题的结构,指定为一个结构有以下字段:

字段名 条目

客观的

目标函数

x0

初始点x

Aineq

矩阵线性不等式约束

bineq

向量的线性不等式约束

Aeq

矩阵线性等式约束

说真的

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

nonlcon

非线性约束函数

解算器

“fmincon”

选项

选择创建optimoptions

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

数据类型:结构体

输出参数

全部折叠

解决方案,作为真正的向量或返回数组。的大小x是一样的尺寸吗x0。通常情况下,x是当地的解决问题的办法exitflag是正的。信息的质量解决方案,明白了当解决成功

目标函数值的解决方案,作为一个实数返回。一般来说,fval=有趣的(x)

原因fmincon停止,返回一个整数。

所有的算法:

1

一阶最优性测量不到options.OptimalityTolerance,和最大约束违反还不到options.ConstraintTolerance

0

迭代次数超过options.MaxIterations超过或数量的功能评估options.MaxFunctionEvaluations

1

停在一个输出函数或函数。

2

没有找到可行点。

所有算法除了有效集:

2

的变化x还不到options.StepTolerance和最大约束违反还不到options.ConstraintTolerance

trust-region-reflective算法只:

3

改变目标函数值小于options.FunctionTolerance和最大约束违反还不到options.ConstraintTolerance

有效集算法只:

4

大小的搜索方向是小于2 *options.StepTolerance和最大约束违反还不到options.ConstraintTolerance

5

级搜索方向的方向导数是小于2 *options.OptimalityTolerance和最大约束违反还不到options.ConstraintTolerance

内点,sqp-legacy,sqp算法:

3

在当前迭代目标函数下面去了options.ObjectiveLimit和最大约束违反还不到options.ConstraintTolerance

优化过程的信息,作为结构返回字段:

迭代

采取的迭代次数

funcCount

数量的功能评估

lssteplength

行搜索步骤相对于搜索方向(大小有效集sqp算法只)

constrviolation

最大的约束功能

stepsize

最后位移的长度x(不是有效集算法)

算法

优化算法

cgiterations

PCG迭代(总数trust-region-reflective内点算法)

firstorderopt

的一阶最优性

bestfeasible

最好的(最低目标函数)可行点。与这些字段的结构:

  • x

  • fval

  • firstorderopt

  • constrviolation

如果没有找到可行点,bestfeasible字段是空的。为了这个目的,一个点是可行的,当约束函数的最大不超过options.ConstraintTolerance

bestfeasible点可以从返回的不同解决方案x因为各种各样的原因。例如,看到的获得最佳可行点

消息

退出消息

拉格朗日乘数法在解决方案,作为结构返回字段:

较低的

下界对应

上界对应乌兰巴托

ineqlin

线性不等式对应一个b

eqlin

线性等式对应Aeq说真的

ineqnonlin

非线性不等式对应cnonlcon

eqnonlin

非线性平等对应量表信nonlcon

梯度的解决方案,作为一个真正的返回向量。研究生给的梯度有趣的在点x (:)

近似的麻绳,作为一个真正的返回矩阵。对的意思黑森,请参阅黑森输出

限制

  • fmincon是基于一个梯度方法,旨在研究问题的目标和约束函数都是连续和连续一阶导数。

  • “trust-region-reflective”算法,必须提供的梯度有趣的并设置“SpecifyObjectiveGradient”选项真正的

  • “trust-region-reflective”算法不允许等于上界和下界。例如,如果磅(2)= =乌兰巴托(2),fmincon让这个错误:

    平等的上界和下界不允许trust-region-reflective算法。使用行内点或SQP算法。
  • 通过黑森有两种不同的语法,并为通过有两种不同的语法HessianMultiplyFcn函数;一个用于trust-region-reflective,另一个用于内点。看到包括麻布

    • trust-region-reflective的黑森拉格朗日是一样的黑森的目标函数。你通过黑森的第三目标函数的输出。

    • 内点的黑森拉格朗日包括拉格朗日乘数法和非线性约束函数的麻布。你通过黑森作为一个单独的函数,同时考虑当前的点x和拉格朗日乘子的结构λ

  • 当问题是不可行的,fmincon试图最小化最大约束值。

更多关于

全部折叠

海赛作为输入

fmincon使用麻绳作为一个可选的输入。这个海赛矩阵二阶导数的拉格朗日(见方程1),即

x x 2 l ( x , λ ) = 2 f ( x ) + λ 2 c ( x ) + λ 2 c e ( x ) (1)

对如何提供一个黑森的细节trust-region-reflective内点算法,看到包括麻布

有效集sqp算法不接受一个输入的麻绳。他们计算拟牛顿近似的黑森拉格朗日。

内点算法有几个选择“HessianApproximation”选择;看到为内点fmincon选择输入黑森近似:

  • “蓄热”- - - - - -fmincon密集的拟牛顿近似计算的麻绳。这是默认黑森近似。

  • “lbfgs”- - - - - -fmincon计算黑森内存有限,大规模的拟牛顿近似。使用默认的内存、10次迭代。

  • {“lbfgs”,正整数}- - - - - -fmincon计算黑森内存有限,大规模的拟牛顿近似。正整数指定有多少过去迭代应该记住。

  • 有限差分的- - - - - -fmincon有限差分计算Hessian-times-vector产品的梯度(s)。你必须供应目标函数的梯度,并且梯度的非线性约束(如果存在的话)。设置“SpecifyObjectiveGradient”选项真正的,如果适用的话“SpecifyConstraintGradient”选项真正的。你必须设置“SubproblemAlgorithm”“重心”

黑森乘法函数

内点trust-region-reflective算法允许您提供一个黑森乘法函数。这个函数给出的结果Hessian-times-vector产品,没有直接计算的麻绳。这可以节省内存。有关详细信息,请参见黑森乘法函数

算法

全部折叠

选择算法

帮助选择算法,看到fmincon算法。设置算法,使用optimoptions创建选项,并使用“算法”名称-值对。

本节的其余部分简要总结或信息的指针算法。

内点优化

这个算法中描述fmincon内点算法。有更广泛的描述[1],[41],[9]

SQP和SQP-Legacy优化

fmincon“sqp”“sqp-legacy”算法类似“激活集”算法中描述激活集优化fmincon SQP算法描述的主要差异。总之,这些差异是:

激活集优化

fmincon使用一个序列二次规划(SQP)方法。在这种方法中,函数解决了在每一次迭代时二次规划(QP)子问题。fmincon更新估计黑森的拉格朗日函数在每个迭代中使用蓄热(见公式fminunc和引用[7][8])。

fmincon执行一条线搜索使用价值函数提出的类似[6],[7],[8]。QP子问题已经解决了使用一个活跃的组策略中所描述的类似[5]fmincon有效集算法详细描述了该算法。

另请参阅SQP实现更多细节的算法。

Trust-Region-Reflective优化

“trust-region-reflective”子空间算法是一种信赖域方法和基于interior-reflective牛顿方法中描述[3][4]。每个迭代都包括近似解大型线性系统使用条件共轭梯度法(PCG)。看到信赖域和预处理共轭梯度法的描述fmincon信赖域反射算法

选择功能

应用程序

优化住编辑任务提供了一个可视化界面fmincon

引用

[1]伯德,r . H。,J. C. Gilbert, and J. Nocedal. “A Trust Region Method Based on Interior Point Techniques for Nonlinear Programming.”数学规划,第89卷,1号,2000年,页149 - 185。

[2]伯德,r . H。,米ary E. Hribar, and Jorge Nocedal. “An Interior Point Algorithm for Large-Scale Nonlinear Programming.”暹罗杂志上优化,9卷,第4期,1999年,页877 - 900。

[3]科尔曼,t·f·李和y。“内部,信赖域方法对非线性最小化范围。”暹罗杂志上优化》第六卷,1996年,页418 - 445。

[4]科尔曼,t·f·李和y。“大规模非线性最小化的反光牛顿方法的收敛范围。”数学规划2号,卷。67年,1994年,页189 - 224。

吉尔[5],p E。,W. Murray, and M. H. Wright.实用的优化、伦敦、学术出版社,1981年。

[6]汉,s p .“一个非线性规划的全局收敛的方法。”优化理论与应用》杂志上22卷,1977年,页297。

[7]鲍威尔,m . j . d .“非线性约束优化计算的快速算法。”数值分析艾德。g·a·沃森数学课堂笔记斯普林格出版社,630卷,1978。

[8]鲍威尔,m . j . d .“变量度量方法的收敛非线性约束优化计算。”非线性规划3(o . l . Mangasarian r·r·迈耶和s·m·罗宾逊,eds),学术出版社,1978年。

[9]华尔兹,r。,J. L. Morales, J. Nocedal, and D. Orban. “An interior algorithm for nonlinear optimization that combines line search and trust region steps.”数学规划,第107卷,3号,2006年,页391 - 408。

扩展功能

之前介绍过的R2006a