I have a constrained minimization problem with around 1000 variables. Currently I'm using scipy's SLSQP routine:
x_min = scipy.optimize.minimize(energy, x0, method='SLSQP', jac=energy_grad,
args=(L, N, U, t, mu), constraints=cons)
(with constraints of the form x0[1,1]**2 + x0[1,2]**2 + ... + x0[1,N]**2 = 1
)
I had hoped providing the analytical form of the Jacobian would speed the process slightly (over calculating the derivatives numerically). However, when I compare the run times there seems to be no difference.