Solvers Runtimes

Solvers and runtimes

A tutorial on available solvers and runtimes on Nextmv Platform.

The Nextmv Platform supports multiple solvers. This allows you to use the best solver for the problem at hand. The Platform includes integrations with third-party and in-house solvers, with more planned. Solvers are configured to execute in Nextmv Cloud via runtimes.

When an app is deployed, a runtime is provisioned for it. The runtime is configured on the app.yaml manifest that should be included in each app. These are the attributes of the app manifest:

  • type: the language type to use for the app.
    • sdk for Go
    • python for Python
    • java for Java
  • runtime: the runtime to use for the app. It should only be specified for Python and Java applications. Go apps use a default runtime.
  • features: the SDK features to enable for a Go app. It should only be specified for this type of app.
  • files: the files to include in the app. It should only be specified for Python and Java applications. Globbing is supported so you may specify individual files or whole directories. Java only supports a single main.jar file.

You can port any custom Python or Java app into the Nextmv Platform. You just need the app.yaml manifest in the root of the project with the appropriate attributes. The entrypoint of the app should be:

  • main.py for Python
  • main.jar for Java

If you need packages that are not already included in a runtime, please contact Nextmv support.

Here are various examples of app.yaml manifests present in our community apps:

# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: sdk
features:
  - sdk
  - mip-highs # Replace if using a different solver provider in your app.
Copy

Details on each solver and its corresponding runtime are provided below.

The runtimes are defined by Docker images. You may also pull these images down and use them for local dev, for example:

cat input.json | \
    docker run --rm -i -v $(pwd):/app ghcr.io/nextmv-io/runtime/ortools:latest \
    python main.py
Copy

nextroute

nextroute is a fast and powerful vehicle routing problem (VRP) solver included by default in the Nextmv SDK. nextroute gives you access to a variety of constraints and options that can be used to tailor the solver to your specific business needs. The Nextmv Routing marketplace app is also powered by nextroute.

Get started with nextroute here.

Available languages and corresponding runtime details:

  • Go

FICO Xpress

FICO Xpress

FICO Xpress is a commercial solver that can be used to solve large-scale linear (LP) and mixed integer problems (MIP), as well as non-linear problems.

Learn more about the FICO Xpress integration in the mixed integer programming section.

The FICO Xpress integration is available by request only at the moment. Contact Nextmv support to request access.

Available languages and corresponding runtime details:

  • Go

  • Python

    Python VersionSupported SolversSupported PackagesCommand to pull imageCLI Quickstart
    3.11
    • FICO Xpress Solver
    • xpress==9.2.0
    • numpy==1.26.3
    • scipy==1.11.2
    • pandas==2.1.4
    docker pull ghcr.io/nextmv-io/runtime/xpress:latestnextmv sdk init -t knapsack-xpress

HiGHS

HiGHS

HiGHS is a high performance serial and parallel open-source solver used for solving large-scale sparse linear programming (LP), mixed-integer programming (MIP) and quadratic programming (QP) models. When running locally, this solver is supported natively using Nextmv's Go SDK.

Learn more about the HiGHS integration in the mixed integer programming section.

Available languages and corresponding runtime details:

  • Go

OR-Tools

OR-Tools

OR-Tools is open-source solving technology designed to tackle the world’s toughest problems in vehicle routing, flows, integer and linear programming, and constraint programming. OR-Tools is supported using Python and must be run with the Python command directly when running locally. (as opposed to using the Nextmv SDK).

Learn more about the OR-Tools integration in the various sections such as vehicle routing, mixed integer programming and shift scheduling.

Available languages and corresponding runtime details:

  • Python

    Python VersionSupported SolversSupported PackagesCommand to pull imageCLI Quickstart
    3.11
    • CP-SAT
    • Glop
    • CBC
    • SCIP
    • Vehicle routing
    • Graph Algorithms (see pypi distribution for more info)
    • ortools==9.6.2534
    • numpy==1.26.3
    • scipy==1.11.2
    • pandas==2.1.4
    docker pull ghcr.io/nextmv-io/runtime/ortools:latest
    • nextmv sdk init -t shift-assignment-ortools
    • nextmv sdk init -t shift-planning-ortools
    • nextmv sdk init -t knapsack-ortools
    • nextmv sdk init -t routing-ortools
  • Java

    OpenJDK VersionSupported SolversCommand to pull imageCLI Quickstart
    22
    • CP-SAT
    • Glop
    • CBC
    • SCIP
    • Vehicle routing
    docker pull ghcr.io/nextmv-io/runtime/java:latest
    • nextmv sdk init -t knapsack-java-ortools

Pyomo

Pyomo

Pyomo is a Python-based, open-source optimization modeling language with a diverse set of optimization capabilities.

Lear more about the Pyomo integration in the mixed integer programming section.

Available languages and corresponding runtime details:

  • Python

    Python VersionSupported SolversSupported PackagesCommand to pull imageCLI Quickstart
    3.11
    • CBC
    • GLPK
    • pyomo==6.6.2
    • numpy==1.26.3
    • scipy==1.11.2
    • pandas==2.1.4
    docker pull ghcr.io/nextmv-io/runtime/pyomo:latest
    • nextmv sdk init -t shift-assignment-pyomo
    • nextmv sdk init -t shift-planning-pyomo
    • nextmv sdk init -t knapsack-pyomo

Page last updated

Go to on-page nav menu