Python 如何使用pymoo在算法的每次迭代中获得目标函数值和变量值?

Python 如何使用pymoo在算法的每次迭代中获得目标函数值和变量值?,python,optimization,Python,Optimization,我想在算法的每次迭代中得到目标和决策变量的值。有办法吗?我尝试使用历史记录,但它不包含值。我试图用pymoo解决一个单目标优化问题。这个目标函数就像一个黑箱函数,它不是一个很好的封闭形式 f = objective(x, fitted_model, lam) g1 = x[:, 0] - 3.5 g2 = 1.14 - x[:, 0] g3 = x[:, 1] - 103 g4 = 44.4 - x[:, 1] g5 = x[:, 2] - 107 g6 = 58.6 - x[:, 2] g7

我想在算法的每次迭代中得到目标和决策变量的值。有办法吗?我尝试使用历史记录,但它不包含值。我试图用pymoo解决一个单目标优化问题。这个目标函数就像一个黑箱函数,它不是一个很好的封闭形式

f = objective(x, fitted_model, lam)
g1 = x[:, 0] - 3.5
g2 = 1.14 - x[:, 0]
g3 = x[:, 1] - 103
g4 = 44.4 - x[:, 1]
g5 = x[:, 2] - 107
g6 = 58.6 - x[:, 2]
g7 = x[:, 3] - 223
g8 = 176.3 - x[:, 3]
g9 = x[:, 4] - 364.9
g10 = 325.9 - x[:, 4]
out["F"] = f
out["G"] = anp.column_stack([g1, g2, g3, g4, g5, g6, g7, g8, g9, g10])
现在我想在每次迭代中得到f和x的值

res = minimize(MyProblem(), algorithm, seed=1, save_history=True, verbose=True)

还有其他方法吗?

您可以使用历史记录或回调类()。历史记录包含算法对象的深层副本。对于大多数算法,您可以通过
algorithm.pop
访问总体,例如,通过
algorithm.pop.get('F')
访问目标值。您可以使用历史记录或回调类()。历史记录包含算法对象的深层副本。对于大多数算法,您可以通过
algorithm.pop
访问总体,例如,通过
algorithm.pop.get('F')
访问目标值。