After close scaling and scaled_termination, my program be better, who can tell me why

I’m working on my program which is a smooth line program with osqp.
Actually, I used another qp lib before which is qpOASES, but I found my matrix have a lot of zero. So I try to use compressed sparse matrix for saving CPU cost. Then, I want to use osqp.
But, after changing the qp lib from qpOASES to osqp, I found that the unit test of my program failed. So I try to debug. I found that the output between them are quite different. After checking my own code, I confirm that the problem is from osqp.
I tried to change osqp’s parameters, but I didn’t known osqp’s mathematical principles, so it’s quite difficult…
Fortunately, I found if I change osqp’s parameters like that:
before:
settings->scaled_termination = true;
settings->scaling = 10;(default value)
after:
settings->scaling = 0;
settings->scaled_termination = false;

After these changes, the program can get same result with my old version which is solved with qpOASES and the unit test is also success.

I want to know why it happens, and what osqp do with these 2 parameters?

It is very difficult to say without seeing an example problem. The ‘scaling’ parameter gives the number of iterations of OSQPs pre-solve equilibration procedure, which is described in section 5 of the paper here: https://arxiv.org/pdf/1711.08013.pdf

By setting it to 0 you have just disabled that procedure, so the solver does not scale the problem data before solving. Normally scaling helps a bit (sometimes a lot) in reaching an optimal solution faster, but it is not guaranteed to do so. The 'scaled_termination" determines whether convergence checks are done w.r.t. the scaled version of the problem data or the original unscaled problem data. If scaling=0 anyway then it shouldn’t matter what you pick.