例如,此页面(http://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html)描述了可以传递给L-BFGS-B'的解算器选项。 scipy优化包的方法。我试图为某些方法(L-BFGS-B,Nelder-Mead,TNC)设置求解器出口容差。
我放'tol':0.001
但我不明白为什么解算器会停止与error = 0.49
收敛。
我认为容差是我的函数返回和容差值之间的差异。所以对我来说,如果误差低于0.001,求解器必须收敛,但对于error = 0.49
则不能!
如何设置收敛容差?使用特定选项,例如gtol
或ftol
?
非常感谢!
答案 0 :(得分:0)
这是我的代码:
P = minimize(Run_job_mini, [float(0.7),float(0.25), float(0.4)], args=('KM3.inp'), method="L-BFGS-B", tol = 0.001, bounds = bnds, options={'disp': True, 'ftol': 1e-7, 'gtol': 1e-3,'eps': 0.1})
其中Run_job_mini
是运行Abaqus并返回Error
的函数,其设置为Error = 0
为目标。
效果很好,没有错误消息。但我不明白为什么脚本会以Error = 0.49
停止。 tol
的含义是什么?我认为脚本必须以Error < tol