I am working on reducing the solving time of the optimization problem I am working on. One of the ideas I am exploring is the usage of Lazy constraints. As solver, I am using Gurobi, so both pre-enumerated and callback lazy constraints are possible.
In all examples of lazy constraints I could find on Gurobi's website, and also in this StackExchange, the TSP is mentioned and the classic example is the sub-tour elimination constraints. However, for different kind of problems, how can I identify good "candidates" to be lazy constraints that can speed up the optimization? I guess the more a specific type of constraint appears is in the problem the better candidate it is. For instance, the sub-tour elimination constraints in the TSP are exponential, and that makes them very good candidates for being lazy constraints. Is there any other criterion to choose them?
And once I've identified them, assuming that I can enumerate all these constraints (which I can do for the problem that I am solving): is it better to use the callback approach or the enumeration one to add the lazy constraints?