R中的多元非线性极小化

R中的多元非线性极小化,r,mathematical-optimization,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) fn=函数(x,a){sum

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

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

nlm(fn,a通常在参数列表中使用赋值运算符调用R函数会导致失败。在这方面,
我实际上建议不要将不需要优化的额外参数放入函数中。如果参数名称复杂,则更容易出错

我会像这样扭曲你的函数:

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

1-如果我还想优化p的值,该怎么办?2-我可以使用nlm实现上面列出的函数吗?谢谢
p
只是参数的起始值。如果函数接受更多参数,它可能是一个值向量。您应该再次尝试阅读
nlm
的帮助页面,并使用所有示例。这是否意味着(函数中的参数数量)=(长度(p))?对。在函数中表示这些参数的典型方式是p[1],p[2],…,p[n]。至于你的第二个问题,我真的不知道。其中有很多未定义的函数和值。你可能想看看“optimx”包,其中有很多优化器已经组装在一个屋顶下。对于上面的函数,还有一个问题,nlm是正确的开始方式吗?
> 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
fn = function(x,a) {sum(100*a+(2*x^2+5*x-7))}
f = function(x) {fn(x, 100)}
nlm(f, 10, hessian=TRUE)