✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
一种基于动态权重的A星算法改进方法,其中方法包括:对A星算法的估价函数进行改进;设计动态权值生成器,根据环境信息实时生成当前节点的启发式权值;当机器人离起始点较近时,h(n)占的比重较大;当机器人不断接近目标时,g(n)的权值逐渐增加;其中,h(n)为从指定位置运行到终点的估计代价,g(n)为从起点移动到指定方格的移动代价.本发明在机器人对目标点进行寻路地过程中,通过对A星算法的路径评价函数加入实时调整的动态启发式权值,来实现寻路的精确度与效率的统一.
⛄ 部分代码
%%
%这个矩阵的作用就是随机生成环境,障碍物,起始点,终止点等
function [field, startposind, goalposind, costchart, fieldpointers] = initializeField(n,wallpercent)
field = 10*ones(n,n);%设置任意两方格间的距离为10
field(ind2sub([n n],ceil(n^2.*rand(n*n*wallpercent,1)))) = Inf;%向上取整
% 随机生成起始点和终止点
startposind = sub2ind([n,n],ceil(n.*rand),ceil(n.*rand)); %随机生成起始点的索引值
goalposind = sub2ind([n,n],ceil(n.*rand),ceil(n.*rand)); %随机生成终止点的索引值
field(startposind) = 0; field(goalposind) = 0; %把矩阵中起始点和终止点处的值设为0
costchart = NaN*ones(n,n);%生成一个nxn的矩阵costchart,每个元素都设为NaN。就是矩阵初始NaN无效数据
costchart(startposind) = 0;%在矩阵costchart中将起始点位置处的值设为0
% 生成元胞数组
fieldpointers = cell(n,n);%生成元胞数组n*n
fieldpointers{startposind} = 'S'; fieldpointers{goalposind} = 'G'; %将元胞数组的起始点的位置处设为 'S',终止点处设为'G'
fieldpointers(field==inf)={0};
end
% end of this function
⛄ 运行结果
⛄ 参考文献
[1] 周东健, 张兴国, 马海波,等. 基于栅格地图-蚁群算法的机器人最优路径规划[J]. 南通大学学报:自然科学版, 2013, 12(4):91-94.
[2] 华洪, 张志安, 施振稳,等. 动态环境下多重A算法的机器人路径规划方法[J]. 计算机工程与应用, 2021.
[3] 翟冬灵, 葛凯, 张二阳. 一种基于改进A星策略的移动机器人路径规划方法:.