Skip to main content

nvidia-cuopt-routing-api-python

Vehicle routing (VRP, TSP, PDP) with cuOpt — Python API only. Use when the user is building or solving routing in Python.

소스 정보

저장소
autohandai/community-skills
최근 소스 활동
2026년 6월 30일 03:25
감지된 SKILL.md 언어
영어
스타
11
포크
3

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
11 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
nvidia-cuopt-routing-api-python
description
Vehicle routing (VRP, TSP, PDP) with cuOpt — Python API only. Use when the user is building or solving routing in Python.
license
Apache-2.0 AND CC-BY-4.0
metadata
{"version":"26.08.00","author":"NVIDIA"}
# cuOpt Routing — Python API Confirm problem type (TSP, VRP, PDP) and data (locations, orders, fleet, constraints) before coding. This skill is **Python only**. Routing has no C API in cuOpt. ## Minimal VRP Example ```python import cudf from cuopt import routing cost_matrix = cudf.DataFrame([...], dtype="float32") dm = routing.DataModel(n_locations=4, n_fleet=2, n_orders=3) dm.add_cost_matrix(cost_matrix) dm.set_order_locations(cudf.Series([1, 2, 3], dtype="int32")) solution = routing.Solve(dm, routing.SolverSettings()) if solution.get_status() == 0: solution.display_routes() ``` ## Adding Constraints ```python # Time windows dm.add_transit_time_matrix(transit_time_matrix) dm.set_order_time_windows(earliest_series, latest_series) # Capacities dm.add_capacity_dimension("weight", demand_series, capacity_series) dm.set_order_service_times(service_times) dm.set_vehicle_locations(start_locations, end_locations) dm.set_vehicle_time_windows(earliest_start, latest_return) # Pickup-delivery pairs dm.set_pickup_delivery_pairs(pickup_indices, delivery_indices) # Precedence dm.add_order_precedence(node_id=2, preceding_nodes=np.array([0, 1])) ``` ## Solution Checking ```python status = solution.get_status() # 0=SUCCESS, 1=FAIL, 2=TIMEOUT, 3=EMPTY if status == 0: route_df = solution.get_route() total_cost = solution.get_total_objective() else: print(solution.get_error_message()) print(solution.get_infeasible_orders().to_list()) ``` ## Data Types (use explicit dtypes) ```python cost_matrix = cost_matrix.astype("float32") order_locations = cudf.Series([...], dtype="int32") demand = cudf.Series([...], dtype="int32") ``` ## Solver Settings ```python ss = routing.SolverSettings() ss.set_time_limit(30) ss.set_verbose_mode(True) ss.set_error_logging_mode(True) ``` ## Common Issues | Problem | Fix | |---------|-----| | Empty solution | Widen time windows or check travel times | | Infeasible orders | Increase fleet or capacity | | Status != 0 with time windows | Add `add_transit_time_matrix()` | | Wrong cost | Check cost_matrix is symmetric | | `compute_waypoint_sequence` alters route_df | It replaces the `location` column with waypoint ids in place — pass `route_df.copy()` if you still need cost-matrix indices (e.g. when iterating per truck) | ## Debugging **When status != 0:** `print(solution.get_error_message())` and `print(solution.get_infeasible_orders().to_list())` to see which orders are infeasible. **Data types:** Use explicit dtypes (float32, int32) for matrices and series to avoid silent errors. ## Examples - [examples.md](resources/examples.md) — VRP, PDP, multi-depot - [server_examples.md](resources/server_examples.md) — REST client (curl, Python) - **Reference models:** This skill's `assets/` — [vrp_basic](assets/vrp_basic/), [pdp_basic](assets/pdp_basic/). See [assets/README.md](assets/README.md). ## Escalate For contribution or build-from-source, see the developer skill.
GitHub에서 보기