R中的多元非线性最小化

时间:2013-07-24 22:08:39

标签: r mathematical-optimization

我需要最小化下面显示的目标函数,绿色框中的变量将被引入公式,并且需要优化红色框中的变量,并且每个变量都有一个起始值。到目前为止,优化不受限制。我把公式放在这里不是为了等待代码,而是为了让响应能够了解函数。到目前为止我做了什么:我搜索了线程,我在玩具函数上尝试了nlm命令:

fn =function(x,a) {sum(100*a+(2*x^2+5*x-7))}
nlm(fn , a<-c(10),x<- c(100), hessian=TRUE)

但我无法得到最佳值(a),我怀疑我在公式中有一些错误,我使用这个公式作为解决下面公式的起点。我正在寻找的是任何人都可以指出我将从R开始的合适功能。

The Obj. Function

2 个答案:

答案 0 :(得分:2)

通常在参数列表中使用赋值运算符调用R函数将导致失败。这是<-=不同的一个领域。我不会想到这会起作用:

 nlm(fn , a =c(10), x = c(100), hessian=TRUE)  # and it didn't

错误消息提供信息,告诉您缺少参数p:

> fn =function(x,p) {sum(100*p[1]+(2*x^2+5*x-7))}
> nlm(fn , p=c(10),x = c(100), hessian=TRUE)
$minimum
[1] -4988507

$estimate
[1] -50090

$gradient
[1] 100

$hessian
     [,1]
[1,]    0

$code
[1] 5

$iterations
[1] 6

答案 1 :(得分:1)

我实际上建议不要将不需要的额外参数添加到您的函数中。如果你的参数名称复杂,那就容易搞砸了。

我会像这样扭曲你的功能:

fn = function(x,a) {sum(100*a+(2*x^2+5*x-7))}
f = function(x) {fn(x, 100)}
nlm(f, 10, hessian=TRUE)