在运行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”的值是一种选择,但由于这种方法很繁琐,因此正在寻找一种更直接的方法。
答案 0 :(得分:0)
scipy.optimize.minimize
带有一个回调函数,该函数在每次迭代时都会被调用,并且可以用于打印状态。
简单的示例:
f = lambda x: x**2
def callback(params):
print(f(params))
minimize(f, x0=np.array([10]), callback=callback)