Objective function tolerance
Answered(I see a lot of different parameters which sound like they might be what I need but I am not exactly sure.)
In my problem (which is MIP but also with bilinear constraints), the objective function is an approximation of what I really need with the error not exceeding 0.01 (which is fine for my purposes).
My guess that this is rather large and perhaps can help Gurobi to finish faster. In particular, if LP relaxation (or some other bound on the potential solution) in some node differ from the current best solution by less than 0.01, the node can be omitted.
My question is how to "tell" about this to Gurobi, i.e. which parameters/attributes to set and to what values?
P.S. My problem has the following size (taken from Gurobi log):
Presolve added 768 rows and 4096 columns
Presolve time: 0.10s
Presolved: 3605 rows, 8729 columns, 28601 nonzeros
Presolved model has 1152 SOS constraint(s)
Presolved model has 768 bilinear constraint(s)
Variable types: 5657 continuous, 3072 integer (3072 binary)
In fact, it doesn't find the optimum, I terminate it by setting the timeout.
-
To manage how you prune a node from a branch and bound tree you would need to define your own callback that would add a locally "valid" cutting plane that would render the node infeasible. For more information on callbacks, a good point would be to go through our examples, e.g.,
https://www.gurobi.com/documentation/9.0/examples/cb_py.html
You can also try your luck building a much more crude alternative to this using the Cutoff parameter,
https://www.gurobi.com/documentation/9.0/refman/cutoff.html
but you would need to solve your model in sort of "stop-and-go" mode, stopping the solution process from time to time, updating the Cutoff, and re-starting.
Hope this helps.
1 -
I will try my luck with callbacks :) Thanks!
0
Please sign in to leave a comment.
Comments
2 comments