The Nextmv Platform integrates with multiple solvers, solver interfaces (modeling), and data providers (both in-house and third-party). This allows you to use the best solution for the problem at hand.
Solvers and solver interfaces are configured to execute in Nextmv Cloud via runtimes. Data integrations can be specified with run configuration. Current supported integrations are listed in the tables below (with more planned).
Solvers
Provider | Description | Use with | Type |
---|---|---|---|
Nextroute | Fast and flexible vehicle routing problem (VRP) solver. | Go (Nextmv SDK) | Source-available (not open-source) |
Gurobi | Solver for large-scale linear and mixed integer problems. | Python | Commercial |
Hexaly | Solver for global optimization. | Python | Commercial |
Seeker | Heuristic solver that specializes in stochastic optimization. | Python | Commercial |
FICO Xpress | Solver for large-scale linear and mixed integer problems. | Go (Nextmv SDK), Python | Commercial |
HiGHS | Solver for linear and mixed integer problems. | Go (Nextmv SDK), Python | Open-source |
OR-Tools | Solver interface for vehicle routing, flows, and more. Included open-source solvers: CLP , GLOP , PDLP , SCIP . | Python, Java | Open-source |
Vroom | Vehicle routing solver. | Python | Open-source |
Solver interfaces
Provider | Description | Use with | Type |
---|---|---|---|
AMPL | Solver interface that integrates with most solvers. | Python | Commercial with open-source offering |
Pyomo | Open-source solver interface for linear and mixed integer programming. Included open-source solvers in remote environment: CBC , GLPK . | Python | Open-source |
PyOptInterface | Open-source solver interface for linear and mixed integer programming. | Python | Open-source |
The Pyomo and OR-Tools integrations support the specific solvers noted in the table and in the details for those integrations. If you would like to use a different solver (of any type, open source or commercial) with Pyomo or OR-Tools, or a different solver or solver interface that is not on the Nextmv Platform please contact Nextmv support.
Compatibility
All of the solvers we support are compatible with the following features of the Nextmv Platform:
- Running locally on your machine.
- Deploying to Nextmv Cloud.
- Running remotely on Nextmv Cloud.
- Testing and experimentation in Nextmv Cloud.
When working locally with the Nextmv Platform make sure all necessary assets are up to date by running the following command:
Languages
Considerations for each supported language are outlined in the following sections.
Go (Nextmv SDK)
Use a different solver with the SolverProvider
argument given to the NewSolver
function:
Use the correct app.yaml
manifest that specifies how to execute the app in the Cloud:
type
(do not modify this value): specifies that the app uses the Nextmv SDK.features
: a list of features that the app uses. At a minimum,sdk
must be set. Additionally, the solver-specific feature should be added.
When working with the Nextmv SDK there are options for controlling each solver specifically. Information about these options are included on the details page for each solver.
Python
Python runtimes have no access to network calls. This means that importing other packages or performing HTTP requests are actions not yet available. If you would like more Python packages to be supported in the runtime, please contact Nextmv support.
Make sure that the requirements described in the requirements.txt
file are installed when running locally.
Use the correct app.yaml
manifest that specifies how to execute the app in the Cloud.
type
(do not modify this value): specifies that the app uses Python instead of the Nextmv SDK.runtime
: specifies the docker runtime where the app is run. Please make sure that the runtime is one provided by Nextmv.files
: a list of all the files that should be included in the app. Globbing is supported, so you may specify individual files or whole directories. In a simple case, just themain.py
needs to be included.
Java
Make sure that you build a main.jar
, as the runtime only supports executing a single .jar
file. Run the following command:
Use the correct app.yaml
manifest that specifies how top execute the app in the Cloud.
type
(do not modify this value): specifies that the app uses Java instead of the Nextmv SDK.runtime
: specifies the docker runtime where the app is run. Please make sure that the runtime is one provided by Nextmv.files
: a list of all the files that should be included in the app. Currently, onlymain.jar
is supported.