Skip to main content

Gurobi stopping criteria

Comments

8 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?.
  • Yuriy Zinchenko
    Gurobi Staff Gurobi Staff

    Hello Dominique,

    1. I believe the residual values are unscaled, and

    2. the norm is simply the max (or \(\ell_{\infty}\)) norm.

    You can find a bit more info here,

    https://www.gurobi.com/documentation/9.1/refman/barrier_logging.html

    https://www.gurobi.com/documentation/9.1/refman/tolerances_and_user_scalin.html

     

    Hope this helps & you are doing well:)

    1
  • Dominique Orban
    Gurobi-versary
    First Question
    First Comment

    Thanks Yuriy! I'm well, thank you. I hope the same goes for you!

    Also, do we understand correctly from [4] that Gurobi doesn't scale the problem before solving? We're just trying to run fair benchmarks.

    Thanks again!

    [4] https://www.gurobi.com/documentation/9.1/refman/grb_tolerances_and_the_lim.html

    0
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Hi Dominique,

    Gurobi scales the problem before solving. The article [4] describes how to properly scale the problem before providing it to Gurobi to make the solver's life easier. You can turn off scaling with the ScaleFlag parameter. The objective scaling can be controlled with the ObjScale parameter.

    Best regards,
    Jaromił

    0
  • Yuriy Zinchenko
    Gurobi Staff Gurobi Staff

    Hi Dominique,

    sorry I have somehow missed your Q:( and thank you Jarek! (yes, we do scale)

    Wish you stay well in 2021!! (we are fine in Calgary, it is a bit cold now, about -30C, but no complains otherwise:))

    0
  • Geoffroy Leconte
    Gurobi-versary
    First Comment

    Hello,

    Following Dominique's question, I tried to solve problems without scaling. I set ScaleFlag to 0 and ObjScale to 1. However, when I access the DualResidual and ConstrResidual, I do not find the same values as the latest displayed by the Barrier Logging. Is this normal, or am I doing something wrong? (the crossover is deactivated)

    Best regards,

    Geoffroy

    0
  • Yuriy Zinchenko
    Gurobi Staff Gurobi Staff

    Hi Geoffroy,

    could you please elaborate on

    > I do not find the same values as the latest displayed by the Barrier Logging

    perhaps with the snapshot of the log, and a brief explanation on how check those internally?

     

    Thank you,

    0
  • Geoffroy Leconte
    Gurobi-versary
    First Comment

    Hi Yuriy,

    Thank you for your answer. Here is a snapshot of the log.

    Then, I check the ConstrResidual and DualResidual with GRBgetdblattr. The ConstrResidual value is 1.87e-12, and the DualResidual value is 1.43e-10, which are different than the latest values displayed by the Barrier logger.

    I deactivated Presolve, ScaleFlag, Crossover, and I set Objscale to 1 for this test.

    Best regards,

    Geoffroy

    0

Post is closed for comments.