cuopt-server-api-python
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesecuOpt Server — Deploy and client (Python/curl)
cuOpt Server — 部署与客户端(Python/curl)
This skill covers starting the server and client examples (curl, Python). Server has no separate C API (clients can be any language).
本技能涵盖启动服务器和客户端示例(curl、Python)。服务器没有单独的C API(客户端可使用任意语言)。
Start server
启动服务器
bash
undefinedbash
undefinedDevelopment
开发环境
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000
Docker
Docker部署
docker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000
nvidia/cuopt:latest-cuda12.9-py3.13
nvidia/cuopt:latest-cuda12.9-py3.13
undefineddocker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000
nvidia/cuopt:latest-cuda12.9-py3.13
nvidia/cuopt:latest-cuda12.9-py3.13
undefinedVerify
验证服务器
bash
curl http://localhost:8000/cuopt/healthbash
curl http://localhost:8000/cuopt/healthWorkflow
工作流程
- POST to → get
/cuopt/requestreqId - Poll until solution ready
/cuopt/solution/{reqId} - Parse response
- 向 发送POST请求 → 获取
/cuopt/requestreqId - 轮询 直到解决方案就绪
/cuopt/solution/{reqId} - 解析响应结果
Python client (routing)
Python客户端(路径规划)
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"]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}
轮询:GET /cuopt/solution/{req_id}
undefinedundefinedTerminology: REST vs Python API
术语对照:REST API vs Python API
| Python API | REST |
|---|---|
| order_locations | task_locations |
| set_order_time_windows() | task_time_windows |
| service_times | service_times |
Use (not transit_time_matrix_data). Capacities: not .
travel_time_matrix_data[[50, 50]][[50], [50]]| Python API | REST |
|---|---|
| order_locations | task_locations |
| set_order_time_windows() | task_time_windows |
| service_times | service_times |
请使用 (而非transit_time_matrix_data)。容量格式应为 而非 。
travel_time_matrix_data[[50, 50]][[50], [50]]Debugging (422 / payload)
调试(422错误 / 请求体问题)
Validation errors: Check field names against OpenAPI (). Common mistakes: → ; capacities per dimension not per vehicle . Capture and response body for failed requests.
/cuopt.yamltransit_time_matrix_datatravel_time_matrix_data[[50, 50]][[50], [50]]reqId验证错误: 对照OpenAPI文档()检查字段名称。常见错误:将误写为;容量应按维度格式而非按车辆格式。对于失败的请求,请记录和响应体。
/cuopt.yamltransit_time_matrix_datatravel_time_matrix_data[[50, 50]][[50], [50]]reqIdRunnable assets
可运行资源
Run from each asset directory (server must be running; scripts exit 0 if server unreachable). All use Python :
requests- assets/vrp_simple/ — Basic VRP (no time windows)
- assets/vrp_basic/ — VRP with time windows
- assets/pdp_basic/ — Pickup and delivery
- assets/lp_basic/ — LP via REST (CSR format)
- assets/milp_basic/ — MILP via REST
See assets/README.md for overview.
在每个资源目录下运行(服务器必须处于运行状态;若无法连接服务器,脚本将以0状态码退出)。所有资源均使用Python 库:
requests- assets/vrp_simple/ — 基础VRP(无时间窗)
- assets/vrp_basic/ — 带时间窗的VRP
- assets/pdp_basic/ — 取送件问题(PDP)
- assets/lp_basic/ — 通过REST API求解LP(CSR格式)
- assets/milp_basic/ — 通过REST API求解MILP
详见assets/README.md中的概述。
Escalate
升级处理
For contribution or build-from-source, see the developer skill.
如需贡献代码或从源码构建,请参考开发者技能文档。