如何在优化器[scipy.minimise('method ='SLSQP')]中获取成本函数的输出?

时间:2019-04-05 18:33:10

标签: python python-3.x

在运行scipy最小化优化器时,我可以使用优化结果的“ x”属性来获得优化解决方案。但是我也想获得成本函数的值(通过改变输入变量x使函数最小化)。

# Objective Function
def op_objective(x):
   mini = <some function of x>
   return mini

# Equality Constraint
def constraint1(x):
    return 1-sum(x)

# Initializing the constraint
con1 = {'type': 'eq', 'fun': constraint1}
cons = ([con1])

# Calling the optimizer
opt = minimize(op_objective,x0,method='SLSQP',bounds=bnds,constraints=cons)

# Optimized solution
sol = opt.x

现在的问题是如何获取捕获了“ x”值的“ mini”值。

运行最终值“ x”来确定“ mini”的值是一种选择,但由于这种方法很繁琐,因此正在寻找一种更直接的方法。

1 个答案:

答案 0 :(得分:0)

scipy.optimize.minimize带有一个回调函数,该函数在每次迭代时都会被调用,并且可以用于打印状态。

简单的示例:

f = lambda x: x**2
def callback(params): 
    print(f(params))
minimize(f, x0=np.array([10]), callback=callback)