QP solver works in an unstable way.

Answered

Comments

3 comments

  • Jaromił Najman

    Hi,

    The number of nonzeros in the Barrier algorithm increases by 1 order of magnitude and the number of operations required to factor the \(AA^T\) matrix increases by 4 orders of magnitude from iteration 23 to iteration 24. This explains the increased computation time.
    This is very likely caused by numerical problems. The barrier algorithm is very prone to shaky numerics and the ranges of your coefficients are in \(\texttt{[3e-08,9e+04]}\). This is a range of 12 orders of magnitude(!), which means a very hard time for the barrier algorithm to work properly. You should have a look at the Guideline for Numerical Issues and try to rescale your model. This will very likely solve your problem.

    Crosspost to stackoverflow.

    Best regards,
    Jaromił

    1
    Comment actions Permalink
  • Hongyu Zhang

    Hi Jaromił Najman, 

    Thanks for your reply. I understood it should be numerical issues. I have read the numerical issues guideline, however, I think I cannot reformulate the model. I tried all parameters as well and they didn't work. I think another difference between these two iterations is dense column, in 23 we have 62 dense column but non in 24, it seems that Gurobi chose a different factorisation method in 24? 

    I think the major challenge in 24 is factorisation, is there any way to fix it to a certain method?

    I also checked my model and I don't even know where 3e-08 comes from, because all the parameters are in a reasonable range. Is there any way to locate where is this extremely small coefficient?

     

    Kind regards,

    Richard.

    0
    Comment actions Permalink
  • Jaromił Najman

    Hi Richard,

    How did you check your model? Did you use the Model.write() function in order to write an LP file and inspect it by hand? You can write an LP file before the optimization of each iteration. I don't think there is a better way other than fixing the coefficient ranges in order to make the barrier algorithm more stable.

    You could also try experimenting with the Presolve and PreSparsify parameters in order to reduce the number of nonzeros of your model.

    Best regards,
    Jaromił

    0
    Comment actions Permalink

Please sign in to leave a comment.

Powered by Zendesk