I would like to request some enhancements to the Gurobi Optimizer to improve visibility, performance, and general usability.
Upon process completion, users should be told the duration (in seconds) of the Optimizer job. Model builders can improve Optimizer processing time by changing the order and level of constraints, variables and objectives.That tuning is a trial-and-error process that currently requires process time data that isn't easily available without a support request. That information should be readily available to model builders.
Upon process completion, model builders should have the ability to view the decoded Optimizer log file. Gurobi support has told us that it is useful to know how processing time was divided between a) setting up the problem and b) solving the problem; that information is in the log file. I understand that Gurobi has the ability to report which constraints are, in fact, binding. I don’t know for sure yet, but that information may also be included in the log file. It would be useful to get deeper insight from the Gurobi engine rather than being told Success, Failed Infeasible, or Failed Time Out.
Model builders should have the ability to mark a constraint as a “Lazy Constraint” A lazy constraint is a constraint that is unlikely to be binding. When this information is included in the problem configuration, the Gurobi optimizer will then try to solve the problem without that constraint then test whether that constraint has, in fact, been violated in the solution. This can, in certain circumstances, improve performance.