scipy.optimize 显示所有迭代输入和输出值

fee*_*dMe 6 python optimization minimization scipy

我在用scipy.optimize.minimize从函数中找到最佳值。这是最简单的示例,使用内置 Rosenbrock 函数:

\n\n
>>> from scipy.optimize import minimize, rosen\n>>> x0 = [1.3, 0.7, 0.8, 1.9, 1.2]\n>>> # Minimize returns a scipy.optimize.OptimizeResult object...\n>>> res = minimize(rosen, x0, method='Nelder-Mead') \n>>> print res\n  status: 0\n    nfev: 243\n success: True\n     fun: 6.6174817088845322e-05\n       x: array([ 0.99910115,  0.99820923,  0.99646346,  0.99297555,  0.98600385])\n message: 'Optimization terminated successfully.'\n     nit: 141\n
Run Code Online (Sandbox Code Playgroud)\n\n

x只是最终的最佳输入向量。\xe2\x80\x8b我可以从返回的结果中获取所有迭代的列表(即具有相应输入向量的目标函数)scipy.optimize.OptimizeResult

\n

小智 0

是的,您可以添加可选参数'return_all'

例子:

from scipy.optimize import minimize

def f(params):
    x1, x2 = params
    f = 4 * ((x1**2+(10-x2)**2)**0.5 - 10)**2 \
    + (1/2)*((x1**2+(10+x2)**2)**0.5-10)**2 \
    -5*(x1+x2)
    return f

x0 = [-4, 4]

res = minimize(f, x0, method='CG', options={'return_all':True})

# This example returns all iteration.
Run Code Online (Sandbox Code Playgroud)