Skip to main content

QP solver works in an unstable way.

Answered

Comments

4 comments

  • Official comment
    Simranjit Kaur
    Gurobi Staff Gurobi Staff
    This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?.
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    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
  • Hongyu Zhang
    Gurobi-versary
    First Comment
    First Question

    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
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    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

Post is closed for comments.