【发布时间】:2015-01-27 17:40:24
【问题描述】:
有没有办法让 scipy 优化模块使用更小的步长? 我正在使用大量变量(大约 40 个)优化问题,我认为这些变量接近最优值,但是当我运行 scipy 最小化模块(到目前为止,我已经尝试过 L-BFGS 和 CG)时,它们不会收敛,因为初始步长太大。
【问题讨论】:
标签: python optimization scipy
有没有办法让 scipy 优化模块使用更小的步长? 我正在使用大量变量(大约 40 个)优化问题,我认为这些变量接近最优值,但是当我运行 scipy 最小化模块(到目前为止,我已经尝试过 L-BFGS 和 CG)时,它们不会收敛,因为初始步长太大。
【问题讨论】:
标签: python optimization scipy
我相信 cobyla 是 scipy.optimize.minimize 中唯一支持这一点的技术。您基本上可以使用 rhobeg 参数控制其步长的大小。 (实际上不是步长,因为它是一种顺序线性方法,但它具有相同的效果。
【讨论】:
我有类似的问题,我使用 SLSQP 因为我需要边界。使用此求解器,选项 epsilon ('eps') 有助于以更好的步长收敛:
minimize(simulation, start_values, method='SLSQP', bounds = bnds, constraints = ({'type': 'ineq', 'fun': lambda x: const(x)}), options = {'eps': 1})
这不是理想的解决方案。
【讨论】: