Hello there,
Please allow me to introduce myself. I am a PhD student at Stanford in the computer graphics group.
I am working on a sequential convex programming approach for a particular trajectory optimization problem. Since I will be repeatedly solving similar QPs, I would like to use the warm start capabilities of the SCS solver in cvxpy. This is why I'm experimenting with the SCS solver. However, during my initial experiments, I noticed that the solutions I get from SCS and ECOS for the same problem are quite different. As a baseline, I also solve the same problem by directly calling CVXOPT.
The CVXOPT and the ECOS solutions agree, and satisfy all the problem constraints. The SCS solution disagrees with both CVXOPT and ECOS, has a much better objective value, but significantly violates the equality constraints for the problem. I have set max_iters=5000 and eps=1e-6 when calling the SCS solver, which are more accurate than the default settings, and I still see this behavior in SCS.
This makes me think that there might be a bug in the SCS solver.
I'm attaching my problem data to this note. I'm also attaching a short self-contained Python script that calls each of the solvers, plots the solutions, and plots the residuals for all the constraints. Note that the residuals for the equality constraints when using CVXOPT and ECOS are always less than 1e-8. However, the residuals for the equality constraints when using SCS range from +0.2 to -0.2, indicating quite significant violations of the equality constraints.
Cheers,
Mike