我有一个用python编写的应用程序,用于计算函数的最小返回值。我使用scipy.optimize.mminimize和SLSQP作为优化方法。 它运行在一个循环中,为了节省时间并从查找局部最小值的过程中消除它,我需要它使用我提供的x0。 问题似乎是它不在乎我给它的x0。它只是开始以随机值进行优化。我该怎么办?
我已经编写了一个小型测试应用程序来在最小化器上测试x0:
marginLeft:0,marginRight:0
答案 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()函数。因此,第一个输出不是初始条件,而是根据您的初始条件对最小值的第一个猜测。如果我运行正确的程序并更改初始条件,则会输出不同的猜测。但是对于具有相同初始条件的不同运行,它总是输出相同的猜测。没有随机性(假设我使用的是目标函数的正确版本)。