⛄一、A_star算法简介

1 A Star算法及其应用现状
进行搜索任务时提取的有助于简化搜索过程的信息被称为启发信息.启发信息经过文字提炼和公式化后转变为启发函数.启发函数可以表示自起始顶点至目标顶点间的估算距离, 也可以表示自起始顶点至目标顶点间的估算时间等.描述不同的情境、解决不同的问题所采用的启发函数各不相同.我们默认将启发函数命名为H (n) .以启发函数为策略支持的搜索方式我们称之为启发型搜索算法.在救援机器人的路径规划中, A Star算法能结合搜索任务中的环境情况, 缩小搜索范围, 提高搜索效率, 使搜索过程更具方向性、智能性, 所以A Star算法能较好地应用于机器人路径规划相关领域.

2 A Star算法流程
承接2.1节, A Star算法的启发函数是用来估算起始点到目标点的距离, 从而缩小搜索范围, 提高搜索效率.A Star算法的数学公式为:F (n) =G (n) +H (n) , 其中F (n) 是从起始点经由节点n到目标点的估计函数, G (n) 表示从起点移动到方格n的实际移动代价, H (n) 表示从方格n移动到目标点的估算移动代价.

如图2所示, 将要搜寻的区域划分成了正方形的格子, 每个格子的状态分为可通过(walkable) 和不可通过 (unwalkable) .取每个可通过方块的代价值为1, 且可以沿对角移动 (估值不考虑对角移动) .其搜索路径流程如下:

python 无人机航线规划 无人机航线规划代码_无人机


图2 A Star算法路径规划

Step1:定义名为open和closed的两个列表;open列表用于存放所有被考虑来寻找路径的方块, closed列表用于存放不会再考虑的方块;

Step2:A为起点, B为目标点, 从起点A开始, 并将起点A放入open列表中, closed列表初始化为空;

Step3:查看与A相邻的方格n (n称为A的子点, A称为n的父点) , 可通过的方格加入到open列表中, 计算它们的F, G和H值.将A从open移除加入到closed列表中;

Step4:判断open列表是否为空, 如果是, 表示搜索失败, 如果不是, 执行下一步骤;

Step5:将n从open列表移除加入到closed列表中, 判断n是否为目标顶点B, 如果是, 表示搜索成功, 算法运行结束;

Step6:如果不是, 则扩展搜索n的子顶点:

a.如果子顶点是不可通过或在close列表中, 忽略它.

b.子顶点如果不在open列表中, 则加入open列表, 并且把当前方格设置为它的父亲, 记录该方格的F, G和H值.

Step7:跳转到步骤Step4;

Step8:循环结束, 保存路径.从终点开始, 每个方格沿着父节点移动直至起点, 即是最优路径.A Star算法流程图如图3所示.

python 无人机航线规划 无人机航线规划代码_matlab_02


图3 A Star算法流程

⛄二、部分源代码

clc
 clear all
 m = 30;n = 30;%%构建地图
 for i = 1:m+2
 if i == 1
 for j = 1:n+2
 Matrix(i,j) = -inf;
 end
 elseif i == m+2
 for j = 1:n+2
 Matrix(i,j) = -inf;
 end
 else
 for j = 1:n+2
 if ((j == 1)|(j == n+2))
 Matrix(i,j) = -inf;
 else
 Matrix(i,j) = inf;
 end
 end
 end
 end%%障碍1
 for j=15:18
 Matrix(5,j)=-inf;end
 for j=15:18
 Matrix(8,j)=-inf;end
 for i=5:8
 Matrix(i,18)=-inf;end
 for i=5:8
 Matrix(i,15)=-inf;end%%障碍2
 for j=17:20
 Matrix(12,j)=-inf;end
 for j=17:20
 Matrix(15,j)=-inf;end
 for i=12:15
 Matrix(i,17)=-inf;end
 for i=12:15
 Matrix(i,20)=-inf;end%%障碍3
 for j=15:18
 Matrix(20,j)=-inf;end
 for j=15:18
 Matrix(23,j)=-inf;end
 for i=20:23
 Matrix(i,18)=-inf;end
 for i=20:23
 Matrix(i,15)=-inf;end%%%%%%%%第一条航线
 Spoint = [3 3]; %起始点坐标
 Epoint = [7 30]; %目标点坐标
 % 显示地图
 %subplot(2,2,1);
 h1 = plot(Spoint(1),Spoint(2),‘rO’);
 hold on
 h2 = plot(Epoint(1),Epoint(2),‘rO’);
 astar(Spoint,Epoint,Matrix,m,n,h1,h2);%%%%%%%%第二条航线
 Spoint2 = [8 4]; %起始点坐标
 Epoint2 = [15 28]; %目标点坐标
 % 显示地图
 h12 = plot(Spoint2(1),Spoint2(2),‘gO’);
 hold on
 h22 = plot(Epoint2(1),Epoint2(2),‘gO’);
 astar(Spoint2,Epoint2,Matrix,m,n,h12,h22);%%%%%%%%第三条航线
 Spoint3 = [14 3]; %起始点坐标
 Epoint3 = [19 29]; %目标点坐标
 % 显示地图
 h13 = plot(Spoint3(1),Spoint3(2),‘yO’);
 hold on
 h23 = plot(Epoint3(1),Epoint3(2),‘yO’);
 astar(Spoint3,Epoint3,Matrix,m,n,h13,h23);%%%%%%%%第四条航线
 Spoint4 = [17 2]; %起始点坐标
 Epoint4 = [25 30]; %目标点坐标
 % 显示地图
 h14 = plot(Spoint4(1),Spoint4(2),‘bO’);
 hold on
 h24 = plot(Epoint4(1),Epoint4(2),‘bO’);
 astar(Spoint4,Epoint4,Matrix,m,n,h14,h24);

⛄三、运行结果

python 无人机航线规划 无人机航线规划代码_无人机_03

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]钱程,许映秋,谈英姿.A Star算法在RoboCup救援仿真中路径规划的应用[J].指挥与控制学报. 2017,3(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合