我使用scipy.optimize.fmin
来优化Rosenbrock函数:
import scipy
import bumpy as np
def rosen(x):
"""The Rosenbrock function"""
return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
scipy.optimize.fmin(rosen, x0, full_output=True)
字符串
这将返回一个解的元组(最小化函数的参数、函数最小值、迭代次数、函数调用次数)。
但是,我希望能够在每一步的值图。例如,我将绘制迭代次数沿沿着的x轴和运行最小值沿沿着的y轴。
2条答案
按热度按时间vxbzzdmp1#
fmin可以接受一个可选的回调函数,它在每一步都被调用,所以你可以创建一个简单的函数来获取每一步的值:
字符串
输出量:
型
svgewumm2#
谢谢Randy的回答。
因为一些优化方法在调用回调函数时会发出更多的参数(例如:'trust-blog'),我发现这个解决方案更有效:
字符串
使用的例子是:
型