为什么optim()的结果取决于初始值?

Bio*_*roo 3 r mathematical-optimization

在R中,我使用函数optim()来查找两个变量的目标函数的最小值.我正在使用的真正目标函数非常复杂,所以我试着熟悉一个更简单的目标函数.运行optim()的最简单方法是optim(par,function),其中par是算法初始值的向量.我发现我得到的答案在很大程度上取决于我输入的初始值.但是,我使用的函数非常简单,我担心我误解了optim()的输入或输出.

我使用的目标函数是:

f <- function(x){
    abs(x[1])*abs(x[2])
}
Run Code Online (Sandbox Code Playgroud)

当我运行时optim(c(-1.2,1),f),optim(c(-1.2,10),f)我获得了最佳参数(par)和最小值(value)的完全不同的输出.有没有人知道为什么会这样?

MrF*_*ick 6

在这种情况下,您的目标函数具有无限多个最佳点(不一定只是不同的局部最大值).其中一个参数为零0 0与参数接近0的任何其他点一样好.我不确定您是否期望(0,0),但是(0,34)具有相同的值并且可以也被认为是最佳的.

目标函数