Matlab等效于Excel Solver的以下input设置
对于Excel求解器input,我已经设置
设置对象单元:$ A $ 1(即可以是18)
致:Min
通过更改variables$ B $ 1
使非约束variables非负数被检查:
求解方法:非线性
我在这里不是math专家,但我正在试图确定我应该使用哪一个无约束最小化函数? 它看起来像fminunc的问题是:
- 我只是在objfun中使用Matlab min函数
(如http://www.mathworks.com/help/optim/ug/fminunc-unconstrained-minimization.html所述 ) -
将
fminunc(@objfun,x0)
如果xo等于$ B $ 1,就像在上面的Excel求解器中一样?
我会假设没有任何额外的select,以获得所需的结果。 至less我没有看到控制负面产出的任何select。
这听起来正确吗? 谢谢
关于非负输出,这是一个约束,因此你不应该使用无约束求解器(即fminunc
),而是可以处理约束(即使用fmincon
):
你的约束是一个下界,所以你使用这种forms的fmincon
:
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
你对lb
参数的下限感兴趣,所以你可以这样称呼fmincon
:
x = fmincon(fun, x0, [], [], [], [], 0, Inf)
在Excel中调用求解器之前, x0
应等于单元格$B$1
的值。
对于目标函数,您不要 在Matlab中使用min
函数 , fmincon
将固有地尝试并最小化您的目标函数,这与在Excel求解器中勾选最小值框相同。 你的目标函数是单元$A$1
中的函数,但是作为x
一个函数而不是$B$1
。
所以,让我们说在单元格$A$1
你试图最小化函数=$B$1^2 + 10
,然后在Matlab中,你需要像这样定义你的函数(使用匿名函数是最简单的,你可以使用函数.m文件相反,如果function更复杂):
fun = @(x)(x.^2 + 10)