主要内容

解决

解决优化问题或方程问题

描述

使用解决求最优化问题或方程问题的解。

提示

有关完整的工作流程,请参见具体问题具体分析优化工作流程基于问题的解方程工作流

例子

索尔=解决(概率解决优化问题或方程问题概率

例子

索尔=解决(概率x0解决了概率从一个点或一组值开始x0

例子

索尔=解决(概率x0女士解决了概率使用女士多个开始解决。使用此语法可以搜索比不使用时获得的更好的解决方案女士论点。

例子

索尔=解决(___名称,值除前面语法中的输入参数外,还使用一个或多个名值对参数修改解决方案过程。

索尔fval) =解决(___还使用前面语法中的任何输入参数返回解处的目标函数值。

例子

索尔fvalexitflag输出λ) =解决(___还返回一个描述退出条件的退出标志输出结构,包含关于求解过程的附加信息,以及,对于非整数优化问题,拉格朗日乘子结构。

例子

全部折叠

解决一个由优化问题定义的线性规划问题。

x = optimvar (“x”);y = optimvar (“y”);概率= optimproblem;概率。目标= -x - y/3;prob.Constraints。con年代1=x+ y <= 2; prob.Constraints.cons2 = x + y/4 <= 1; prob.Constraints.cons3 = x - y <= 2; prob.Constraints.cons4 = x/4 + y >= -1; prob.Constraints.cons5 = x + y >= 1; prob.Constraints.cons6 = -x + y <= 2; sol = solve(prob)
使用linprog解决问题。找到最优解。
索尔=结构体字段:X: 0.6667 y: 1.3333

求最小值山峰函数,该函数包含在MATLAB®中 x 2 + y 2 4 .为此,创建优化变量x而且y

x = optimvar (“x”);y = optimvar (“y”);

创建一个优化问题有山峰作为目标函数。

概率= optimproblem (“客观”山峰(x, y));

将约束作为一个不等式包含在优化变量中。

概率。约束条件= x²+ y²<= 4;

设置初始点x1,y到-1,解这个问题。

x0。x=1;x0。y=-1;索尔=解决(x0概率)
使用fmincon解决问题。找到了满足约束条件的局部极小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。
索尔=结构体字段:X: 0.2283 y: -1.6255

不支持的功能要求fcn2optimexpr

如果目标函数或非线性约束函数不完全由初等函数组成,则必须使用fcn2optimexpr.看到将非线性函数转化为优化表达式而且优化变量和表达式的支持操作

要转换当前的示例:

convpeaks = fcn2optimexpr (@peaks, x, y);概率。目标= convpeaks;x0 sol2 =解决(问题)
使用fmincon解决问题。找到了满足约束条件的局部极小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。
sol2 =结构体字段:X: 0.2283 y: -1.6255

The MathWorks, Inc.版权所有

比较有无初始可行点时求解整数规划问题的步骤数。该问题有8个整数变量和4个线性等式约束,且所有变量都被限制为正。

概率= optimproblem;x = optimvar (“x”8 1下界的0,“类型”“整数”);

创建四个线性等式约束,并将它们包含在问题中。

Aeq = [22 13 26 33 21 3 14 26 39 16 22 28 26 30 23 24 18 14 29 27 30 38 26 26 41 26 28 36 18 38 16 26];Beq = [7872 10466 11322 12058];cons = Aeq*x == beq;prob.Constraints.cons =缺点;

创建一个目标函数,并将其包含在问题中。

F = [2 10 13 17 7 5 7 3];概率。目标= f * x;

在不使用初始点的情况下解决问题,并检查显示器以查看分支和定界节点的数量。

(x1, fval1, exitflag1 output1] =解决(问题);
使用intlinprog解决问题。LP:最优目标值为1554.047531。切割生成:应用8强CG切割。下界为1591.000000。分支与定界:节点总数int整数相对探测时间(s)解决方法缺口(%)10000 0.74 0 - - 18025 1.12 1 2.906000e+03 4.509804e+01 21857 1.38 2 2.0073000e +03 2.270974e+01 23544 1.48 3 1.854000e+03 1.180593e+01 24097 1.52 3 1.854000e+03 1.617251e+00 24293 1.53 3 1.854000e+03 0.000000e+00找到最优解。Intlinprog停止是因为目标值在最优值、选项的差距容忍范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。

为了便于比较,用一个初始可行点求解。

x0。x=[8 62 23 103 53 84 46 34]'; [x2,fval2,exitflag2,output2] = solve(prob,x0);
使用intlinprog解决问题。LP:最优目标值为1554.047531。切割生成:应用8强CG切割。下界为1591.000000。相对差距为59.20%。分支与定界:节点总数int整数相对探测时间(s)解决方法缺口(%)3627 0.32 2 2.154000e+03 2.593968e+01 5844 0.45 3 1.854000e+03 1.180593e+01 6204 0.48 3 1.854000e+03 1.455526e+00 6400 0.49 3 1.854000e+03 0.000000e+00找到最优解。Intlinprog停止是因为目标值在最优值、选项的差距容忍范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。
流('没有起始点,求解需要%d步。\n有一个初始点,求解需要%d个步骤。、output1.numnodes output2.numnodes)
在没有起始点的情况下,求解需要24293步。在初始点,解决需要6400步。

给出一个初始点并不总是能改善问题。对于这个问题,使用初始点可以节省时间和计算步骤。然而,对于某些问题,初始点可能会引起问题解决采取更多的步骤。

对于某些求解器,您可以将目标和约束函数值(如果有的话)传递给解决x0论点。这可以节省求解程序的时间。传递一个向量OptimizationValues对象。创建这个向量optimvalues函数。

可使用目标函数值的求解器为:

  • 遗传算法

  • gamultiobj

  • paretosearch

  • surrogateopt

可以使用非线性约束函数值的求解器有:

  • paretosearch

  • surrogateopt

例如,最小化山峰函数使用surrogateopt,从初始点网格中的值开始。创建一个从-10到10的网格x变量,5/25/2y间距为1/2的变量。在初始点处计算目标函数值。

x = optimvar (“x”下界= -10,UpperBound = 10);y = optimvar (“y”下界= 5/2 UpperBound = 5/2);概率= optimproblem (“客观”山峰(x, y));xval = 10:10;yval = (5) / 2;[x0x, x0y] = meshgrid (xval yval);peaksvals =山峰(x0x x0y);

中传递值x0参数使用optimvalues.这样可以节省时间解决,因为解决不需要计算值。将值作为行向量传递。

x0 = optimvalues(概率,“x”x0x(:)”,“y”x0y(:)”,...“客观”, peaksvals(:)”);

surrogateopt用初始值。

[溶胶,fval eflag、输出]=解决(概率,x0,解算器=“surrogateopt”
使用surrogateopt解决问题。

{

surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数求值限制。
索尔=结构体字段:X: 0.2283 y: -1.6256
fval = -6.5511
eflag = SolverLimitExceeded
输出=结构体字段:Elapsedtime: 46.1074 funccount: 200 constrconflict: 0 ineq: [1x1 struct] rngstate: [1x1 struct] message: 'surrogateopt停止,因为它超过了由…“解决者:“surrogateopt”

的局部极小值山峰函数在值域上 - 5 x y 5 从这一点开始[1,2]

x = optimvar (“x”下界= 5,UpperBound = 5);y = optimvar (“y”下界= 5,UpperBound = 5);x0。x=-1;x0。y=2;概率= optimproblem(客观=山峰(x, y));选择= optimoptions (“fmincon”显示=“没有”);[溶胶,fval] =解决(概率,x0,选项=选择)
索尔=结构体字段:X: -3.3867 y: 3.6341
fval = 1.1224 e-07

尝试找到一个更好的解决方案GlobalSearch解算器。这个解算器运行fmincon多次,这可能会产生更好的解决方案。

女士= GlobalSearch;[sol2, fval2] =解决(概率,x0, ms)
使用全球搜索解决问题。GlobalSearch停止了,因为它分析了所有的试验点。所有15次本地求解器运行都汇聚了一个正的本地求解器出口标志。
sol2 =结构体字段:X: 0.2283 y: -1.6255
fval2 = -6.5511

GlobalSearch找到一个具有较好(较低)目标函数值的解。退出消息说明了这一点fmincon,本地求解器运行了15次。返回的解的目标函数值约为-6.5511,低于第一个解的值1.1224e-07。

解决这个问题

最小值 x - 3. x 1 - 2 x 2 - x 3. 年代 u b j e c t t o x 3. b n 一个 r y x 1 x 2 0 x 1 + x 2 + x 3. 7 4 x 1 + 2 x 2 + x 3. 1 2

不显示迭代显示。

x = optimvar (“x”、2、1,下界的, 0);x3 = optimvar (“x3”“类型”“整数”下界的0,“UpperBound”1);概率= optimproblem;概率。客观= -3*x(1) - 2*x(2) - x3;prob.Constraints。con年代1=x(1) + x(2) + x3 <= 7; prob.Constraints.cons2 = 4*x(1) + 2*x(2) + x3 == 12; options = optimoptions(“intlinprog”“显示”“关闭”);索尔=解决(概率,“选项”选项)
索尔=结构体字段:X: [2x1 double] x3: 1

检查解决方案。

sol.x
ans =2×10 5.5000
sol.x3
ans = 1

解决使用intlinprog作为线性规划问题的求解器。

x = optimvar (“x”);y = optimvar (“y”);概率= optimproblem;概率。目标= -x - y/3;prob.Constraints。con年代1=x+ y <= 2; prob.Constraints.cons2 = x + y/4 <= 1; prob.Constraints.cons3 = x - y <= 2; prob.Constraints.cons4 = x/4 + y >= -1; prob.Constraints.cons5 = x + y >= 1; prob.Constraints.cons6 = -x + y <= 2; sol = solve(prob,“规划求解”“intlinprog”
使用intlinprog解决问题。LP:最优目标值为-1.111111。找到最优解。没有指定整型变量。Intlinprog解决了线性问题。
索尔=结构体字段:X: 0.6667 y: 1.3333

求解中描述的混合整数线性规划问题用非默认选项解决整数规划问题并检查所有输出数据。

x = optimvar (“x”、2、1,下界的, 0);x3 = optimvar (“x3”“类型”“整数”下界的0,“UpperBound”1);概率= optimproblem;概率。客观= -3*x(1) - 2*x(2) - x3;prob.Constraints。con年代1=x(1) + x(2) + x3 <= 7; prob.Constraints.cons2 = 4*x(1) + 2*x(2) + x3 == 12; [sol,fval,exitflag,output] = solve(prob)
使用intlinprog解决问题。LP:最佳目标值为-12.000000。找到最优解。Intlinprog在根节点处停止,因为目标值在最佳值(选项)的间隙容忍范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。
索尔=结构体字段:X: [2x1 double] x3: 1
fval = -12
exitflag = OptimalSolution
输出=结构体字段:relativegap: 0 absolutegap: 0 numfeaspoints: 1 numnodes: 0 constrbreach: 0 message:“找到最佳解决方案....。“解决者:“intlinprog”

对于一个没有任何整数约束的问题,你也可以得到一个非空的拉格朗日乘子结构作为第五个输出。

创建并解决一个使用命名索引变量的优化问题。问题是如何在加权流量受到限制的情况下,使各机场的水果利润加权流量最大化。

rng (0)%的再现性p = optimproblem (“ObjectiveSense”“最大化”);流= optimvar (“流”...“苹果”“橘子”“香蕉”“浆果”}, {“纽约”“bo”“宽松”},...下界的0,“类型”“整数”);p.Objective =总和(总和(兰德(4,3)。*流));p.Constraints.NYC =兰德(1、4)*流(:,“纽约”) < = 10;p.Constraints.BOS =兰德(1、4)*流(:,“bo”) < = 12;p.Constraints.LAX =兰德(1、4)*流(:,“宽松”) < = 35;索尔=解决(p);
使用intlinprog解决问题。LP:最佳目标值为-1027.472366。启发式:用ZI轮找到1个解。上界为-1027.233133。相对差距为0.00%。找到最优解。Intlinprog在根节点处停止,因为目标值在最佳值(选项)的间隙容忍范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。

找出橙子和浆果流向纽约和洛杉矶的最佳流量。

[idxFruit,idxAirports] = findindex(flow, {)“橘子”“浆果”}, {“纽约”“宽松”})
idxFruit =1×22 4
idxAirports =1×21 3
= sol.flow(idxFruit, idxAirports)
orangeBerries =2×20 980.0000 70.0000 0

这个显示意味着没有橘子会纽约70个浆果纽约980个橙子宽松的浆果也不会宽松的

列出以下最优流程:

果机场

----- --------

浆果纽约

苹果BOS

橙子松懈

Idx = findindex(流,{“浆果”“苹果”“橘子”}, {“纽约”“bo”“宽松”})
idx =1×34 5 10
optimalFlow = sol.flow (idx)
optimalFlow =1×370.0000 28.0000 980.0000

这个显示意味着70个浆果将纽约28个苹果BOS980个橙子宽松的

求解非线性方程组

经验值 - 经验值 - x 1 + x 2 x 2 1 + x 1 2 x 1 因为 x 2 + x 2 x 1 1 2

使用基于问题的方法,首先定义x作为一个双元素优化变量。

x = optimvar (“x”2);

创建第一个方程作为优化等式表达式。

eq1 = exp (exp (- x (x (1) + (2)))) = = x (2) * (1 + x (1) ^ 2);

类似地,创建第二个方程作为优化等式表达式。

Eq2 = x(1)*cos(x(2)) + x(2)*sin(x(1)) == 1/2;

创建一个方程问题,把方程放在问题中。

概率= eqnproblem;prob.Equations。eq1 = eq1;prob.Equations。eq2 = eq2;

回顾这个问题。

显示(概率)
EquationProblem:解:x eq1: exp ((exp ((- x (x (1) + (2 )))))) == ( x (2) * (1 + x (1) ^ 2)) eq2: ((x(1)。* cos (x (2))) + (x(2)。* sin (x (1)))) = = 0.5

从这个点开始解决问题(0,0).对于基于问题的方法,将初始点指定为结构,将变量名指定为结构的字段。对于这个问题,只有一个变量,x

x0。x=[00]; [sol,fval,exitflag] = solve(prob,x0)
用fsolve解决问题。方程解决。Fsolve完成了,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题看起来是规则的。
索尔=结构体字段:x (2 x1双):
fval =结构体字段:eq2: -2.4070e-07 eq2: -3.8255e-08
exitflag = EquationSolved

查看解点。

disp (sol.x)
0.3532 - 0.6061

不支持的功能要求fcn2optimexpr

如果你的方程函数不是由初等函数组成的,你必须用fcn2optimexpr.对于目前的例子:

ls1 = fcn2optimexpr (@ (x) exp (exp (- x (x (1) + (2)))), x);Eq1 = ls1 == x(2)*(1 + x(1)²);ls2 = fcn2optimexpr (@ (x) x (1) * cos (x (2)) + x (2) * sin (x (1)), x);Eq2 = ls2 == 1/2;

看到优化变量和表达式的支持操作而且将非线性函数转化为优化表达式

输入参数

全部折叠

优化问题或方程问题,指定为OptimizationProblem对象或一个EquationProblem对象。创建一个优化问题,使用optimproblem;用。创建一个方程问题eqnproblem

警告

基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。如果函数计算具有复杂值,即使是作为中间值,最终结果也可能是不正确的。

例子:概率= optimproblem;概率。目标= obj;prob.Constraints。cons1 = cons1;

例子:概率= eqnproblem;概率。公式=方程式;

初始点,指定为字段名等于中的变量名的结构概率

对于一些全局优化工具箱解决,x0可以是的向量吗OptimizationValues表示多个初始点的对象。创建点使用optimvalues函数。这些解决方案是:

  • 遗传算法(全局优化工具箱)gamultiobj(全局优化工具箱)paretosearch(全局优化工具箱)而且particleswarm(全局优化工具箱).这些求解器接受多个起始点作为初始总体的成员。

  • MultiStart(全局优化工具箱).此求解器接受本地求解器的多个初始点,例如fmincon

  • surrogateopt(全局优化工具箱).该求解器接受多个初始点,以帮助创建初始代理。

下面是使用x0使用命名索引变量,请参见用命名索引变量创建优化的初始点

例子:如果概率有变量命名x而且yx0。x=[3.,2,17]; x0.y = [pi/3,2*pi/3]

数据类型:结构体

多个启动求解器,指定为MultiStart(全局优化工具箱)对象或一个GlobalSearch(全局优化工具箱)对象。创建女士使用MultiStartGlobalSearch命令。

目前,GlobalSearch只支持fmincon当地的解决者,MultiStart只支持fminconfminunc,lsqnonlin当地的解决者。

例子:女士= MultiStart;

例子:= GlobalSearch女士(FunctionTolerance = 1的军医);

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:解决(问题提出,“选项”,选择)

的最小起始点数MultiStart(全局优化工具箱),指定为正整数。这个参数只适用于调用时解决使用女士论点。解决中的所有值x0开始点。如果MinNumStartPoints中的值的个数大于x0,然后解决在问题边界内随机均匀地生成更多的起始点。如果一个组件是无界的,解决的默认人工边界生成点MultiStart

例子:解决(问题,x0,女士,MinNumStartPoints = 50)

数据类型:

所创建的对象指定的优化选项optimoptions或者一个选项结构,例如created byoptimset

在内部,解决函数调用相关的求解器“规划求解”参数的参考。确保选项与求解器兼容。例如,intlinprog不允许选项是结构,并且lsqnonneg不允许选项作为对象。

有关选项设置的建议,以改进intlinprog溶液或溶液的速度,参见整型线性规划调优.为linprog,默认的对偶单纯形的算法通常是内存高效和快速的。偶尔,linprog时,可以更快地解决大问题算法选择是“内点”.有关改进非线性问题解决方案的选项设置的建议,请参见常用选项:调优和故障排除而且改善结果

例子:选择= optimoptions(“intlinprog”,“显示”,“没有一个”)

优化求解器,指定为列出的求解器的名称。对于优化问题,该表包含每种问题类型的可用求解器,包括来自的求解器全局优化工具箱.方程问题的细节显示在优化求解器细节下面。

用于转换具有整数约束的非线性问题prob2struct,得到的问题结构取决于所选的求解器。如果你没有全局优化工具箱许可证,您必须指定解算器。看到非线性问题优化中的整数约束

这里列出了每种优化问题类型的默认求解器。

问题类型 默认的解算器
线性规划(LP) linprog
混合整数线性规划(MILP) intlinprog
二次规划(QP) quadprog
二阶锥规划(SOCP) coneprog
线性最小二乘 lsqlin
非线性最小二乘 lsqnonlin
非线性规划(NLP)

fminunc对于没有约束的问题,否则fmincon

混合整数非线性规划(MINLP) 遗传算法(全局优化工具箱)
多目标 gamultiobj(全局优化工具箱)

在这个表中,是的意味着求解器可用于问题类型,x表示解算器不可用。

问题类型

LP MILP QP 二次 线性最小二乘 非线性最小二乘 NLP 适应
解算器
linprog

是的

x x x x x x x
intlinprog

是的

是的

x x x x x x
quadprog

是的

x

是的

是的

是的

x x x
coneprog

是的

x x

是的

x x x x
lsqlin x x x x

是的

x x x
lsqnonneg x x x x

是的

x x x
lsqnonlin x x x x

是的

是的

x x
fminunc

是的

x

是的

x

是的

是的

是的

x
fmincon

是的

x

是的

是的

是的

是的

是的

x
patternsearch(全局优化工具箱)

是的

x

是的

是的

是的

是的

是的

x
遗传算法(全局优化工具箱)

是的

是的

是的

是的

是的

是的

是的

是的

particleswarm(全局优化工具箱)

是的

x

是的

x

是的

是的

是的

x
simulannealbnd(全局优化工具箱)

是的

x

是的

x

是的

是的

是的

x
surrogateopt(全局优化工具箱)

是的

是的

是的

是的

是的

是的

是的

是的

gamultiobj(全局优化工具箱)

是的

是的

是的

是的

是的

是的

是的

是的

paretosearch(全局优化工具箱)

是的

x

是的

是的

是的

是的

是的

x

请注意

如果你选择lsqcurvefit作为最小二乘问题的解,解决使用lsqnonlin.的lsqcurvefit而且lsqnonlin求解器是相同的解决

谨慎

对于最大化问题(概率。ObjectiveSense“马克斯”“最大化”),不指定最小二乘求解器(以名称开头的)lsq).如果你这样做,解决抛出一个错误,因为这些求解器不能最大化。

对于方程求解,该表包含每种问题类型的可用求解器。在表中,

  • 指示问题类型的默认求解器。

  • Y指示可用的求解器。

  • N指示不可用的求解器。

支持的方程求解器

方程类型 lsqlin lsqnonneg fzero fsolve lsqnonlin
线性 N Y(标量) Y Y
线性和范围 Y N N Y
标量非线性 N N Y Y
非线性系统 N N N Y
非线性系统正界 N N N N

例子:“intlinprog”

数据类型:字符|字符串

表示对非线性目标函数使用自动微分(AD),具体为“汽车”(如果可能的话使用AD),“auto-forward”(如果可能的话使用转发AD),自动翻转的(如果可能的话使用反向AD),或者有限差分的(不要使用AD)。选择包括汽车在支持目标函数的情况下,使底层求解器在求解问题时使用梯度信息,如优化变量和表达式的支持操作.示例请参见自动区分在基于问题优化中的作用

求解器默认选择以下类型的AD:

  • 对于一般的非线性目标函数,fmincon默认为目标函数的反向AD。fmincon当非线性约束的数量小于变量的数量时,默认反向AD为非线性约束函数。否则,fmincon默认为转发AD的非线性约束函数。

  • 对于一般的非线性目标函数,fminunc默认为反向AD。

  • 对于最小二乘目标函数,fmincon而且fminunc默认为目标函数转发AD。有关基于问题的最小二乘目标函数的定义,请参见基于问题的最小二乘的目标函数

  • lsqnonlin当目标向量中的元素数量大于或等于变量的数量时,默认转发AD。否则,lsqnonlin默认为反向AD。

  • fsolve当方程数量大于或等于变量数量时,默认转发AD。否则,fsolve默认为反向AD。

例子:有限差分的

数据类型:字符|字符串

对非线性约束函数使用自动微分(AD)的指示,具体为“汽车”(如果可能的话使用AD),“auto-forward”(如果可能的话使用转发AD),自动翻转的(如果可能的话使用反向AD),或者有限差分的(不要使用AD)。选择包括汽车在支持约束函数的情况下,使底层求解器在解决问题时使用梯度信息,如优化变量和表达式的支持操作.示例请参见自动区分在基于问题优化中的作用

求解器默认选择以下类型的AD:

  • 对于一般的非线性目标函数,fmincon默认为目标函数的反向AD。fmincon当非线性约束的数量小于变量的数量时,默认反向AD为非线性约束函数。否则,fmincon默认为转发AD的非线性约束函数。

  • 对于一般的非线性目标函数,fminunc默认为反向AD。

  • 对于最小二乘目标函数,fmincon而且fminunc默认为目标函数转发AD。有关基于问题的最小二乘目标函数的定义,请参见基于问题的最小二乘的目标函数

  • lsqnonlin当目标向量中的元素数量大于或等于变量的数量时,默认转发AD。否则,lsqnonlin默认为反向AD。

  • fsolve当方程数量大于或等于变量数量时,默认转发AD。否则,fsolve默认为反向AD。

例子:有限差分的

数据类型:字符|字符串

对非线性约束函数使用自动微分(AD)的指示,具体为“汽车”(如果可能的话使用AD),“auto-forward”(如果可能的话使用转发AD),自动翻转的(如果可能的话使用反向AD),或者有限差分的(不要使用AD)。选择包括汽车在支持方程函数的情况下,使底层求解器在求解问题时使用梯度信息,如优化变量和表达式的支持操作.示例请参见自动区分在基于问题优化中的作用

求解器默认选择以下类型的AD:

  • 对于一般的非线性目标函数,fmincon默认为目标函数的反向AD。fmincon当非线性约束的数量小于变量的数量时,默认反向AD为非线性约束函数。否则,fmincon默认为转发AD的非线性约束函数。

  • 对于一般的非线性目标函数,fminunc默认为反向AD。

  • 对于最小二乘目标函数,fmincon而且fminunc默认为目标函数转发AD。有关基于问题的最小二乘目标函数的定义,请参见基于问题的最小二乘的目标函数

  • lsqnonlin当目标向量中的元素数量大于或等于变量的数量时,默认转发AD。否则,lsqnonlin默认为反向AD。

  • fsolve当方程数量大于或等于变量数量时,默认转发AD。否则,fsolve默认为反向AD。

例子:有限差分的

数据类型:字符|字符串

输出参数

全部折叠

方法,作为结构或对象返回OptimizationValues向量。索尔是一个OptimizationValues向量,当问题是多目标时。对于单目标问题,返回结构的字段是问题中优化变量的名称。看到optimvar

目标函数在解处的值,作为以下之一返回:

问题类型 返回值(s)
优化标量目标函数fx 实数f索尔
最小二乘 实数,解处残差的平方和
解决方程 如果概率。方程是一个单项:解处函数值的实向量,意味着方程左边减去右边
如果概率。方程结构具有与?相同的名称概率。方程,其中每个字段值是指定方程的左边减去右边
多目标 矩阵,每一行代表一个目标函数分量,每一列代表一个解点。

提示

如果你忽视了要求fval对于定义为优化表达式或方程表达式的目标,您可以使用

fval =评估(prob.Objective sol)

如果目标被定义为只有一个字段的结构,

fval =评估(prob.Objective.ObjectiveName sol)

如果目标是一个具有多个字段的结构,那么编写一个循环。

帧=字段(prob.Equations);i = 1:length(fnames) fval.(fnames{i}) = evaluate(probe . equations .(fnames{i}),sol);结束

解释解算器停止的原因,作为枚举变量返回。您可以转换exitflag与它的数字等效使用双(exitflag),并转换为与其对应的字符串using字符串(exitflag)

的退出标志intlinprog解算器。

退出旗intlinprog 数值上等于 意义
OptimalWithPoorFeasibility 3.

解是可行的,相对于ConstraintTolerance公差,但就绝对公差而言是不可行的。

IntegerFeasible 2 intlinprog提前停止,找到一个整数可行点。
OptimalSolution

1

求解器收敛成一个解x

SolverLimitExceeded

0

intlinprog超过下列公差之一:

  • LPMaxIterations

  • MaxNodes

  • MaxTime

  • RootLPMaxIterations

看到公差和停止标准解决还在根节点的内存用尽时返回这个退出标志。

OutputFcnStop -1 intlinprog被输出函数或绘图函数停止。
NoFeasiblePointFound

-2

找不到可行点。

无限

3

这个问题没有界限。

FeasibilityLost

9

解决了可行性。

Exitflags3.而且9与有很大不可行性的解决方案联系起来。这些通常来自于具有较大条件数的线性约束矩阵,或具有较大解分量的问题。要纠正这些问题,可以尝试缩放系数矩阵,消除多余的线性约束,或对变量给出更严格的边界。

的退出标志linprog解算器。

退出旗linprog 数值上等于 意义
OptimalWithPoorFeasibility 3.

解是可行的,相对于ConstraintTolerance公差,但就绝对公差而言是不可行的。

OptimalSolution 1

求解器收敛成一个解x

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations

NoFeasiblePointFound -2

找不到可行点。

无限 3

这个问题没有界限。

FoundNaN 4

在算法执行期间遇到的值。

PrimalDualInfeasible 5

原始问题和对偶问题都是不可行的。

DirectionTooSmall 7

搜索方向太小。无法取得进一步进展。

FeasibilityLost 9

解决了可行性。

Exitflags3.而且9与有很大不可行性的解决方案联系起来。这些通常来自于具有较大条件数的线性约束矩阵,或具有较大解分量的问题。要纠正这些问题,可以尝试缩放系数矩阵,消除多余的线性约束,或对变量给出更严格的边界。

的退出标志lsqlin解算器。

退出旗lsqlin 数值上等于 意义
FunctionChangeBelowTolerance 3.

残留量的变化小于规定的公差选项。FunctionTolerance.(trust-region-reflective算法)

StepSizeBelowTolerance

2

步长小于选项。StepTolerance、约束满足。(内点算法)

OptimalSolution 1

求解器收敛成一个解x

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations

NoFeasiblePointFound -2

对于优化问题,该问题是不可行的。或,内点算法,步长小于选项。StepTolerance,但不满足约束。

对于方程问题,找不到解。

IllConditioned 4

条件不良阻碍了进一步优化。

NoDescentDirectionFound 8

搜索方向太小。无法取得进一步进展。(内点算法)

的退出标志quadprog解算器。

退出旗quadprog 数值上等于 意义
LocalMinimumFound 4

局部最小值;最小值不是唯一的。

FunctionChangeBelowTolerance 3.

目标函数值的变化小于规定公差选项。FunctionTolerance.(trust-region-reflective算法)

StepSizeBelowTolerance

2

步长小于选项。StepTolerance、约束满足。(interior-point-convex算法)

OptimalSolution 1

求解器收敛成一个解x

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations

NoFeasiblePointFound -2

这个问题是不可行的。或,内点算法,步长小于选项。StepTolerance,但不满足约束。

IllConditioned 4

条件不良阻碍了进一步优化。

非凸

6

发现非凸问题。(interior-point-convex算法)

NoDescentDirectionFound 8

无法计算步长方向。(interior-point-convex算法)

的退出标志coneprog解算器。

退出旗coneprog 数值上等于 意义
OptimalSolution 1

求解器收敛成一个解x

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations,或超过解决时间(以秒为单位)选项。MaxTime

NoFeasiblePointFound -2

这个问题是不可行的。

无限 3

这个问题没有界限。

DirectionTooSmall

7

搜索方向变得太小了。无法取得进一步进展。

不稳定 -10

这个问题在数值上不稳定。

的退出标志lsqcurvefitlsqnonlin解算器。

退出旗lsqnonlin 数值上等于 意义
SearchDirectionTooSmall 4

搜索方向的量级小于选项。StepTolerance

FunctionChangeBelowTolerance 3.

残余的变化小于选项。FunctionTolerance

StepSizeBelowTolerance

2

步长小于选项。StepTolerance

OptimalSolution 1

求解器收敛成一个解x

SolverLimitExceeded 0

超过的迭代次数选项。MaxIterations或者超出函数求值的次数选项。MaxFunctionEvaluations

OutputFcnStop -1

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

NoFeasiblePointFound -2

对于最优化问题,问题是不可行的:边界而且乌兰巴托是不一致的。

对于方程问题,找不到解。

的退出标志fminunc解算器。

退出旗fminunc 数值上等于 意义
NoDecreaseAlongSearchDirection 5

预测减少的目标函数小于选项。FunctionTolerance宽容。

FunctionChangeBelowTolerance 3.

目标函数值的变化小于选项。FunctionTolerance宽容。

StepSizeBelowTolerance

2

的变化x小于选项。StepTolerance宽容。

OptimalSolution 1

梯度的大小小于选项。OptimalityTolerance宽容。

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations或者函数求值的次数超过选项。MaxFunctionEvaluations

OutputFcnStop -1

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

无限 3

当前迭代的目标函数如下选项。ObjectiveLimit

的退出标志fmincon解算器。

退出旗fmincon 数值上等于 意义
NoDecreaseAlongSearchDirection 5

搜索方向上方向导数的大小小于2*选项。OptimalityTolerance最大违反约束小于选项。ConstraintTolerance

SearchDirectionTooSmall 4

搜索方向的大小小于2*选项。StepTolerance最大违反约束小于选项。ConstraintTolerance

FunctionChangeBelowTolerance 3.

目标函数值的变化小于选项。FunctionTolerance最大违反约束小于选项。ConstraintTolerance

StepSizeBelowTolerance

2

的变化x小于选项。StepTolerance最大违反约束小于选项。ConstraintTolerance

OptimalSolution 1

一阶最优测度小于选项。OptimalityTolerance,最大约束违例小于选项。ConstraintTolerance

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations或者函数求值的次数超过选项。MaxFunctionEvaluations

OutputFcnStop -1

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

NoFeasiblePointFound -2

找不到可行点。

无限 3

当前迭代的目标函数如下选项。ObjectiveLimit最大违反约束小于选项。ConstraintTolerance

的退出标志fsolve解算器。

退出旗fsolve 数值上等于 意义
SearchDirectionTooSmall 4

搜索方向的大小小于选项。StepTolerance方程,解决了。

FunctionChangeBelowTolerance 3.

目标函数值的变化小于选项。FunctionTolerance方程,解决了。

StepSizeBelowTolerance

2

的变化x小于选项。StepTolerance方程,解决了。

OptimalSolution 1

一阶最优测度小于选项。OptimalityTolerance方程,解决了。

SolverLimitExceeded 0

迭代次数超过选项。MaxIterations或者函数求值的次数超过选项。MaxFunctionEvaluations

OutputFcnStop -1

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

NoFeasiblePointFound -2

收敛到一个不是根的点。

TrustRegionRadiusTooSmall 3

方程没有解决。信任区域半径太小(trust-region-dogleg算法)。

的退出标志fzero解算器。

退出旗fzero 数值上等于 意义
OptimalSolution 1

方程解决。

OutputFcnStop -1

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

FoundNaNInfOrComplex 4

,或在搜索包含符号变化的区间时遇到的复值。

SingularPoint 5

可能会聚到一个奇异点。

CannotDetectSignChange 6 没有发现两个函数值符号相反的点。

的退出标志patternsearch解算器。

退出旗patternsearch 数值上等于 意义
SearchDirectionTooSmall 4

步长量级小于机器精度,约束违反小于ConstraintTolerance

FunctionChangeBelowTolerance 3.

的变化fval且网格尺寸均小于规定公差,且约束违例小于ConstraintTolerance

StepSizeBelowTolerance

2

的变化x而且网目尺寸都小于StepTolerance,约束违反小于ConstraintTolerance

SolverConvergedSuccessfully 1

没有非线性约束—网格尺寸的大小小于规定公差,约束违例小于ConstraintTolerance

具有非线性约束-规模的互补措施(在该表后面定义)小于√ConstraintTolerance,子问题用比的网格解决MeshTolerance,约束违反小于ConstraintTolerance

SolverLimitExceeded 0

达到函数计算或迭代的最大数量。

OutputFcnStop -1

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

NoFeasiblePointFound -2

找不到可行点。

在非线性约束求解器中互补措施元素所在的向量的范数是多少cλ,在那里c是非线性不等式约束违反,和λ为相应的拉格朗日乘子。

的退出标志遗传算法解算器。

退出旗遗传算法 数值上等于 意义
MinimumFitnessLimitReached 5

最低的健身限制FitnessLimit达到且约束违反小于ConstraintTolerance

SearchDirectionTooSmall 4

步长量级小于机器精度,约束违反小于ConstraintTolerance

FunctionChangeBelowTolerance 3.

的适应度函数值没有变化MaxStallGenerations代和约束的违反小于ConstraintTolerance

SolverConvergedSuccessfully 1

没有非线性约束-适应度函数值的平均累积变化MaxStallGenerations代小于FunctionTolerance,约束违反小于ConstraintTolerance

具有非线性约束-互补性措施的幅度(见互补措施(全局优化工具箱))小于√ConstraintTolerance,子问题用小于的公差来解决FunctionTolerance,约束违反小于ConstraintTolerance

SolverLimitExceeded 0

最大代数MaxGenerations超过了。

OutputFcnStop -1

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

NoFeasiblePointFound -2

找不到可行点。

StallTimeLimitExceeded 4

拖延时间限制MaxStallTime超过了。

TimeLimitExceeded 5

时间限制MaxTime超过了。

的退出标志particleswarm解算器。

退出旗particleswarm 数值上等于 意义
SolverConvergedSuccessfully 1

相对于上一个目标值的变化选项。MaxStallIterations迭代少于选项。FunctionTolerance

SolverLimitExceeded 0

超过的迭代次数选项。MaxIterations

OutputFcnStop -1

迭代被输出函数或绘图函数停止。

NoFeasiblePointFound -2

边界是不一致的:对某些人来说磅(我)>乌兰巴托(我)

无限 3

最佳目标函数值如下选项。ObjectiveLimit

StallTimeLimitExceeded 4

最佳目标函数值在内没有变化选项。MaxStallTime秒。

TimeLimitExceeded 5

运行时间超过选项。MaxTime秒。

的退出标志simulannealbnd解算器。

退出旗simulannealbnd 数值上等于 意义
ObjectiveValueBelowLimit 5

目标函数值小于选项。ObjectiveLimit

SolverConvergedSuccessfully 1

目标函数值的平均变化量除以选项。MaxStallIterations迭代少于选项。FunctionTolerance

SolverLimitExceeded 0

最大代数MaxGenerations超过了。

OutputFcnStop -1

由输出函数或图函数终止的优化。

NoFeasiblePointFound -2

找不到可行点。

TimeLimitExceeded 5

超过了时间限制。

的退出标志surrogateopt解算器。

退出旗surrogateopt 数值上等于 意义
BoundsEqual 10

由于下列原因之一,问题具有唯一可行解:

  • 所有的上界乌兰巴托(全局优化工具箱)等于下界吗(全局优化工具箱)

  • 线性等式约束Aeq * x =说真的边界有一个唯一的解点。

surrogateopt返回可行点和函数值,不执行任何优化。

FeasiblePointFound 3. 找到可行点。求解器停止,因为找到的新的可行点太少,无法继续。
ObjectiveLimitAttained 1

目标函数值小于选项。ObjectiveLimit.此退出标志优先于退出标志10当适用。

SolverLimitExceeded 0

函数求值的次数超过选项。MaxFunctionEvaluations或运行时间超过选项。MaxTime.如果问题存在非线性不等式,则解是可行的。

OutputFcnStop -1

优化由输出函数或图函数结束。

NoFeasiblePointFound -2

由于下列情况之一,没有找到可行点:

  • 一个下界磅(我)超过相应的上限乌兰巴托(我).或者一个或多个装天花板(磅(i))超过一个相应的地板(乌兰巴托(i))因为我在intcon(全局优化工具箱).在这种情况下,解决返回x = []而且fval = []

  • 磅=乌兰巴托和点是不可行的。在这种情况下,x =磅,fval = objconstr (x)。Fval

  • 线性约束和整数约束(如果存在)与边界一起是不可行的。在这种情况下,解决返回x = []而且fval = []

  • 边界,整数和线性约束是可行的,但没有可行的解与非线性约束。在这种情况下,x是非线性约束的最小最大值不可行的点,和fval = objconstr (x)。Fval

的退出标志MultiStart而且GlobalSearch解决者。

退出旗MultiStartGlobalSearch 数值上等于 意义
LocalMinimumFoundSomeConverged 2 至少找到了一个本地最小值。局部求解器的一些运行收敛了。
LocalMinimumFoundAllConverged 1 至少找到了一个本地最小值。本地求解器的所有运行都收敛了。
SolverLimitExceeded 0 没有找到局部最小值。局部求解器至少调用一次,且至少一个局部求解器调用迭代用尽。
OutputFcnStop 1 被输出函数或绘图函数停止。
NoFeasibleLocalMinimumFound 2 找不到可行的局部极小值。
TimeLimitExceeded 5 MaxTime限制超过。
NoSolutionFound 8 没有找到解决方案。所有运行都有本地求解器出口标志-2或更小,不是所有都等于-2。
FailureInSuppliedFcn -10年 在目标函数或非线性约束函数中遇到故障。

的退出标志paretosearch解算器。

退出旗paretosearch 数值上等于 意义
SolverConvergedSuccessfully 1

满足以下条件之一:

  • 所有在位的网格尺寸小于选项。MeshTolerance约束条件(如果有的话)满足于内部选项。ConstraintTolerance

  • 在帕累托集的传播的相对变化小于选项。ParetoSetChangeTolerance约束条件(如果有的话)满足于内部选项。ConstraintTolerance

  • 帕累托集体积的相对变化小于选项。ParetoSetChangeTolerance约束条件(如果有的话)满足于内部选项。ConstraintTolerance

SolverLimitExceeded 0 迭代次数超过选项。MaxIterations,或函数求值次数超过选项。MaxFunctionEvaluations
OutputFcnStop 1 被输出函数或绘图函数停止。
NoFeasiblePointFound 2 求解器不能找到一个满足所有约束条件的点。
TimeLimitExceeded 5 优化时间超过选项。MaxTime

的退出标志gamultiobj解算器。

退出旗paretosearch 数值上等于 意义
SolverConvergedSuccessfully 1 价差值相对变化的几何平均值选项。MaxStallGenerations代小于选项。FunctionTolerance,最终价差小于过去的平均价差选项。MaxStallGenerations一代又一代。
SolverLimitExceeded 0 代数超过选项。MaxGenerations
OutputFcnStop 1 被输出函数或绘图函数停止。
NoFeasiblePointFound 2 求解器不能找到一个满足所有约束条件的点。
TimeLimitExceeded 5 优化时间超过选项。MaxTime

关于优化过程的信息,作为结构返回。输出结构包含相关底层求解器输出字段中的字段,具体取决于哪个求解器解决被称为:

  • “遗传算法”输出(全局优化工具箱)

  • “gamultiobj”输出(全局优化工具箱)

  • “paretosearch”输出(全局优化工具箱)

  • “particleswarm”输出(全局优化工具箱)

  • “patternsearch”输出(全局优化工具箱)

  • “simulannealbnd”输出(全局优化工具箱)

  • “surrogateopt”输出(全局优化工具箱)

  • “MultiStart”而且“GlobalSearch”从本地求解器返回输出结构。此外,输出结构包含以下字段:

    • globalSolver——要么“MultiStart”“GlobalSearch”

    • objectiveDerivative—取本节末尾描述的值。

    • constraintDerivative—取本节末尾描述的值,或“汽车”概率无非线性约束。

    • 解算器-本地求解器,如“fmincon”

    • 当地的结构包含关于优化的额外信息。

      • 索尔-局部解,作为的向量返回OptimizationValues对象。

      • x0-本地求解器的初始点,作为单元格数组返回。

      • exitflag-本地解决方案的退出标志,作为整数向量返回。

      • 输出-结构数组,每个本地解决方案有一行。每一行都是对应于一个局部解的局部输出结构。

解决包括附加字段解算器输出结构来标识所使用的求解器,例如“intlinprog”

解算器是一个非线性优化工具箱™求解器,解决包含一个或两个描述导数估计类型的额外字段。的objectivederivative如果合适,constraintderivative字段可以取以下值:

  • “reverse-AD”对于反向自动微分

  • “forward-AD”对于正向自动微分

  • “有限差分”对于有限差分估计

  • “封闭”对于线性或二次函数

解的拉格朗日乘子,作为结构返回。

请注意

解决不返回λequation-solving问题。

intlinprog而且fminunc解决,λ是空的,[].对于其他的解,λ这些字段:

  • 变量—包含每个问题变量的字段。每个问题变量名都是一个包含两个字段的结构:

    • 较低的-与变量相关的拉格朗日乘子下界属性,作为与变量大小相同的数组返回。非零项意味着解在下界。这些乘数在结构中lambda.Variables。variablename.Lower

    • -与变量相关的拉格朗日乘子UpperBound属性,作为与变量大小相同的数组返回。非零项意味着解在上界。这些乘数在结构中lambda.Variables。variablename.Upper

  • 约束-为每个问题约束包含一个字段。每个问题约束都位于一个结构中,其名称为约束名称,其值为与约束大小相同的数字数组。非零项意味着约束在解处是活动的。这些乘数在结构中lambda.Constraints。constraintname

    请注意

    约束数组的元素都有相同的比较(< == =,或> =),并且都是同一类型(线性、二次或非线性)。

算法

全部折叠

转换为求解形式

在内部,解决函数通过调用求解器来解决优化问题。有关该问题的默认求解器和该问题的受支持求解器,请参见解决者函数。方法可以覆盖默认值“规划求解”调用时的名称-值对参数解决

之前解决可以调用求解器,将问题必须转换为求解器形式,要么通过解决或者其他相关的函数或对象。例如,这种转换需要使用矩阵表示而不是优化变量表达式的线性约束。

算法的第一步发生在将优化表达式放入问题中时。一个OptimizationProblem对象具有其表达式中使用的变量的内部列表。每个变量在表达式中都有一个线性索引和一个大小。因此,问题变量有一个隐含的矩阵形式。的prob2struct函数执行从问题形式到求解器形式的转换。示例请参见将问题转化为结构

对于非线性优化问题,解决使用自动分化计算目标函数和非线性约束函数的梯度。这些导数适用于由目标函数和约束函数组成的情况优化变量和表达式的支持操作.当自动微分不适用时,求解者使用有限差分估计导数。有关自动区分的详细信息,请参见自动分化背景.你可以控制解决使用自动区分与ObjectiveDerivative名称-值参数。

对于这个算法intlinprog用来解决MILP问题,参见intlinprog算法.对于算法linprog用于解决线性规划问题,参见线性规划算法.对于算法quadprog用于解决二次规划问题,参见二次规划算法.有关线性或非线性最小二乘求解器算法,请参见最小二乘(模型拟合)算法.有关非线性求解算法,请参见无约束非线性优化算法而且约束非线性优化算法.为全局优化工具箱规划求解算法,看到全局优化工具箱文档。

对于非线性方程求解,解决内部表示每个方程的左右差。然后解决试图使方程分量的平方和最小化。有关求解非线性方程组的算法,请参见方程求解算法.当问题也有边界时,解决调用lsqnonlin使方程分量的平方和最小。看到最小二乘(模型拟合)算法

请注意

如果你的目标函数是平方和,你想解决要识别它,可以将其写成任意一种形式规范(expr) ^ 2总和(expr。^ 2),而不是像expr‘* expr或者其他形式。内部解析器只有在表示为范数的平方或显式的平方和时才能识别平方和。有关详细信息,请参见基于问题的最小二乘的目标函数.示例请参见基于问题的非负线性最小二乘

自动分化

自动区分(AD)适用于解决而且prob2struct在下列条件下发挥作用:

  • 支持目标函数和约束函数,如优化变量和表达式的支持操作.它们不需要使用fcn2optimexpr函数。

  • 解算者来了解决fminconfminuncfsolve,或lsqnonlin

  • 对于优化问题,“ObjectiveDerivative”而且“ConstraintDerivative”的名-值对参数解决prob2struct“汽车”(默认),“auto-forward”,或自动翻转的

  • 对于方程问题,“EquationDerivative”选项设置为“汽车”(默认),“auto-forward”,或自动翻转的

当广告应用 支持的所有约束函数 不支持一个或多个约束
目标函数的支持 AD用于目标和约束条件 AD仅用于目标
不支持目标函数 AD仅用于约束 广告不习惯

当这些条件不满足时,解决通过有限差分估计梯度,和prob2struct不会在其生成的函数文件中创建渐变。

求解器默认选择以下类型的AD:

  • 对于一般的非线性目标函数,fmincon默认为目标函数的反向AD。fmincon当非线性约束的数量小于变量的数量时,默认反向AD为非线性约束函数。否则,fmincon默认为转发AD的非线性约束函数。

  • 对于一般的非线性目标函数,fminunc默认为反向AD。

  • 对于最小二乘目标函数,fmincon而且fminunc默认为目标函数转发AD。有关基于问题的最小二乘目标函数的定义,请参见基于问题的最小二乘的目标函数

  • lsqnonlin当目标向量中的元素数量大于或等于变量的数量时,默认转发AD。否则,lsqnonlin默认为反向AD。

  • fsolve当方程数量大于或等于变量数量时,默认转发AD。否则,fsolve默认为反向AD。

请注意

在由。转换的问题中使用自动导数prob2struct,传递指定这些派生的选项。

选择= optimoptions (“fmincon”“SpecifyObjectiveGradient”,真的,...“SpecifyConstraintGradient”,真正的);问题。选项=选项;

目前,AD只适用于一阶导数;它不适用于二阶或更高阶的导数。所以,举个例子,如果你想使用分析黑森来加速你的优化,你不能使用解决中描述的方法基于问题的工作流中的供应派生

扩展功能

版本历史

介绍了R2017b

全部展开

Baidu
map