• we solve optimization problems for business

    Allocating and managing production assets optimally while lowering the costs is crucial for a business. We solve mathematical optimization problems so that you could make the most of your business
  • We use Gurobi - the best-in-class solver

    As a Gurobi Ready Partner, we use Gurobi as a preferred solver on our projects. Our experience and the access to Gurobi's pool of expertise empowers us to set up models and tune performance in a better and more efficient way
  • Cloud-based distributed optimization

    Moving optimization routines to the cloud makes it more scalable and robust
  • 1
  • 2
  • 3
  • Solving optimization problems
  • Optimization projects and Gurobi
  • Cloud optimization

Solving optimization problems


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:

  • vessel fleet allocation under time, capacity and geographical constraints to maximize the return given operation and transition costs. This is a typical example of a transportation (allocation) problem.
  • finding an optimal number and distance of oil warehouses
  • solving for an optimal portfolio of stocks (a point on the efficient frontier)
  • working out the best combination of the price and the selling volumes, under price (contract) and volume constraints.

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.

Optimization projects and Gurobi


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

Cloud optimization is needed when any of the factors below is important and defining:

  • when the usage pattern of optimization suite is uncertain, so there is no way of telling which hardware configuration would be needed
  • when there is a need to dynamically scale the capacity of optimization routines when needed
  • when the robustness of the solution is very important. Sometimes, depending on the nature of constraints, the solution progress may be very sensitive to even small changes in constraints. In that case, slightly changing the way the model is approached by the solver may lead to significantly improved best bound or solution time. To do that, the distributed optimization comes to the rescue. One of the ways to ensure the required capacity is to do optimization in the cloud.

We have experience with moving optimizaton onto Amazon Elastic Cloud (EC2).