Constraint type change performance


I have an application which solves a problem by iteratively calling on OSQP.
Between each iteration, some inequality constraints are set to equality constraints with osqp_update_bounds.

Surprisingly this bounds update was consuming more run time than solving. I tracked the cause down to the linear system solver update_rho_vec procedure, which is called when a constraint type changes.

To improve performance, I thought to bypass this constraint type change by loosening the equality constraints, adding a small value (1e-3) to the upper bound and subtracting it from the lower bound.

This improves performance substantially and appears to work, but is this safe to do in general? Can this impact solution quality in unexpected ways?


1 Like

I too encountered this, it would be very helpful if there was some guidance on how to handle the case when > becomes = in a performant manner