SuperAPI AI 工具集

cuopt-routing-api-python

编程与开发

查看项目

更新于 10-16 02:33

技能介绍

用途:该技能面向使用 cuOpt 在 Python 中构建和求解车辆路径问题(VRP、TSP、PDP)的场景,明确仅支持 Python API,路径规划不提供 C API。

主要能力:通过 cuopt.routing 模块建模与求解。核心对象为 DataModel 与 Solve,配合 SolverSettings。可设置成本矩阵、订单位置,添加时间窗与运输时间矩阵、容量维度、服务时间、车辆起终点与车辆时间窗,设置取货-送货配对和订单先后次序约束。求解结果可检查状态(0=SUCCESS、1=FAIL、2=TIMEOUT、3=EMPTY),成功时获取路径与总目标值,失败时读取错误信息与不可行订单。

使用方式:先明确问题类型、地点数量与仓库、订单/任务、车队规模与容量、时间窗与服务时间、优先级等约束。最小 VRP 示例:用 cudf 构造 cost_matrix(float32),创建 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")),再执行 routing.Solve(dm, routing.SolverSettings());若 solution.get_status()==0 则 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。求解器设置可调用 set_time_limit、set_verbose_mode、set_error_logging_mode。矩阵与序列需显式声明 dtype(float32、int32)以避免静默错误。

适用场景:配送与运输路线优化、带时间窗与容量的车队调度、取货送货与带优先级顺序的任务规划。

限制与注意:状态非 0 时打印 get_error_message() 与 get_infeasible_orders().to_list() 排查;空解可放宽时间窗或检查行驶时间,不可行订单可增加车队或容量,时间窗问题需补充 add_transit_time_matrix(),成本异常需检查成本矩阵对称性。compute_waypoint_sequence 会原地替换 route_df 的位置列,如需保留成本矩阵索引应传入 route_df.copy()。示例文档含 examples.md(VRP、PDP、多仓库)与 server_examples.md(REST 客户端);参考模型见 assets/ 下的 vrp_basic、pdp_basic。贡献或源码构建请参考开发者技能。