为什么scipy.optimize.mminimize不使用提供的初始猜测

时间:2020-02-21 13:17:05

标签: python scipy-optimize-minimize

我有一个用python编写的应用程序,用于计算函数的最小返回值。我使用scipy.optimize.mminimize和SLSQP作为优化方法。 它运行在一个循环中,为了节省时间并从查找局部最小值的过程中消除它,我需要它使用我提供的x0。 问题似乎是它不在乎我给它的x0。它只是开始以随机值进行优化。我该怎么办?

我已经编写了一个小型测试应用程序来在最小化器上测试x0:

marginLeft:0,marginRight:0

1 个答案:

答案 0 :(得分:0)

首先,您的ObjectiveFunction()是不是错了?我怀疑应该是

def objectivefunction(x, *arg):
  SUM = 2*x[0]**3 + 3*(3-x[1])**2 - 5*x[2]**1 + 50
  return SUM

在原始函数中,未使用x [1],因此该算法对x [1]不敏感。

第二,在每次迭代之后调用callback()函数。因此,第一个输出不是初始条件,而是根据您的初始条件对最小值的第一个猜测。如果我运行正确的程序并更改初始条件,则会输出不同的猜测。但是对于具有相同初始条件的不同运行,它总是输出相同的猜测。没有随机性(假设我使用的是目标函数的正确版本)。