engine.pipeline
行程规划双阶段编排:数据加载 → 聚类求解 → 每日行程重建。
Attributes
Functions
|
扫描 routes 涉及的缺失 polyline 段,逐段补调驾车 API。 |
|
双阶段流程编排入口。 |
|
从路径和景点字典重建每日行程表。 |
|
对已有方案执行调整(均衡、移除景点、改天数)。 |
Module Contents
- engine.pipeline.TRAVEL_SPEED = 1.0
- engine.pipeline._supplement_polylines(routes_list: list[list[list[int]]], coords: list[tuple[float, float]], polylines: dict[tuple[int, int], str]) None
扫描 routes 涉及的缺失 polyline 段,逐段补调驾车 API。
build_real_data 中 cost/dist 对称复用但 polyline 不复制, 此处对 route 需要但 polylines 中缺失的方向单独补调。
- Args:
routes_list: 所有方案的 route 列表,每项为 [[0, ...], [0, ...]] 格式。 coords: 坐标列表,与索引一一对应。 polylines: 已有 polyline 字典,函数会原地追加缺失项。
- engine.pipeline.run_planning(poi_cache: backend.typedefs.PoiCache, city: str, hotel_name: str, penalty_weight: float, early_wait_weight: float, late_return_weight: float, mode: str = 'fast', n_days: int | None = None, day_start: int = 0, min_days: int | None = None, cost_matrix_override: list[list[float]] | None = None, dist_matrix_override: list[list[float]] | None = None) backend.typedefs.PlanResult | dict
双阶段流程编排入口。
加载真实数据 → 构建景点字典 → 执行 cluster_and_solve → 生成每日行程 → 返回前端可视化数据。
- Args:
poi_cache: 包含 hotel 和 spots 的缓存数据(由前端/外部传入)。 city: 城市名,用于高德 API 查询和文件命名。 hotel_name: 酒店名称。 penalty_weight: 违规惩罚权重。 early_wait_weight: 早到等待惩罚权重。 late_return_weight: 晚归惩罚权重。 mode: "fast" 或 "deep"。 n_days: 行程天数(可选),None 时走建议模式。 day_start: 每天最早出发时间(0-1440),默认 0(午夜)。 min_days: 建议模式最小搜索天数(默认由引擎自动推断)。 cost_matrix_override: 复用 suggest 阶段的成本矩阵,传入时跳过驾车 API。 dist_matrix_override: 与 cost_matrix_override 一同传入的距离矩阵。
- Returns:
- dict: type="suggestion"(未指定天数)时含 suggestions、algo_time、cost_matrix、dist_matrix、polylines;
规划模式时含 solution、best_days、daily_schedules、cost_matrix、dist_matrix、polylines、commentary 等。
- engine.pipeline._rebuild_schedule(routes: list, spots_dict: dict[int, backend.typedefs.SpotDict], cost_matrix: numpy.ndarray) list[list[backend.typedefs.ScheduleItem]]
从路径和景点字典重建每日行程表。
- Args:
routes: 路径列表,每组含首尾 depot (0)。 spots_dict: 景点字典。 cost_matrix: 旅行时间矩阵(分钟)。
- Returns:
list[list[ScheduleItem]]: 每日行程列表。
- engine.pipeline.adjust_plan(spots_dict: dict[int, backend.typedefs.SpotDict], cost_matrix_list: list, dist_matrix_list: list, routes: list, adjustments: dict) backend.typedefs.PlanResult
对已有方案执行调整(均衡、移除景点、改天数)。
从 routes 重构分组 → 按 adjustments 类型分发 → 重新求解 → 生成新每日行程。
- Args:
spots_dict: 景点字典(与 run_planning 返回的 spots 格式一致)。 cost_matrix_list: 成本矩阵(2D list,前端传回)。 dist_matrix_list: 距离矩阵(2D list,前端传回)。 routes: 当前方案路径列表,每组含首尾 depot。 adjustments: 调整指令 dict,支持 {"balance": true}、{"adjust_days": <int>}、{"remove_poi": "<poi_name>"}、 {"add_poi": {name, lon, lat, tw_start, tw_end, stay}} 之一。
- Returns:
dict: 与 run_planning 相同格式的完整规划结果。
- Raises:
ValueError: adjustments 中未识别的指令类型。