企業每天都會做出成千上萬的決策,包括生產什么、在哪里發貨、如何分配資源。大規模優化這些決策成為一項計算挑戰。線性規劃 (LP) 、混合整數規劃 (MIP) 和車輛路線規劃問題 (VRP) 提供了結構,但快速解決這些問題是瓶頸開始的地方。
NVIDIA cuOpt 為決策優化帶來 GPU 加速,可大幅加速現實世界中的 LP、MIP 和 VRP 工作負載。cuOpt 現已在 Apache 2.0 許可下以開源形式提供,使您能夠比以往更輕松地在本地或云端工作流中采用、調整和擴展優化。
對于開發者來說,最棒的部分是幾乎為零的建模語言更改。您可以將 cuOpt 應用到使用 PuLP 和 AMPL 構建的現有模型中,并且只需進行最少的重構。它快速、靈活,可隨時用于實驗或生產。
想要大規模查看 cuOpt 的實際應用情況?查看“強效助力優化:Artelys 如何由 FICO 和 NVIDIA 提供支持,展示了 cuOpt 在大規模單元占用問題上實現高達 20x 速度提升的作用。”
本文將介紹 cuOpt 如何在 PuLP 和 AMPL 等建模語言中,以幾乎為零的變化求解 LP 和 MIP。您將學習如何:
- 只需幾分鐘即可在本地或云端通過 Python、REST API 或 CLI 開始使用開源 cuOpt 優化
- 使用 cuOpt GPU 加速解決 VRP 問題
真實用例:大規模咖啡物流
想象一下全球咖啡連鎖店。每家商店每年需要數千包豆子。豆類經過采購、烘焙、包裝和運輸,每個階段都受到設施容量和動態需求的限制。如果烘焙工廠突然離線,供應鏈必須立即重新調配訂單并重新分配供應商。
添加交付?現在,您可以跨變更訂單和時間窗口引導駕駛員,同時遵守勞動規則和shift limits
這些是現實世界中的 LP、MIP 和 VRP 問題,而且它們在計算上難以快速解決。cuOpt 專為應對這種復雜性而構建。
快速開始:在幾分鐘內解決您的第一個問題
無論您是要優化供應鏈、安排生產還是規劃交付路線,cuOpt 都能提供多種快速入門方法。
cuOpt 服務器
此選項最適合 LP、MIP 和通過 REST 的 VRP。啟動支持所有問題類型的 REST API 服務器。
通過 pip 安裝:
pip install --extra-index-url=https: //pypi .nvidia.com cuopt-server-cu12==25.5.* cuopt-sh==25.5.* |
使用 Docker 運行 (包括 REST 和 client):
docker run --gpus all -it -- rm -p 8000:8000 -e CUOPT_SERVER_PORT=8000 nvidia /cuopt :latest-cuda12.8-py312 python3 -m cuopt_server.cuopt_service |
Python API
此選項最適合 VRP。使用 cuOpt 原生 Python API 進行編程控制和集成:
pip install --extra-index-url=https: //pypi .nvidia.com cuopt-cu12==25.5.* |
命令行界面
此選項最適合對 LP 和 MIP 進行基準測試。如果您有 MPS 格式的模型,請使用命令行界面 (CLI) 進行基準測試和自動化。
運行基準模型:
wget https: //plato .asu.edu /ftp/lptestset/ex10 .mps.bz2 bunzip2 ex10.mps.bz2 . /cuopt_cli ex10.mps |
此示例在 0.3 秒內解決了 NVIDIA H100 Tensor Core GPU 上具有超過 69 K 約束和 17 K 變量的 LP。
在云端試用 cuOpt
沒有本地 GPU?您可以從瀏覽器或在持久云環境中運行 cuOpt。
特征 | Google Colab | ? |
設置 | 無 | 一鍵啟動 |
GPU 訪問 | 是 (有限,免費) | 是 (完整的 GPU 實例) |
持久性環境 | 否 | 是 |
預加載配置 | 手動 | 自動 |
優化使用 | 演示和快速測試 | 完整的開發工作流程 |
模型更改最少:AMPL 和 PuLP 中的 LP 和 MIP
cuOpt 與 AMPL 和 PuLP 等建模語言集成。只需切換 solver,無需重寫。
示例 1:AMPL 和 cuOpt
. /ampl var x >= 0; var y >= 0; maximize objective: 5*x + 3*y; subject to c1: 2*x + 4*y >= 230; subject to c2: 3*x + 2*y <= 190; option solver cuoptmp; solve; display x, y; |
要切換到 MIP,請將變量聲明為 integer
。
示例 2:PuLP 和 cuOpt
import pulp model = pulp.LpProblem( "Maximize" , pulp.LpMaximize) x = pulp.LpVariable( 'x' , lowBound = 0 ) y = pulp.LpVariable( 'y' , lowBound = 0 ) model + = 5 * x + 3 * y, "obj" model + = 2 * x + 4 * y > = 230 model + = 3 * x + 2 * y < = 190 model.solve(pulp.CUOPT()) |
切換到 MIP:
x = pulp.LpVariable( 'x' , lowBound = 0 , cat = "Integer" ) y = pulp.LpVariable( 'y' , lowBound = 0 , cat = "Integer" ) |
使用 cuOpt 客戶端解決 VRP 問題
cuOpt 通過 Python 或 REST 使用結構化 JSON 輸入求解 VRPs:
工作流程示例:
from cuopt_sh_client import CuOptServiceSelfHostClient import json cuopt_service_client = CuOptServiceSelfHostClient(ip = "localhost" , port = 5000 ) optimized_routes = cuopt_service_client.get_optimized_routes(json_data) print (json.dumps(optimized_routes, indent = 4 )) |
如需了解更多信息,請訪問 GitHub 上的 NVIDIA/cuopt-examples。
輸出示例:
"num_vehicles": 2, "solution_cost": -435.0, "vehicle_data": { "Car-A": {"task_id": [...],"arrival_stamp": [...]}, "Bike-B": {"task_id": [...],"arrival_stamp": [...]} }, "total_solve_time": 10.7 |
cuOpt 是物流或調度系統的理想選擇,可返回經過優化的路線、成本和任務級別的任務。
開始使用開源優化
了解如何開始使用 NVIDIA cuOpt,將 GPU 加速引入現有的優化堆棧 – 無需供應商鎖定,無需重寫,只需更快地解決即可。此優化采用 GPU 原生、開發者優先且專為擴展而構建。主要優勢包括:
- 速度:借助 GPU 加速,將解決 LP/MIP/VRP 問題的速度提高 10 倍到 5,000 倍
- 簡便性:插入到 PuLP 和 AMPL 等建模語言中,且更改最少
- 靈活性:選擇適合的接口 – REST、Python 或 CLI
- 模塊化:適用于您的堆棧,可根據您的需求進行擴展
- 開放:Apache 2.0 許可,包含 GitHub 資源庫、示例和文檔 – 開箱即用或 fork,可針對您的域進行自定義
- 隨時可用:立即在 Google Colab 或 NVIDIA Launchable 中啟動
- 支持:借助 NVIDIA AI Enterprise 在生產環境中運行 – 包括安裝協助、升級和專家支持
NVIDIA cuOpt 現在也可在開源運營研究工具中心的 coin-or/cuopt GitHub 庫中使用。在此之前,COIN-OR 和 NVIDIA 最近宣布了合作,進一步增強了優化開發者的生態系統。作為 COIN-OR 的一部分,cuOpt 可以更輕松地發現、擴展,并與其他開源求解器一起使用。
加入開源社區,借助完全可控性和靈活性,幫助塑造實時、智能決策優化的未來。
?