解决
解决优化问题或方程问题
语法
描述
使用解决
求解找到最优化问题或方程问题的解
提示
有关完整的工作流程,请参见基于问题的优化工作流或求解方程的基于问题的工作流.
例子
求解线性规划问题
求解一个由最优化问题定义的线性规划问题。
X = optimvar()“x”);Y = optimvar()“y”);Prob = 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”);
创建一个优化问题山峰
作为目标函数。
问题=最优问题“客观”山峰(x, y));
将约束作为不等式包含在优化变量中。
概率。约束条件= x^2 + y^2 <= 4;
设置初始点x
到1和y
到-1,然后解题。
x0。x=1;x0。y=1;Sol = solve(prob,x0)
使用fmincon解决问题。找到满足约束的局部最小值。由于目标函数在可行方向上不减小,优化完成到最优性容限范围内,约束满足到约束容限范围内。
索尔=带有字段的结构体:X: 0.2283 y: -1.6255
不支万博1manbetx持的功能fcn2optimexpr
如果您的目标函数或非线性约束函数不完全由初等函数组成,则必须使用fcn2optimexpr
.看到将非线性函数转换为优化表达式和万博1manbetx支持的变量和表达式优化操作.
转换现在的例子:
conpeaks = fcn2optimexpr(@peaks,x,y);概率。目标=凸;Sol2 = solve(prob,x0)
使用fmincon解决问题。找到满足约束的局部最小值。由于目标函数在可行方向上不减小,优化完成到最优性容限范围内,约束满足到约束容限范围内。
sol2 =带有字段的结构体:X: 0.2283 y: -1.6255
版权所有:The MathWorks, Inc。
从初始点出发求解混合整数线性规划
比较在有和没有初始可行点的情况下解决整数规划问题的步骤数。该问题有8个整数变量和4个线性等式约束,并且所有变量都被限制为正。
Prob = 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 14 29 27 30 38 26 26 41 26 28 36 18 38 16 26];Beq = [7872 10466 11322 12058];*x == q;probe . constraints .cons = cons;
创建一个目标函数,并将其包含在问题中。
F = [2 10 13 17 7 5 7 3];概率。目标= f*x;
在不使用初始点的情况下解决问题,并检查显示以查看分支和绑定节点的数量。
[x1,fval1,exitflag1,output1] = solve(prob);
使用intinprog解决问题。LP:最优目标值为1554.047531。切割生成:应用8强CG切割。下界是159100万。分支和边界:节点总数int整数相对探索时间(s)解值间隙(%)10000 0.42 0 - - 18025 0.71 1 2.906000e+03 4.509804e+01 21857 0.90 2 2.073000e+03 2.270974e+01 23544 0.97 3 1.854000e+03 1.180593e+01 24097 1.00 3 1.854000e+03 1.617251e+00 24293 1.01 3 1.854000e+03 1.617251e+ 03 0.000000e+00找到最优解。intinprog停止是因为目标值在一个间隙公差范围内的最优值,选项。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。
为了比较,使用初始可行点找到解。
x0。x=[8 62 23 103 53 84 46 34]'; [x2,fval2,exitflag2,output2] = solve(prob,x0);
使用intinprog解决问题。LP:最优目标值为1554.047531。切割生成:应用8强CG切割。下界是159100万。相对差距为59.20%。分支和边界:节点总数int整数相对探索时间(s)解值间隙(%)3627 0.22 2 2.154000e+03 2.593968e+01 5844 0.32 3 1.8554000e +03 1.180593e+01 6204 0.34 3 1.8554000e +03 1.455526e+00 6400 0.35 3 1.8554000e +03 0.000000e+00找到最优解。intinprog停止是因为目标值在一个间隙公差范围内的最优值,选项。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。
流(在没有初始点的情况下,求解需要%d步。对于初始点,求解需要%d步。、output1.numnodes output2.numnodes)
在没有初始点的情况下,求解需要24293步。对于初始点,solve需要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);问题=最优问题“客观”山峰(x, y));Xval = -10:10;Yval = (-5:5)/2;[x0x,x0y] = meshgrid(xval,yval);峰值=峰值(x0x,x0y);
中的值传递x0
用optimvalues
.这节省了时间解决
,因为解决
不需要计算值。将值作为行向量传递。
X0 = optimvalues(prob;“x”x0x(:)”,“y”x0y(:)”,…“客观”, peaksvals(:)”);
使用解决问题surrogateopt
初始值。
[sol,fval,eflag,output] = solve(prob,x0,Solver=“surrogateopt”)
使用替代选择解决问题。
surrogateopt停止了,因为它超出了'options.MaxFunctionEvaluations'设置的函数计算限制。
索尔=带有字段的结构体:X: 0.2283 y: -1.6256
Fval = -6.5511
eflag = SolverLimitExceeded
输出=带有字段的结构体:Elapsedtime: 45.5839 funccount: 200 constrviolation: 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;prob = optimproblem(目标=peaks(x,y));Opts = optimoptions(“fmincon”显示=“没有”);[sol,fval] = solve(prob,x0,Options=opts)
索尔=带有字段的结构体:X: -3.3867 y: 3.6341
Fval = 1.1224e-07
试着找到一个更好的解决方案GlobalSearch
解算器。这个求解器运行fmincon
多次,这可能会产生更好的解决方案。
ms = GlobalSearch;[sol2,fval2] = solve(问题,x,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);Prob = 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”,“显示”,“关闭”);Sol =解(问题);“选项”选项)
索尔=带有字段的结构体:X: [2x1倍]x3: 1
检查解决方案。
sol.x
ans =2×10 5.5000
sol.x3
Ans = 1
使用intlinprog
求解一个线性规划
力解决
使用intlinprog
作为线性规划问题的求解器。
X = optimvar()“x”);Y = optimvar()“y”);Prob = 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”)
使用intinprog解决问题。LP:最优目标值为-1.111111。找到最优解。没有指定整数变量。inlinprog解决了线性问题。
索尔=带有字段的结构体:X: 0.6667 y: 1.3333
返回所有输出
求解中描述的混合整数线性规划问题用非默认选项求解整数规划问题并检查所有输出数据。
X = optimvar()“x”、2、1,下界的, 0);X3 = optimvar(“x3”,“类型”,“整数”,下界的0,“UpperBound”1);Prob = 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)
使用intinprog解决问题。LP:最优目标值- 12000000。找到最优解。Intlinprog停止在根节点,因为目标值在最优值的容差范围内,选项。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。
索尔=带有字段的结构体:X: [2x1倍]x3: 1
Fval = -12
exitflag = OptimalSolution
输出=带有字段的结构体:relativegap: 0 absolutegap: 0 numfeaspoints: 1 numnodes: 0 constrviolation: 0 message: 'Optimal solution found.... .求解器:intlinprog
对于没有任何整数约束的问题,您还可以获得非空拉格朗日乘子结构作为第五个输出。
查看带有索引变量的解决方案
使用命名索引变量创建并解决一个优化问题。问题是在加权流量的约束下,最大化水果到各个机场的利润加权流量。
rng (0)%为了重现性P = optimproblem()“ObjectiveSense”,“最大化”);Flow = optimvar(“流”,…{“苹果”,“橘子”,“香蕉”,“浆果”}, {“纽约”,“bo”,“宽松”},…下界的0,“类型”,“整数”);p.目标= sum(sum(rand(4,3).*flow));p.Constraints.NYC = rand(1,4)*flow(:,“纽约”) <= 10;p.Constraints.BOS = rand(1,4)*flow(:,“bo”) <= 12;p.Constraints.LAX = rand(1,4)*flow(:,)“宽松”) <= 35;Sol = solve(p);
使用intinprog解决问题。LP:最优目标值为-1027.472366。启发式:使用ZI round找到1个解决方案。上限是-1027.233133。相对差距为0.00%。找到最优解。Intlinprog停止在根节点,因为目标值在最优值的容差范围内,选项。AbsoluteGapTolerance = 0(默认值)。intcon变量是公差范围内的整数,选项。IntegerTolerance = 1e-05(默认值)。
找到最佳的橙子和浆果流到纽约和洛杉矶。
[idxFruit,idxAirports] = findinindex(流量,{“橘子”,“浆果”}, {“纽约”,“宽松”})
idxFruit =1×22 4
idxAirports =1×21 3
orangeBerries = sol.flow(idxFruit, idxAirports)
orangeBerries =2×2980.0000 70.0000
这个显示意味着没有橙子会纽约
70个浆果纽约
980个橙子将会宽松的
,没有浆果宽松的
.
列出以下最优流程:
果机场
----- --------
浆果纽约
苹果BOS
橙子松懈
Idx = findinindex(流量,{“浆果”,“苹果”,“橘子”}, {“纽约”,“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;
创建一个方程问题,并将方程放入问题中。
问题=问题;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解题。方程解决。求解完成是因为函数值的向量通过函数容差值测量接近于零,并且通过梯度测量问题呈现规则性。
索尔=带有字段的结构体:X: [2x1倍]
fval =带有字段的结构体:Eq1: -2.4070e-07 eq2: -3.8255e-08
exitflag = EquationSolved
查看解决方案点。
disp (sol.x)
0.3532 - 0.6061
不支万博1manbetx持的功能fcn2optimexpr
如果您的方程函数不是由初等函数组成,则必须使用fcn2optimexpr
.对于本例:
ls1 = fcn2optimexpr (@ (x) exp (exp (- x (x (1) + (2)))), x);Eq1 = ls1 == x(2)*(1 + x(1)^2)ls2 = fcn2optimexpr (@ (x) x (1) * cos (x (2)) + x (2) * sin (x (1)), x);Eq2 = ls2 == 1/2;
输入参数
概率
- - - - - -优化问题或方程问题
OptimizationProblem
对象|EquationProblem
对象
优化问题或方程问题,指定为OptimizationProblem
对象或EquationProblem
对象。创建一个优化问题,使用optimproblem
;创建一个方程问题,使用eqnproblem
.
警告
基于问题的方法不支持目标函数中的复数值、非线性等式或非线性不等式。万博1manbetx如果函数计算具有复杂值,即使作为中间值,最终结果也可能是不正确的。
例子:Prob = optimproblem;概率。目标= obj;prob.Constraints。con1 = con1;
例子:问题=问题;概率。方程=等式;
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
对象
多个启动求解器,指定为aMultiStart
(全局优化工具箱)对象或GlobalSearch
(全局优化工具箱)对象。创建女士
使用MultiStart
或GlobalSearch
命令。
目前,GlobalSearch
万博1manbetx只支持fmincon
局部求解器,和MultiStart
万博1manbetx只支持fmincon
,fminunc
,lsqnonlin
当地的解决者。
例子:ms = MultiStart;
例子:ms = GlobalSearch(FunctionTolerance=1e-4);
名称-值参数
指定可选的参数对为Name1 = Value1,…,以=家
,在那里名字
是参数名和吗价值
是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字
在报价。
例子:解决(问题提出,“选项”,选择)
MinNumStartPoints
- - - - - -的最小起始点数MultiStart
20.(默认)|正整数
的最小起始点数MultiStart
(全局优化工具箱),指定为正整数。此参数仅在调用时适用解决
使用女士
论点。解决
中的所有值x0
作为起点。如果MinNumStartPoints
大于中值的个数x0
,然后解决
在问题范围内均匀随机地生成更多的起始点。如果一个组件是无界的,解决
使用默认的人工边界生成点MultiStart
.
例子:解决(问题,x0,女士,MinNumStartPoints = 50)
数据类型:双
选项
- - - - - -优化选项
创建的对象optimoptions
|选择结构
创建的对象指定的优化选项optimoptions
或选项结构,例如由创建的optimset
.
在内部,解决
函数调用相关求解器,详细信息见“规划求解”
参数的参考。确保选项
与求解器兼容。例如,intlinprog
不允许选项是一个结构,和lsqnonneg
不允许选项是对象。
有关选项设置的建议,以改善intlinprog
解或解的速度,参见整型线性规划.为linprog
,默认值对偶单纯形的
算法通常具有内存效率高、速度快的特点。偶尔,linprog
解决一个大问题的速度更快算法
选择是“内点”
.有关改进非线性问题解决方案的选项设置建议,请参见常用选项:调优和故障排除和改善结果.
例子:options = optimoptions('intlinprog','Display','none')
解算器
- - - - - -优化解算器
“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) | |
混合整数非线性规划 | 遗传算法 (全局优化工具箱) |
多目标 | 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表示不可用的求解器。
万博1manbetx支持的方程求解器
方程类型 | 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”
(如有可能,使用forward AD),自动翻转的
(如果可能的话,使用反向AD),或者有限差分的
(不要使用AD)。选择包括汽车
在支持目标函数的情况下,使底层求解器在求解问题时使用梯度信息,如万博1manbetx万博1manbetx支持的变量和表达式优化操作.使用示例请参见自动微分在基于问题的优化中的作用.
解算器默认选择以下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”
(如有可能,使用forward AD),自动翻转的
(如果可能的话,使用反向AD),或者有限差分的
(不要使用AD)。选择包括汽车
在支持约束函数的情况下,使底层求解器在求解问题时使用梯度信息,如万博1manbetx万博1manbetx支持的变量和表达式优化操作.使用示例请参见自动微分在基于问题的优化中的作用.
解算器默认选择以下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”
(如有可能,使用forward AD),自动翻转的
(如果可能的话,使用反向AD),或者有限差分的
(不要使用AD)。选择包括汽车
在支持方程函数的情况下,使底层求解器在求解问题时使用梯度信息,如万博1manbetx万博1manbetx支持的变量和表达式优化操作.使用示例请参见自动微分在基于问题的优化中的作用.
解算器默认选择以下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 = evaluate(probo . objective,sol)
如果物镜被定义为只有一个字段的结构,
fval = evaluate(probe . objective . objectivename,sol)
如果目标是包含多个字段的结构,则编写循环。
fnames = fields(probs . equations);为i = 1:length(fnames) fval.(fnames{i}) = evaluate(probs . equations .(fnames{i}),sol);结束
exitflag
-原因解算器停止了
枚举变量
解算器停止的原因,作为枚举变量返回。你可以转换exitflag
到它的数值等价物双(exitflag)
,并将其转换为等效的字符串字符串(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”
用于正向自动分异“有限差分”
对于有限差分估计“封闭”
对于线性或二次函数
λ
-解处的拉格朗日乘数
结构
解的拉格朗日乘数,作为一个结构返回。
请注意
解决
不返回λ
解决方程的问题。
为intlinprog
和fminunc
解决,λ
是空的,[]
.对于其他的解,λ
有这些字段:
变量
-包含每个问题变量的字段。每个问题变量名是一个包含两个字段的结构:较低的
-与变量相关的拉格朗日乘数下界
属性,作为与变量大小相同的数组返回。非零项意味着解在下界。这些乘数在结构中lambda.Variables。
.variablename
.Lower上
-与变量相关的拉格朗日乘数UpperBound
属性,作为与变量大小相同的数组返回。非零项意味着解在上界。这些乘数在结构中lambda.Variables。
.variablename
.Upper
约束
-为每个问题约束包含一个字段。每个问题约束都在一个结构中,该结构的名称是约束名称,其值是与约束大小相同的数字数组。非零项意味着约束在解处是有效的。这些乘数在结构中lambda.Constraints。
.constraintname
请注意
约束数组的元素都具有相同的比较值(
< =
,==
,或>=
),并且都是同一类型(线性、二次或非线性)。
算法
转换到求解器形式
在内部,解决
函数通过调用求解器来解决优化问题。有关问题的默认求解器和支持的求解器,请参阅万博1manbetx“规划求解”
论点。
之前解决
可以调用求解器,将问题必须转换成求解器形式,要么通过解决
或者其他一些相关的函数或对象。这种转换需要,例如,具有矩阵表示而不是优化变量表达式的线性约束。
算法的第一步是将优化表达式放入问题中。一个OptimizationProblem
对象具有其表达式中使用的变量的内部列表。每个变量在表达式中都有一个线性索引和一个大小。因此,问题变量具有隐含的矩阵形式。的prob2struct
函数执行从问题形式到求解形式的转换。使用示例请参见将问题转化为结构.
对于非线性优化问题,解决
使用自动分化计算目标函数和非线性约束函数的梯度。当目标函数和约束函数由万博1manbetx支持的变量和表达式优化操作不要使用fcn2optimexpr
函数。当自动微分不适用时,求解器使用有限差分估计导数。有关自动区分的详细信息,请参见自动鉴别背景.
对于默认和允许的解算器解决
调用,根据问题的目标和约束,见“规划求解”
.方法覆盖默认值“规划求解”
名称-值对参数解决
.
对于这个算法intlinprog
用于解决MILP问题,参见intlinprog算法.对于那些linprog
用于解决线性规划问题,参见线性规划算法.对于那些quadprog
用于解决二次规划问题,参见二次规划算法.有关线性或非线性最小二乘求解器算法,请参见最小二乘(模型拟合)算法.有关非线性求解器算法,请参见无约束非线性优化算法和约束非线性优化算法.
对于非线性方程的求解,解决
在内部将每个方程表示为左右两边的差。然后解决
试图最小化方程式各分量的平方和。有关求解非线性方程组的算法,请参见方程求解算法.当问题有边界时,解决
调用lsqnonlin
使方程式各分量的平方和最小。看到最小二乘(模型拟合)算法.
请注意
如果你的目标函数是平方和,你想解决
要识别它,把它写成either规范(expr) ^ 2
或总和(expr。^ 2)
,而不是expr‘* expr
或者其他形式。内部解析器只有在表示为范数的平方或显式平方和时才能识别平方和。有关详情,请参阅为基于问题的最小二乘编写目标函数.使用示例请参见非负线性最小二乘,基于问题.
自动分化
AD (Automatic differentiation)适用于解决
和prob2struct
在以下条件下发挥作用:
支持目标函数和约束函数,如万博1manbetx万博1manbetx支持的变量和表达式优化操作.它们不需要使用
fcn2optimexpr
函数。对于优化问题,
“ObjectiveDerivative”
和“ConstraintDerivative”
的名称-值对参数解决
或prob2struct
设置为“汽车”
(默认),“auto-forward”
,或自动翻转的
.对于方程问题,
“EquationDerivative”
选项设置为“汽车”
(默认),“auto-forward”
,或自动翻转的
.
AD应用时 | 支持的所有约束函数万博1manbetx | 不支持一个或多个约束万博1manbetx |
---|---|---|
目标功能支持万博1manbetx | AD用于目标和约束 | AD仅用于客观 |
目标功能不支持万博1manbetx | 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只适用于一阶导数;它不适用于二阶或更高阶导数。所以,例如,如果你想使用一个分析的Hessian来加速你的优化,你不能使用解决
,并且必须使用中描述的方法在基于问题的工作流中提供衍生品.
扩展功能
自动平行支撑万博1manbetx
通过使用并行计算工具箱™自动运行并行计算来加速代码。
解决
估计非线性解的并行导数,当UseParallel
选项为真正的
.例如,
选项= optimoptions(“fminunc”,“UseParallel”,真正的);[sol,fval] = solve(问题,x,x)“选项”选项)
解决
当所有目标和非线性约束函数仅由支持的操作组成时,不使用并行导数估计,如万博1manbetx万博1manbetx支持的变量和表达式优化操作.在这种情况下,解决
使用自动微分计算导数。看到自动分化.
,可以覆盖自动微分并并行使用有限差分估计“ObjectiveDerivative”
和“ConstraintDerivative”
参数有限差分的
.
当你指定全局优化工具箱支持并行计算的求解器(万博1manbetx遗传算法
(全局优化工具箱),particleswarm
(全局优化工具箱),patternsearch
(全局优化工具箱),surrogateopt
(全局优化工具箱)),解决
并行计算时UseParallel
选项为真正的
.例如,
选项= optimoptions(“patternsearch”,“UseParallel”,真正的);[sol,fval] = solve(问题,x,x)“选项”选项,“规划求解”,“patternsearch”)
版本历史
在R2017b中引入R2018b:解决(问题解决者)
,解决(问题、期权)
,解决(问题解决者,选项)
语法已被删除
从R2018b开始的错误
选择选项或底层求解器解决
,使用名称-值对。例如,
Sol =解(问题);“选项”选择,“规划求解”,“quadprog”);
以前的语法不像名称-值对那样灵活、标准或可扩展。
Abrir比如
Tiene una versión modificada de este ejemploo。是否对所有的修改进行了修改?
MATLAB编程
在MATLAB中,该函数对应于一个最基本的函数:
在MATLAB中,用MATLAB编写了仿真程序。Los navegadores web no admit commandos de MATLAB。
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。