Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@



NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in linear programming (LP), quadratic programming (QP), and vehicle routing problems (VRP), with support for quadratically constrained quadratic programming (QCQP) (beta), second-order cone programming (SOCP) (beta), and mixed integer linear programming (MILP) (beta). It enables near real-time solutions for large-scale LPs with millions of variables and constraints. cuOpt offers easy integration into existing modeling languages and seamless deployment across hybrid and multi-cloud environments.
NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in linear programming (LP), quadratic programming (QP), and vehicle routing problems (VRP), with support for quadratically constrained quadratic programming (QCQP) (beta), second-order cone programming (SOCP) (beta), and mixed integer linear programming (MILP) (beta). cuOpt enables near real-time solutions for large-scale LPs with millions of variables and constraints and offers easy integration into existing modeling languages with seamless deployment across hybrid and multi-cloud environments.

The cuOpt MIP solver is in beta and under active development. The solver currently excels at finding high-quality feasible solutions quickly with GPU-accelerated primal heuristics. Proving feasible solutions optimal remains under active development.

It offers easy integration into existing solvers, and seamlessly extends into agent-first optimization workflows through open-source cuOpt agent skills.

The core engine is written in C++ and wrapped with a C API, Python API and Server API.

Expand Down
7 changes: 7 additions & 0 deletions docs/cuopt/source/cuopt-c/mip/index.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
MIP (Mixed Integer Programming)
================================

.. note::

The cuOpt MIP solver is in **beta** and under active development. The solver
currently excels at finding high-quality feasible solutions quickly with
GPU-accelerated primal heuristics. Proving feasible solutions optimal remains
under active development.

This section contains details on the cuOpt MIP C API.

.. toctree::
Expand Down
5 changes: 5 additions & 0 deletions docs/cuopt/source/cuopt-cli/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ Command Line Interface

The cuopt_cli is a command-line interface for LP/MILP solvers that accepts MPS, QPS, or LP format files as input models. The format is dispatched automatically from the file extension (case-insensitive): ``.lp`` (with optional ``.gz`` / ``.bz2``) goes to the LP parser, ``.mps`` / ``.qps`` (with optional ``.gz`` / ``.bz2``) goes to the MPS parser, and unknown extensions are rejected. It provides command-line arguments to control all solver settings and parameters when solving linear and mixed-integer programming problems.

The cuOpt MIP solver is in **beta** and under active development. The solver
currently excels at finding high-quality feasible solutions quickly with
GPU-accelerated primal heuristics. Proving feasible solutions optimal remains
under active development.

.. toctree::
:maxdepth: 3
:caption: Command Line Interface Overview
Expand Down
7 changes: 6 additions & 1 deletion docs/cuopt/source/cuopt-python/mip/index.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
MIP (Mixed Integer Programming)
================================

.. note:: Support for mixed integer linear programming is currently in **beta**.
.. note::

The cuOpt MIP solver is in **beta** and under active development. The solver
currently excels at finding high-quality feasible solutions quickly with
GPU-accelerated primal heuristics. Proving feasible solutions optimal remains
under active development.

This section contains details on the cuOpt MIP Python API.

Expand Down
9 changes: 9 additions & 0 deletions docs/cuopt/source/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,15 @@ Linear Programming FAQs
Mixed Integer Linear Programming FAQs
--------------------------------------

.. dropdown:: How do I run the MIP solver with cuOpt?

You can run the cuOpt MIP solver through the Python, C, CLI, or server APIs
by providing a model with integer or binary variables. The cuOpt MIP solver
is in **beta** and under active development. The solver currently excels at
finding high-quality feasible solutions quickly with GPU-accelerated primal
heuristics. Proving feasible solutions optimal remains under active
development.

.. dropdown:: What are the limitations of the MILP solver?

#. There is no inherit limit imposed on the number of variables, number of constraints, or number of non-zeros you can have in a MILP or LP, except the restrictions due to the number of bits in integer and the amount of memory in the CPU and GPU.
Expand Down
13 changes: 10 additions & 3 deletions docs/cuopt/source/introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,14 @@ All three algorithms can be run concurrently on both GPU and CPU, with the faste
Mixed Integer Linear Programming (MILP) (Beta)
==============================================

.. note:: Support for mixed integer linear programming is currently in **beta**.
.. note::

The cuOpt MIP solver is in **beta** and under active development. The solver
currently excels at finding high-quality feasible solutions quickly with
GPU-accelerated primal heuristics. Proving feasible solutions optimal remains
under active development.

A **Mixed Integer Linear Program** is a variant of a Linear Program where some of the variables are restricted to take on only integer values, while other variables can vary continuously. NVIDIA cuOpt uses a hybrid GPU/CPU method: running primal heuristics on the GPU and improving the dual bound on the CPU.
A **Mixed Integer Linear Program** is a variant of a Linear Program where some of the variables are restricted to take on only integer values, while other variables can vary continuously.

For example, consider the following system of constraints:

Expand All @@ -104,7 +109,9 @@ Although MILPs seems similar to a LPs, they require much more computation to sol
How cuOpt Solves the Mixed-Integer Linear Programming Problem
-------------------------------------------------------------

The MILP solver is a hybrid GPU/CPU algorithm. Primal heuristics including local search, feasibility pump, and feasibility jump are performed on the GPU to improve the primal bound. Branch and bound is performed on the CPU to improve the dual bound. Integer feasible solutions are shared between both algorithms.
The current MIP solver excels at finding high-quality feasible solutions quickly with GPU-accelerated primal heuristics. These GPU algorithms are designed to improve the quality of feasible solutions early in the solve.

cuOpt combines GPU-accelerated primal heuristics for improving the primal bound with traditional CPU algorithms such as cut and branch to improve the dual bound. Integer feasible solutions are shared between these components.


=============================
Expand Down
7 changes: 6 additions & 1 deletion docs/cuopt/source/milp-features.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ MILP Features
Availability
------------

The cuOpt MIP solver is in **beta** and under active development. The solver
currently excels at finding high-quality feasible solutions quickly with
GPU-accelerated primal heuristics. Proving feasible solutions optimal remains
under active development.

The MILP solver can be accessed in the following ways:

- **Third-Party Modeling Languages**: cuOpt's LP and MILP solver can be called directly from the following third-party modeling languages. This allows you to leverage GPU acceleration while maintaining your existing optimization workflow in these modeling languages.
Expand All @@ -21,7 +26,7 @@ The MILP solver can be accessed in the following ways:

- **As a Self-Hosted Service**: cuOpt's MILP solver can be deployed in your own infrastructure, enabling you to maintain full control while integrating it into your existing systems.

Each option provide the same powerful mixed-integer linear optimization capabilities while offering flexibility in deployment and integration.
Each option provides the same mixed-integer optimization capabilities while offering flexibility in deployment and integration.

Variable Bounds
---------------
Expand Down
5 changes: 5 additions & 0 deletions docs/cuopt/source/mip-settings.rst
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ access to the dual solution. Enabled by default for LP when Papilo presolve is s
Mixed Integer Linear Programming
---------------------------------

The cuOpt MIP solver is in **beta** and under active development. The solver
currently excels at finding high-quality feasible solutions quickly with
GPU-accelerated primal heuristics. Proving feasible solutions optimal remains
under active development.

We now describe parameter settings for the MILP solver.


Expand Down