是否有一种方法可以绘制正在使用scipy.optimize的差分进化优化的函数的累进值?在以下情况下,打印零件不起作用:
from scipy.optimize import rosen, differential_evolution
bounds = [(0, 5), (0, 5), (0, 5), (0, 5), (0, 5)]
result = differential_evolution(rosen, bounds, disp=False)
print(result.x, result.fun)
import matplotlib.pyplot as plt
x, f = zip(*result)
plt.plot(x, f)
注意:我最初回答这个问题时认为您想要优化器采用的路径,而不是优化过程中的值。我已经更新了答案,让它同时显示了这两个,但你可能只对第二个情节感兴趣
由
differential_evolution
返回的对象不包含指向结果的路径,也不包含沿途的值。但是,您可以使用callback
参数来提供在每次迭代时调用的callback function。然后,回调可以记录进度例如:
因为您似乎想要优化5D Rosenbrock函数,所以整个路径的可视化变得有点棘手。如果我选择仅可视化前两个坐标(+值,这是您实际询问的),即
我明白了
这个值,就是我刚刚意识到你实际上在问的,是底部的情节。如果不需要路径本身,请忽略代码中与
progress
有关的任何内容当然,您的结果可能看起来有所不同,因为我们的随机种子,因此我们走向最佳的路径,是不同的
相关问题 更多 >
编程相关推荐