2013-07-24 48 views
2

我需要最小化下面显示的目标函数,将绿色框中的变量引入到公式中,红色框中的变量需要进行优化,每个元素的起始值。迄今为止,优化不受限制。我把公式放在这里不是为了等待代码,而是为了对这个函数有一个想法。我到目前为止已经完成:我搜索线程,我试过一个玩具功能nlm命令:R中的多元非线性最小化

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

,但我不能为最佳(一)获得的价值,我怀疑我在公式中出现了一些错误,我将此公式作为处理下面公式的出发点。我正在寻找的是任何一个可以指向我将从R开始的适合R的函数。

The Obj. Function

回答

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 
+0

1,如果我想优化p的价值,以及什么情况下? 2 - 我可以使用nlm作为上面列出的函数,谢谢 – Athii

+0

'p'只是参数的起始值。如果函数接受更多参数,它可能是一个值的向量。您应该再次尝试阅读'nlm'的帮助页面并使用所有示例。 –

+0

这是否意味着(函数中的参数号)=(length(p))? – Athii

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)