Introducing Veeroute

Veeroute is a cloud-based optimization engine that solves complex combinatorial problems.

This type of NP-complete problem is difficult – if not impossible – to solve with linear/mixed integer programming (LP/MIP). In fact, combinatorial problems often don’t have linear dependencies. This means we can’t use a set of linear equations to describe them. What’s more, it could take years, even centuries, to calculate the number of possible combinations.

As an example, let’s estimate how much time it will take to calculate all the combinations for a last mile delivery problem.



Let’s assume we have to deliver the goods to 3000 customers


1 = 10

1 trip allows us to deliver to 10 customers



Optimal trips to deliver the goods

Estimation of time to try all possible options:

  • The number of possible trips:
     = ~1.6 * 1028
  • The time to calculate all the options:
     = ~500 years

    Notice: for simplicity, let’s assume 1 calculation takes 1 operation on the supercomputer.

If you run this calculation today, you’ll get the result in 24th century.

With adding real world parameters, our problem’s complexity will grow exponentially.

  • time windows
  • shifts for drivers\vehicles
  • pick-up and drop-off locations
  • working requirements
  • traffic
  • road restrictions
  • cargo\vehicles dimensions
  • etc.

While combinatorial problems are complex, the time it takes to complete an optimization is an important consideration. The reason? In many cases, the optimization is part of a larger dynamic planning process. Imagine a company that needs to reschedule a trip or a production plan. If it continually must wait for an optimization to complete, their planning process will be essentially worthless.

If we add major requirements to the optimizer, we get the following list:

The level of detail

All else being equal, an optimization engine that takes more detail into account can solve more complex problems and provide more realistic results. Think of the problem definition we mention above. It doesn’t include real-world parameters such as time windows, shifts and compatibilities. Simply put, our results won’t be of much use.

Read more

Quality of results

The combinatorial optimizer must continually produce results that are close to optimal, if not optimal, for different datasets.


This is critical for many applications, especially for dynamic planning.

Ease of use

It should be quick and easy to integrate the solver with your IT infrastructure or third-party software.


The engine should allow you to adjust the mathematical core to address new problems and offer fine-tuning options that improve performance and quality.


The engine should be able to handle large problems and quickly increase its performance.

Please learn more , about how the solver addresses these requirements.