路径规划可视化系统和算法说明

github 地址

这是一个基于 javascript 的路径规划可视化系统,支持交互式地创建、编辑和规划路径。系统实现了 A* 算法用于最短路径搜索,并使用改进的近似算法解决旅行商问题(TSP)。
uxK9AX

功能特点

  • 📍 交互式点位管理

    • 可视化添加、移动和删除路径点
    • 动态连接点位并自动计算距离
    • 支持拖拽调整点位位置
  • 🛣️ 智能路径规划

    • 基于 A* 算法的最短路径搜索
    • 改进的 TSP 问题解决方案
    • 3-opt 优化算法提升路径质量
  • 💡 用户友好界面

    • 清晰的路径可视化展示
    • 实时距离计算和显示
    • 支持选择必经点和起终点
    • 导出路径数据功能

使用方法

  1. 打开系统

    • 使用现代浏览器打开 index.html 文件
  2. 基本操作

    • 移动模式:选择并拖拽已有点位
    • 添加点位:点击”添加点”按钮,然后在画布上点击添加新点位
    • 添加连接:点击”添加连接”按钮,然后依次选择两个点位建立连接
    • 删除:点击”删除”按钮,然后点击要删除的点位或连接
  3. 路径规划

    • 在控制面板中选择必经点
    • 指定起终点
    • 点击”计算路径”按钮获取最优路径
  4. 数据导出

    • 点击”导出数据”按钮
    • 复制生成的预置数据代码

技术实现

  • 前端:原生 JavaScript + HTML5 Canvas
  • 算法:
    • A* 算法用于最短路径搜索
    • 改进的最近邻算法解决 TSP 问题
    • 3-opt 局部搜索优化

route.js 使用说明

route.js 提供了路径规划的核心功能,主要通过 PathPlanner 类实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 创建规划器实例
const planner = new PathPlanner(points, connections);

// 参数说明
points = ["A", "B", "C"]; // 点位数组,每个元素为点位的唯一标识符
connections = [
{
robotPatrolPointA: "A", // 连接的起点
robotPatrolPointB: "B", // 连接的终点
distance: 10, // 两点间的距离
},
];

// 计算最优路径
const result = planner.planRoute(
requiredPoints, // 必经点数组,如 ['B', 'C']
fixedStartEnd // 起终点,如 'A'
);

// 返回结果格式
result = {
path: ["A", "B", "C", "A"], // 完整路径
totalDistance: 30, // 总距离
startEnd: "A", // 起终点
};

主要功能:

  1. 路径搜索

    • 使用 A* 算法计算任意两点间的最短路径
    • 自动缓存计算结果提升性能
    • 支持启发式函数优化搜索效率
  2. TSP 求解

    • 使用改进的最近邻算法构造初始解
    • 支持必经点约束
    • 通过多次随机起点优化结果质量
  3. 路径优化

    • 实现 3-opt 局部搜索
    • 自动优化路径顺序
    • 保证起终点约束

算法适用性说明

本系统的路径规划算法具有以下特点:

  1. 起终点处理

    • 支持指定固定的起终点
    • 起点和终点必须为同一个点
    • 规划路径将从起点出发并最终返回该点
  2. 路径特性

    • 允许重复经过同一个点
    • 允许重复使用同一条连接
    • 优先选择总距离最短的路径方案
  3. 约束条件

    • 必经点:可以选择多个必经点,算法保证会经过所有选中的点
    • 连接限制:只能通过已建立连接的路径进行移动
    • 距离计算:基于点位间实际连接的距离,而非直线距离
  4. 优化目标

    • 主要优化目标是最小化总路径长度
    • 在满足必经点要求的前提下寻找近似最优解
    • 通过 3-opt 优化提升路径质量

系统要求

  • 现代浏览器(Chrome、Firefox、Safari、Edge 等)
  • 支持 HTML5 Canvas
  • JavaScript 启用

注意事项

  • 建议在点位数量适中的情况下使用,过多点位可能影响性能
  • 路径规划结果为近似最优解,不保证全局最优
  • 拖拽点位时会自动更新相关连接的距离