在 R 中,我使用函数 optim() 来查找两个变量的目标函数的最小值。我正在使用的真正目标函数非常复杂,所以我试图让自己熟悉一个更简单的目标函数。运行 optim() 的最简单方法是 optim(par,function),其中 par 是算法的初始值向量。我发现我得到的答案很大程度上取决于我输入的初始值。但是,我使用的函数太简单了,我担心我误解了 optim() 的输入或输出。
我使用的目标函数是:
f <- function(x){
abs(x[1])*abs(x[2])
}
当我运行
optim(c(-1.2,1),f)
和 optim(c(-1.2,10),f)
时,对于最佳参数(par)和最小值(value),我得到了截然不同的输出。有谁知道为什么会这样? 最佳答案
在这种情况下,您的目标函数具有无限多个最佳点(不一定只是不同的局部最大值)。参数之一为零的任何地方 0 与参数接近 0 的任何其他点一样好。我不确定您是否期望 (0,0),但 (0,34) 具有相同的值并且可以也被认为是最优的。
关于r - 为什么 optim() 的结果取决于初始值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23796407/