解决
解决优化问题或方程问题
语法
描述
使用解决
求最优化问题或方程问题的解。
提示
有关完整的工作流程,请参见具体问题具体分析优化工作流程或基于问题的解方程工作流.
例子
解决线性规划问题
解决一个由优化问题定义的线性规划问题。
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
而且y
.
x = optimvar (“x”);y = optimvar (“y”);
创建一个优化问题有山峰
作为目标函数。
概率= optimproblem (“客观”山峰(x, y));
将约束作为一个不等式包含在优化变量中。
概率。约束条件= x²+ y²<= 4;
设置初始点x
1,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步。
给出一个初始点并不总是能改善问题。对于这个问题,使用初始点可以节省时间和计算步骤。然而,对于某些问题,初始点可能会引起问题解决
采取更多的步骤。
指定起始点和值surrogateopt
,具体问题具体分析
对于某些求解器,您可以将目标和约束函数值(如果有的话)传递给解决
在x0
论点。这可以节省求解程序的时间。传递一个向量OptimizationValues
对象。创建这个向量optimvalues
函数。
可使用目标函数值的求解器为:
遗传算法
gamultiobj
paretosearch
surrogateopt
可以使用非线性约束函数值的求解器有:
paretosearch
surrogateopt
例如,最小化山峰
函数使用surrogateopt
,从初始点网格中的值开始。创建一个从-10到10的网格x
变量,5/2
来5/2
在y
间距为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”
基于问题的多起点求解器最小化非线性函数
的局部极小值山峰
函数在值域上
从这一点开始[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 = 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
求解线性规划
力解决
使用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个苹果BOS
980个橙子宽松的
.
解非线性方程组,基于问题
求解非线性方程组
使用基于问题的方法,首先定义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
对象
优化问题或方程问题,指定为OptimizationProblem
对象或一个EquationProblem
对象。创建一个优化问题,使用optimproblem
;用。创建一个方程问题eqnproblem
.
警告
基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。如果函数计算具有复杂值,即使是作为中间值,最终结果也可能是不正确的。
例子:概率= optimproblem;概率。目标= obj;prob.Constraints。cons1 = cons1;
例子:概率= eqnproblem;概率。公式=方程式;
x0
- - - - - -初始点
结构|向量的OptimizationValues
对象
初始点,指定为字段名等于中的变量名的结构概率
.
对于一些全局优化工具箱解决,x0
可以是的向量吗OptimizationValues
表示多个初始点的对象。创建点使用optimvalues
函数。这些解决方案是:
遗传算法
(全局优化工具箱),gamultiobj
(全局优化工具箱),paretosearch
(全局优化工具箱)而且particleswarm
(全局优化工具箱).这些求解器接受多个起始点作为初始总体的成员。MultiStart
(全局优化工具箱).此求解器接受本地求解器的多个初始点,例如fmincon
.surrogateopt
(全局优化工具箱).该求解器接受多个初始点,以帮助创建初始代理。
下面是使用x0
使用命名索引变量,请参见用命名索引变量创建优化的初始点.
例子:如果概率
有变量命名x
而且y
:x0。x=[3.,2,17]; x0.y = [pi/3,2*pi/3]
.
数据类型:结构体
女士
- - - - - -多个开始解算器
MultiStart
对象|GlobalSearch
对象
多个启动求解器,指定为MultiStart
(全局优化工具箱)对象或一个GlobalSearch
(全局优化工具箱)对象。创建女士
使用MultiStart
或GlobalSearch
命令。
目前,GlobalSearch
只支持fmincon
当地的解决者,MultiStart
只支持fmincon
,fminunc
,lsqnonlin
当地的解决者。
例子:女士= MultiStart;
例子:= GlobalSearch女士(FunctionTolerance = 1的军医);
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:解决(问题提出,“选项”,选择)
MinNumStartPoints
- - - - - -的最小起始点数MultiStart
20.(默认)|正整数
的最小起始点数MultiStart
(全局优化工具箱),指定为正整数。这个参数只适用于调用时解决
使用女士
论点。解决
中的所有值x0
开始点。如果MinNumStartPoints
中的值的个数大于x0
,然后解决
在问题边界内随机均匀地生成更多的起始点。如果一个组件是无界的,解决
的默认人工边界生成点MultiStart
.
例子:解决(问题,x0,女士,MinNumStartPoints = 50)
数据类型:双
选项
- - - - - -优化选项
创建的对象optimoptions
|选择结构
所创建的对象指定的优化选项optimoptions
或者一个选项结构,例如created byoptimset
.
在内部,解决
函数调用相关的求解器“规划求解”
参数的参考。确保选项
与求解器兼容。例如,intlinprog
不允许选项是结构,并且lsqnonneg
不允许选项作为对象。
有关选项设置的建议,以改进intlinprog
溶液或溶液的速度,参见整型线性规划调优.为linprog
,默认的对偶单纯形的
算法通常是内存高效和快速的。偶尔,linprog
时,可以更快地解决大问题算法
选择是“内点”
.有关改进非线性问题解决方案的选项设置的建议,请参见常用选项:调优和故障排除而且改善结果.
例子:选择= optimoptions(“intlinprog”,“显示”,“没有一个”)
解算器
- - - - - -优化解算器
“intlinprog”
|“linprog”
|“lsqlin”
|“lsqcurvefit”
|“lsqnonlin”
|“lsqnonneg”
|“quadprog”
|“fminunc”
|“fmincon”
|“fzero”
|“fsolve”
|“coneprog”
|“遗传算法”
|“gamultiobj”
|“paretosearch”
|“patternsearch”
|“particleswarm”
|“surrogateopt”
|“simulannealbnd”
优化求解器,指定为列出的求解器的名称。对于优化问题,该表包含每种问题类型的可用求解器,包括来自的求解器全局优化工具箱.方程问题的细节显示在优化求解器细节下面。
用于转换具有整数约束的非线性问题prob2struct
,得到的问题结构取决于所选的求解器。如果你没有全局优化工具箱许可证,您必须指定解算器。看到非线性问题优化中的整数约束.
这里列出了每种优化问题类型的默认求解器。
问题类型 | 默认的解算器 |
---|---|
线性规划(LP) | linprog |
混合整数线性规划(MILP) | intlinprog |
二次规划(QP) | quadprog |
二阶锥规划(SOCP) | coneprog |
线性最小二乘 | lsqlin |
非线性最小二乘 | lsqnonlin |
非线性规划(NLP) | |
混合整数非线性规划(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”
数据类型:字符
|字符串
ObjectiveDerivative
- - - - - -指示用自动微分法求目标函数
“汽车”
(默认)|“auto-forward”
|自动翻转的
|有限差分的
表示对非线性目标函数使用自动微分(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。
例子:有限差分的
数据类型:字符
|字符串
ConstraintDerivative
- - - - - -指示使用自动微分约束函数
“汽车”
(默认)|“auto-forward”
|自动翻转的
|有限差分的
对非线性约束函数使用自动微分(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。
例子:有限差分的
数据类型:字符
|字符串
EquationDerivative
- - - - - -指示使用自动微分方程
“汽车”
(默认)|“auto-forward”
|自动翻转的
|有限差分的
对非线性约束函数使用自动微分(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
向量。索尔
是一个OptimizationValues
向量,当问题是多目标时。对于单目标问题,返回结构的字段是问题中优化变量的名称。看到optimvar
.
fval
-目标函数值在解处
实数|实向量|实矩阵|结构
目标函数在解处的值,作为以下之一返回:
问题类型 | 返回值(s) |
---|---|
优化标量目标函数f(x) | 实数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
与它的数字等效使用双(exitflag)
,并转换为与其对应的字符串using字符串(exitflag)
.
的退出标志intlinprog
解算器。
退出旗intlinprog |
数值上等于 | 意义 |
---|---|---|
OptimalWithPoorFeasibility |
3. |
解是可行的,相对于 |
IntegerFeasible |
2 | intlinprog 提前停止,找到一个整数可行点。 |
OptimalSolution |
|
求解器收敛成一个解 |
SolverLimitExceeded |
|
看到公差和停止标准. |
OutputFcnStop |
-1 |
intlinprog 被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
|
找不到可行点。 |
无限 |
|
这个问题没有界限。 |
FeasibilityLost |
|
解决了可行性。 |
Exitflags3.
而且9
与有很大不可行性的解决方案联系起来。这些通常来自于具有较大条件数的线性约束矩阵,或具有较大解分量的问题。要纠正这些问题,可以尝试缩放系数矩阵,消除多余的线性约束,或对变量给出更严格的边界。
的退出标志linprog
解算器。
退出旗linprog |
数值上等于 | 意义 |
---|---|---|
OptimalWithPoorFeasibility |
3. |
解是可行的,相对于 |
OptimalSolution |
1 |
求解器收敛成一个解 |
SolverLimitExceeded |
0 |
迭代次数超过 |
NoFeasiblePointFound |
-2 |
找不到可行点。 |
无限 |
3 |
这个问题没有界限。 |
FoundNaN |
4 |
|
PrimalDualInfeasible |
5 |
原始问题和对偶问题都是不可行的。 |
DirectionTooSmall |
7 |
搜索方向太小。无法取得进一步进展。 |
FeasibilityLost |
9 |
解决了可行性。 |
Exitflags3.
而且9
与有很大不可行性的解决方案联系起来。这些通常来自于具有较大条件数的线性约束矩阵,或具有较大解分量的问题。要纠正这些问题,可以尝试缩放系数矩阵,消除多余的线性约束,或对变量给出更严格的边界。
的退出标志lsqlin
解算器。
退出旗lsqlin |
数值上等于 | 意义 |
---|---|---|
FunctionChangeBelowTolerance |
3. |
残留量的变化小于规定的公差 |
StepSizeBelowTolerance |
|
步长小于 |
OptimalSolution |
1 |
求解器收敛成一个解 |
SolverLimitExceeded |
0 |
迭代次数超过 |
NoFeasiblePointFound |
-2 |
对于优化问题,该问题是不可行的。或, 对于方程问题,找不到解。 |
IllConditioned |
4 |
条件不良阻碍了进一步优化。 |
NoDescentDirectionFound |
8 |
搜索方向太小。无法取得进一步进展。( |
的退出标志quadprog
解算器。
退出旗quadprog |
数值上等于 | 意义 |
---|---|---|
LocalMinimumFound |
4 |
局部最小值;最小值不是唯一的。 |
FunctionChangeBelowTolerance |
3. |
目标函数值的变化小于规定公差 |
StepSizeBelowTolerance |
|
步长小于 |
OptimalSolution |
1 |
求解器收敛成一个解 |
SolverLimitExceeded |
0 |
迭代次数超过 |
NoFeasiblePointFound |
-2 |
这个问题是不可行的。或, |
IllConditioned |
4 |
条件不良阻碍了进一步优化。 |
非凸 |
|
发现非凸问题。( |
NoDescentDirectionFound |
8 |
无法计算步长方向。( |
的退出标志coneprog
解算器。
退出旗coneprog |
数值上等于 | 意义 |
---|---|---|
OptimalSolution |
1 |
求解器收敛成一个解 |
SolverLimitExceeded |
0 |
迭代次数超过 |
NoFeasiblePointFound |
-2 |
这个问题是不可行的。 |
无限 |
3 |
这个问题没有界限。 |
DirectionTooSmall |
|
搜索方向变得太小了。无法取得进一步进展。 |
不稳定 |
-10 |
这个问题在数值上不稳定。 |
的退出标志lsqcurvefit
或lsqnonlin
解算器。
退出旗lsqnonlin |
数值上等于 | 意义 |
---|---|---|
SearchDirectionTooSmall |
4 |
搜索方向的量级小于 |
FunctionChangeBelowTolerance |
3. |
残余的变化小于 |
StepSizeBelowTolerance |
|
步长小于 |
OptimalSolution |
1 |
求解器收敛成一个解 |
SolverLimitExceeded |
0 |
超过的迭代次数 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
-2 |
对于最优化问题,问题是不可行的:边界 对于方程问题,找不到解。 |
的退出标志fminunc
解算器。
退出旗fminunc |
数值上等于 | 意义 |
---|---|---|
NoDecreaseAlongSearchDirection |
5 |
预测减少的目标函数小于 |
FunctionChangeBelowTolerance |
3. |
目标函数值的变化小于 |
StepSizeBelowTolerance |
|
的变化 |
OptimalSolution |
1 |
梯度的大小小于 |
SolverLimitExceeded |
0 |
迭代次数超过 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
无限 |
3 |
当前迭代的目标函数如下 |
的退出标志fmincon
解算器。
退出旗fmincon |
数值上等于 | 意义 |
---|---|---|
NoDecreaseAlongSearchDirection |
5 |
搜索方向上方向导数的大小小于2* |
SearchDirectionTooSmall |
4 |
搜索方向的大小小于2* |
FunctionChangeBelowTolerance |
3. |
目标函数值的变化小于 |
StepSizeBelowTolerance |
|
的变化 |
OptimalSolution |
1 |
一阶最优测度小于 |
SolverLimitExceeded |
0 |
迭代次数超过 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
-2 |
找不到可行点。 |
无限 |
3 |
当前迭代的目标函数如下 |
的退出标志fsolve
解算器。
退出旗fsolve |
数值上等于 | 意义 |
---|---|---|
SearchDirectionTooSmall |
4 |
搜索方向的大小小于 |
FunctionChangeBelowTolerance |
3. |
目标函数值的变化小于 |
StepSizeBelowTolerance |
|
的变化 |
OptimalSolution |
1 |
一阶最优测度小于 |
SolverLimitExceeded |
0 |
迭代次数超过 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
-2 |
收敛到一个不是根的点。 |
TrustRegionRadiusTooSmall |
3 |
方程没有解决。信任区域半径太小( |
的退出标志fzero
解算器。
退出旗fzero |
数值上等于 | 意义 |
---|---|---|
OptimalSolution |
1 |
方程解决。 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
FoundNaNInfOrComplex |
4 |
|
SingularPoint |
5 |
可能会聚到一个奇异点。 |
CannotDetectSignChange |
6 |
没有发现两个函数值符号相反的点。 |
的退出标志patternsearch
解算器。
退出旗patternsearch |
数值上等于 | 意义 |
---|---|---|
SearchDirectionTooSmall |
4 |
步长量级小于机器精度,约束违反小于 |
FunctionChangeBelowTolerance |
3. |
的变化 |
StepSizeBelowTolerance |
|
的变化 |
SolverConvergedSuccessfully |
1 |
没有非线性约束—网格尺寸的大小小于规定公差,约束违例小于 |
具有非线性约束-规模的互补措施(在该表后面定义)小于 |
||
SolverLimitExceeded |
0 |
达到函数计算或迭代的最大数量。 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
-2 |
找不到可行点。 |
在非线性约束求解器中互补措施元素所在的向量的范数是多少c我λ我,在那里c我是非线性不等式约束违反,和λ我为相应的拉格朗日乘子。
的退出标志遗传算法
解算器。
退出旗遗传算法 |
数值上等于 | 意义 |
---|---|---|
MinimumFitnessLimitReached |
5 |
最低的健身限制 |
SearchDirectionTooSmall |
4 |
步长量级小于机器精度,约束违反小于 |
FunctionChangeBelowTolerance |
3. |
的适应度函数值没有变化 |
SolverConvergedSuccessfully |
1 |
没有非线性约束-适应度函数值的平均累积变化 |
具有非线性约束-互补性措施的幅度(见互补措施(全局优化工具箱))小于 |
||
SolverLimitExceeded |
0 |
最大代数 |
OutputFcnStop |
-1 |
被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
-2 |
找不到可行点。 |
StallTimeLimitExceeded |
4 |
拖延时间限制 |
TimeLimitExceeded |
5 |
时间限制 |
的退出标志particleswarm
解算器。
退出旗particleswarm |
数值上等于 | 意义 |
---|---|---|
SolverConvergedSuccessfully |
1 |
相对于上一个目标值的变化 |
SolverLimitExceeded |
0 |
超过的迭代次数 |
OutputFcnStop |
-1 |
迭代被输出函数或绘图函数停止。 |
NoFeasiblePointFound |
-2 |
边界是不一致的:对某些人来说 |
无限 |
3 |
最佳目标函数值如下 |
StallTimeLimitExceeded |
4 |
最佳目标函数值在内没有变化 |
TimeLimitExceeded |
5 |
运行时间超过 |
的退出标志simulannealbnd
解算器。
退出旗simulannealbnd |
数值上等于 | 意义 |
---|---|---|
ObjectiveValueBelowLimit |
5 |
目标函数值小于 |
SolverConvergedSuccessfully |
1 |
目标函数值的平均变化量除以 |
SolverLimitExceeded |
0 |
最大代数 |
OutputFcnStop |
-1 |
由输出函数或图函数终止的优化。 |
NoFeasiblePointFound |
-2 |
找不到可行点。 |
TimeLimitExceeded |
5 |
超过了时间限制。 |
的退出标志surrogateopt
解算器。
退出旗surrogateopt |
数值上等于 | 意义 |
---|---|---|
BoundsEqual |
10 |
由于下列原因之一,问题具有唯一可行解:
|
FeasiblePointFound |
3. |
找到可行点。求解器停止,因为找到的新的可行点太少,无法继续。 |
ObjectiveLimitAttained |
1 |
目标函数值小于 |
SolverLimitExceeded |
0 |
函数求值的次数超过 |
OutputFcnStop |
-1 |
优化由输出函数或图函数结束。 |
NoFeasiblePointFound |
-2 |
由于下列情况之一,没有找到可行点:
|
的退出标志MultiStart
而且GlobalSearch
解决者。
退出旗MultiStart 或GlobalSearch |
数值上等于 | 意义 |
---|---|---|
LocalMinimumFoundSomeConverged |
2 |
至少找到了一个本地最小值。局部求解器的一些运行收敛了。 |
LocalMinimumFoundAllConverged |
1 |
至少找到了一个本地最小值。本地求解器的所有运行都收敛了。 |
SolverLimitExceeded |
0 |
没有找到局部最小值。局部求解器至少调用一次,且至少一个局部求解器调用迭代用尽。 |
OutputFcnStop |
1 |
被输出函数或绘图函数停止。 |
NoFeasibleLocalMinimumFound |
2 |
找不到可行的局部极小值。 |
TimeLimitExceeded |
5 |
MaxTime 限制超过。 |
NoSolutionFound |
8 |
没有找到解决方案。所有运行都有本地求解器出口标志-2或更小,不是所有都等于-2。 |
FailureInSuppliedFcn |
-10年 |
在目标函数或非线性约束函数中遇到故障。 |
的退出标志paretosearch
解算器。
退出旗paretosearch |
数值上等于 | 意义 |
---|---|---|
SolverConvergedSuccessfully |
1 |
满足以下条件之一:
|
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 . |
输出
—优化流程信息
结构
关于优化过程的信息,作为结构返回。输出结构包含相关底层求解器输出字段中的字段,具体取决于哪个求解器解决
被称为:
“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
函数。对于优化问题,
“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只适用于一阶导数;它不适用于二阶或更高阶的导数。所以,举个例子,如果你想使用分析黑森来加速你的优化,你不能使用解决
中描述的方法基于问题的工作流中的供应派生.
扩展功能
自动并行支持
通过使用并行计算工具箱™自动并行运行计算来加速代码。
解决
对非线性求解器的并行估计导数UseParallel
解算器的选项是真正的
.例如,
选择= optimoptions (“fminunc”,“UseParallel”,真正的);[溶胶,fval] =解决(x0,概率“选项”选项)
解决
当所有目标和非线性约束函数仅由支持的操作组成时,不使用并行导数估计,如优化变量和表达式的支持操作.在这种情况下,解决
使用自动微分来计算导数。看到自动分化.
可以覆盖自动微分并并行使用有限差分估计“ObjectiveDerivative”
而且“ConstraintDerivative”
参数有限差分的
.
当您指定全局优化工具箱支持并行计算的求解器(遗传算法
(全局优化工具箱),particleswarm
(全局优化工具箱),patternsearch
(全局优化工具箱),surrogateopt
(全局优化工具箱)),解决
并行计算时UseParallel
解算器的选项是真正的
.例如,
选择= optimoptions (“patternsearch”,“UseParallel”,真正的);[溶胶,fval] =解决(x0,概率“选项”选项,“规划求解”,“patternsearch”)
版本历史
介绍了R2017bR2018b:解决(问题解决者)
,解决(问题、期权)
,解决(问题解决者,选项)
语法已被删除
选择选项或基础的求解器解决
,使用名称-值对。例如,
索尔=解决(概率,“选项”选择,“规划求解”,“quadprog”);
以前的语法不像名称-值对那样灵活、标准或可扩展。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。