An optimization problem arises every time there is a set of resources with limited capacity (e.g. production assets) and a set of constraints on how those resources could be utilized. The goal is to maximize the yield given the cost and the set of constraints. Constraints are usually related to some properties of a resource. A solution of the optimization problem depends on model formulation. It might be either expressed in the way those assets are allocated in space and / or time, or a traversal sequence, or overall return under contract constraints. Consider the following examples:
Depending on the nature of inputs and the choice of the model, the problem may be approached as either a linear, or quadratic, or the shortest path, or even a neural network. Sometimes, any (e.g. first found) feasible solution is sufficient, and the goal is to minimize the optimization time. Sometimes, the goal is to find the most optimal solution, under the given time constraint or MIP Gap. Sometimes, the goal is to provide the robustness of the solution under varying constraints.
A suitable and well-tuned model will become a competitive advantage for your business.
Usually a business department has a good idea of what inputs should be used in the model and which function should be optimized. Oftentimes there is an existing methodology and software to solve the problem with some degree of precision. However, it is either that the model is too rough, or there is no understanding on how to formulate certain constraints or input factors, how to approach a certain facet of the problem, or it is just that the current model cannot cope with the complexity to the degree you’d like it to, given your experience working with this model. Hence, the business incurs non-optimality costs. We believe this is exactly where we can bring value. We would listen, prototype and see if the model could be improved. And then we’d implement the solution that would fit into the existing software stack.
What also brings value is re-thinking of the existing model, formulating it from scratch given new factors or additional degrees of freedom to introduce, and bringing more understanding into it. Sometimes, this leads to the input factors being completely re-worked to meet the improved understanding of the model, and further model evolution.
We have benchmarked free solvers against "real life" problems and our experience shows that free solvers become unstable and very sensitive to small variations of constraints once the number of constraints and variables is in hundreds of thousands, not to say millions. They are often stuck at "infeasibility detected" and "singularity found" with no best bound improving; and there are often times there is no way to change how the solver approaches the problem.
Gurobi solver is optimally configured to tackle different sorts of problems, relying on heuristics algorithms to improve the solution should it get stuck. Also, Gurobi allows model solution strategy fine-tuning, allowing to switch between the focus on feasibility and the focus on optimality while searching for the solution. Gurobi offers a solid tool-set for solver configuration tuning.
That’s why we prefer to use Gurobi as our default solver.
Cloud optimization is needed when any of the factors below is important and defining:
We have experience with moving optimizaton onto Amazon Elastic Cloud (EC2).