選項
首頁首頁 Skill API開發 cuopt-server-api-python

cuopt-server-api-python

NVIDIA/skills NVIDIA/skills

部署一個 cuOpt REST 伺服器,並使用 Python 或 curl 解決路由優化問題。

...展開全部
5
更新時間 2026-09-25

cuOpt 伺服器 — 部署與客戶端(Python/curl)

本技能涵蓋啟動伺服器及 客戶端範例(curl、Python)。伺服器沒有獨立的 C 語言 API(客戶端可採用任何程式語言)。

啟動伺服器

# 開發環境
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000

# Docker
docker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000 \
  nvidia/cuopt:latest-cuda12.9-py3.13

驗證

curl http://localhost:8000/cuopt/health

工作流程

  1. 向/cuopt/request發送 POST 請求 → 取得reqId
  2. 持續輪詢/cuopt/solution/{reqId}直到解決方案準備就緒
  3. 解析回應

Python 客戶端(路由)

import requests, time
SERVER = "http://localhost:8000"
HEADERS = {"Content-Type": "application/json", "CLIENT-VERSION": "custom"}
payload = {
    "cost_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "travel_time_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "task_data": {"task_locations": [1, 2], "demand": [[10, 20]], "task_time_windows": [[0,100],[0,100]], "service_times": [5, 5]},
    "fleet_data": {"vehicle_locations": [[0, 0]], "capacities": [[50]], "vehicle_time_windows": [[0, 200]]},
    "solver_config": {"time_limit": 5}
}
r = requests.post(f"{SERVER}/cuopt/request", json=payload, headers=HEADERS)
req_id = r.json()["reqId"]
# 查詢:GET /cuopt/solution/{req_id}

術語說明:REST 與 Python API

Python API REST
order_locations 任務位置
set_order_time_windows() 任務時間區間
服務時間 服務時間

請使用travel_time_matrix_data(而非 transit_time_matrix_data)。容量應為[[50, 50]],而非[[50], [50]]。

除錯 (422 / 有效載荷)

驗證錯誤:請根據 OpenAPI(/cuopt.yaml)檢查欄位名稱。 常見錯誤:transit_time_matrix_data→travel_time_matrix_data;容量應按維度計算[[50, 50]],而非按車輛計算[[50], [50]]。請記錄失敗請求的reqId及回應正文。

可執行的資產

從每個資產目錄執行(伺服器必須正在運行;若無法連線至伺服器,腳本將以 0 退出)。均使用 Pythonrequests:

  • assets/vrp_simple/ — 基本 VRP(無時間窗)
  • assets/vrp_basic/ — 帶有時段的 VRP
  • assets/pdp_basic/ — 取件與送件
  • assets/lp_basic/ — 透過 REST 進行線性規劃(CSR 格式)
  • assets/milp_basic/ — 透過 REST 進行的 MILP

請參閱 assets/README.md 以了解概覽。

問題升級

若要貢獻程式碼或從原始碼編譯,請參閱開發者技能。

在 GitHub 上查看
---
name: cuopt-server-api-python
description: Deploy a cuOpt REST server and solve routing optimization problems using Python or curl.
license: Apache-2.0
---



# cuOpt Server — Deploy and client (Python/curl)

This skill covers **starting the server** and **client examples** (curl, Python). Server has no separate C API (clients can be any language).

## Start server

```bash
# Development
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000

# Docker
docker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000 \
  nvidia/cuopt:latest-cuda12.9-py3.13
```

## Verify

```bash
curl http://localhost:8000/cuopt/health
```

## Workflow

1. POST to `/cuopt/request` → get `reqId`
2. Poll `/cuopt/solution/{reqId}` until solution ready
3. Parse response

## Python client (routing)

```python
import requests, time
SERVER = "http://localhost:8000"
HEADERS = {"Content-Type": "application/json", "CLIENT-VERSION": "custom"}
payload = {
    "cost_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "travel_time_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "task_data": {"task_locations": [1, 2], "demand": [[10, 20]], "task_time_windows": [[0,100],[0,100]], "service_times": [5, 5]},
    "fleet_data": {"vehicle_locations": [[0, 0]], "capacities": [[50]], "vehicle_time_windows": [[0, 200]]},
    "solver_config": {"time_limit": 5}
}
r = requests.post(f"{SERVER}/cuopt/request", json=payload, headers=HEADERS)
req_id = r.json()["reqId"]
# Poll: GET /cuopt/solution/{req_id}
```

## Terminology: REST vs Python API

| Python API | REST |
|------------|------|
| order_locations | task_locations |
| set_order_time_windows() | task_time_windows |
| service_times | service_times |

Use `travel_time_matrix_data` (not transit_time_matrix_data). Capacities: `[[50, 50]]` not `[[50], [50]]`.

## Debugging (422 / payload)

**Validation errors:** Check field names against OpenAPI (`/cuopt.yaml`). Common mistakes: `transit_time_matrix_data` → `travel_time_matrix_data`; capacities per dimension `[[50, 50]]` not per vehicle `[[50], [50]]`. Capture `reqId` and response body for failed requests.

## Runnable assets

Run from each asset directory (server must be running; scripts exit 0 if server unreachable). All use Python `requests`:

- [assets/vrp_simple/](assets/vrp_simple/) — Basic VRP (no time windows)
- [assets/vrp_basic/](assets/vrp_basic/) — VRP with time windows
- [assets/pdp_basic/](assets/pdp_basic/) — Pickup and delivery
- [assets/lp_basic/](assets/lp_basic/) — LP via REST (CSR format)
- [assets/milp_basic/](assets/milp_basic/) — MILP via REST

See [assets/README.md](assets/README.md) for overview.

## Escalate

For contribution or build-from-source, see the developer skill.

安裝 cuopt-server-api-python

請下載並將技能檔案解壓縮至您的 .claude/skills/ 目錄中。

下載 ZIP

複製儲存庫並將技能檔案複製到您的專案中。

git clone https://github.com/NVIDIA/skills/tree/main/skills/cuopt-server-api-python # Copy SKILL.md to your .claude/skills/ directory

複製 複製
快速設定: 將技能資料夾複製到 .claude/skills/ Claude 會自動偵測並使用該技能
儲存庫 NVIDIA/skills

相關技能

agentwallet
更新時間 2026-07-07
brightdata-cli
更新時間 2026-06-29
humanize
更新時間 2026-07-07
korean-stock-search
更新時間 2026-07-08
OR