cuOpt Routing 技能用于车辆路径规划(VRP、TSP、PDP),仅支持 Python API,cuOpt 的路径规划没有 C API。使用前需确认问题类型(TSP、VRP、PDP)与数据,包括地点、订单、车队和约束。
用途与主要能力:通过 cuopt.routing 模块构建数据模型并求解。最小 VRP 示例使用 cudf 构建成本矩阵,创建 routing.DataModel(n_locations, n_fleet, n_orders),调用 add_cost_matrix 与 set_order_locations,再用 routing.Solve(dm, routing.SolverSettings()) 求解,成功时调用 solution.display_routes()。
可添加的约束包括:时间窗(add_transit_time_matrix、set_order_time_windows)、容量(add_capacity_dimension、set_order_service_times、set_vehicle_locations、set_vehicle_time_windows)、取送货配对(set_pickup_delivery_pairs)和优先级(add_order_precedence)。
结果检查:solution.get_status() 中 0=SUCCESS、1=FAIL、2=TIMEOUT、3=EMPTY;成功时可获取 route_df 与 total_cost,否则打印 get_error_message() 和 get_infeasible_orders()。
数据类型需显式指定 dtype(矩阵 float32,序列 int32)以避免静默错误。求解器设置可通过 SolverSettings 设置时间限制、详细模式与错误日志。
常见问题与处理:空解可放宽时间窗或检查行驶时间;不可行订单可增加车队或容量;时间窗下状态非 0 需添加 add_transit_time_matrix();成本错误需检查成本矩阵对称性。注意 compute_waypoint_sequence 会就地替换 route_df 的位置列,如需保留成本矩阵索引应传入 route_df.copy()。
调试时在 status != 0 时打印错误信息与不可行订单列表。示例文档包含 VRP、PDP、多仓库及 REST 客户端示例;参考模型见 assets/ 中的 vrp_basic 与 pdp_basic。贡献或从源码构建请参考开发者技能。其他细节暂未提供。