为什么NLopt无法找到全局最小值?

时间:2018-04-16 14:56:04

标签: python nonlinear-optimization minimization nlopt

我使用NLopt(python包装器)进行Egg holder function的全局优化(范围x_i = [-512,512]。

我正在使用GN_ORIG_DIRECT梯度自由算法,这是一种全局优化算法。我发现我的优化停止在蛋持有者功能页面上提到的最小值(-935.337)接近全局最小值(谷值)(对于x,y = 512,404.2319,min = -959.647)。如果我使用任何随机猜测(远离或甚至接近全局最小值),算法将在-935.337处稳定下来。如果我使用接近全局最小值的初始猜测,但使用局部最小算法,则只有算法收敛到全局最小值。这表明该算法可以找到全局最小值。我不知道出了什么问题。我错过了什么吗?

图中的绿点(左)是全局最小值,靠近它的红点(右)是优化后找到的值。背景中的点是远离两者的初始猜测。

任何人都可以提出可能导致此类问题的原因吗?我没有使用任何约束。

感谢您的建议!

编辑:我尝试了其他1个变量函数,我可以找到最小值。我还尝试了Drop-Wave函数,算法收敛到了正确的值。

0 个答案:

没有答案