Python SLSQP最小化应该使用解析雅可比矩阵加速吗?

Python SLSQP最小化应该使用解析雅可比矩阵加速吗?,python,scipy,mathematical-optimization,quadratic-programming,Python,Scipy,Mathematical Optimization,Quadratic Programming,我有一个约1000个变量的约束最小化问题。目前我正在使用scipy的SLSQP例程: x_min = scipy.optimize.minimize(energy, x0, method='SLSQP', jac=energy_grad, args=(L, N, U, t, mu), constraints=cons) (约束形式为x0[1,1]**2+x0[1,2]**2+…+x0[1,N]**2=1) 我曾希望提供雅可比矩阵的

我有一个约1000个变量的约束最小化问题。目前我正在使用scipy的SLSQP例程:

x_min = scipy.optimize.minimize(energy, x0, method='SLSQP', jac=energy_grad,
                                args=(L, N, U, t, mu), constraints=cons)
(约束形式为
x0[1,1]**2+x0[1,2]**2+…+x0[1,N]**2=1


我曾希望提供雅可比矩阵的分析形式会稍微加快这一过程(在数值计算导数时过度)。但是,当我比较运行时间时,似乎没有什么不同。

这通常会带来一些性能优势,但多少取决于许多因素。相对于成本函数/约束,雅可比矩阵的评估频率是多少?相对于成本函数/约束,每次雅可比评估的成本有多高?您是否尝试过传递约束的分析雅可比矩阵?例如,您可能会花费几乎所有的时间来评估约束,因此您几乎看不到加速雅可比计算的好处。您肯定应该做出正确的选择。是的,分析梯度在可靠性和性能方面都有帮助。通常,强烈建议提供梯度。一些建模系统会自动区分,因此用户不必提供它们。