💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

广度优先搜索算法(Breadth-First Search,BFS)是一种常用的图搜索算法,用于在图或树数据结构中寻找从起始节点到目标节点的最短路径。首先,将起始节点标记为已访问,并将其加入到一个队列(FIFO)中。同时,将起始节点的距离设置为0如果需要找到起始节点到目标节点的实际路径,可以在BFS执行过程中记录每个节点的父节点。这样,当找到目标节点时,可以通过父节点指针链条回溯到起始节点,构造出完整的最短路径。广度优先搜索算法常用于寻找最短路径、解决迷宫问题、图的遍历等。由于其找到的路径是最短的,因此在需要求解最短路径的问题中具有广泛的应用。

📚2 运行结果

主函数部分代码:


%% Defining Obstacle Parameters and Initializing Variables
clear all
clc 

size_x = 250;
size_y = 150;
rect_x = [55,55,105,105];
rect_y = [67,112,112,67];
poly_x = [120,158,165,188,168,145,120];
poly_y = [55,51,89,51,14,14,55];
circ_x = 180;
circ_y = 120;
circ_r = 15;
Orectangle = [rect_x;rect_y];
Opolygon = [poly_x;poly_y];
Ocircle = [circ_x;circ_y;circ_r];
Arena = zeros(size_y,size_x);
Visited_x = [];
Visited_y = [];
Display_Live = 0;

%  Calling the function to make Obstacle Space
[Arena] = ObstacleSpace_generator(Orectangle,Opolygon,Ocircle,Arena);
                         

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SET THE MAP
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure;
% draw grid environment
xp3 = [0 ,250, 250, 0 ,0];
yp3 = [0 ,0, 150 ,150 ,0];
drawnow
plot(xp3,yp3);
alpha(0.3);

V = [0 0; 0 size_y; size_x size_y; size_x 0];
F = [1 2 3 4];
patch('Faces',F,'Vertices',V,'FaceColor','blue','FaceAlpha',0.4);
hold on;



% Defining Rectangular and Polygonal Obstacle

o1x = 55; o1y = 67; o1xw = 50; o1yw = 45;
rect_pos = [ o1x o1y o1xw o1yw];
rectangle('Position',rect_pos,'FaceColor','b');

OX1 = [120 158 165 188 168 145 120];
OY1 = [55 51 89 51 14 14 55];
patch(OX1,OY1,'blue');


% Defining Circular Obstacle
center_x=180;
center_y = 120;
t = 0:0.01:2*pi;
x = 15*cos(t)+ center_x;
y = 15*sin(t) + center_y;
drawnow
plot(x,y),
fill(x,y,'b');

title(' \fontsize{20} Please Select a Start Point');
% start locations
[ sx,sy] = ginput(1);
sx = round(sx); sy = round(sy);
Start_Node = [sx sy];

%%% Check inputs for boundaries

while Arena(sy,sx) == 1
    title('\fontsize{20}Please Select a Correct Start Point');
    [sx,sy] = ginput(1);
    sx = round(sx); sy = round(sy);
    Start_Node = [sx sy];
end

title('\fontsize{20}Now Please Select a Goal Point');
[gx,gy] = ginput(1);
gx = round(gx); gy = round(gy);
Goal_Node = [gx gy];

%%% Check inputs for boundaries
while Arena(gy,gx) == 1
    title('\fontsize{20}Please Select a Correct Goal Point');
    [gx,gy] = ginput(1);
    gx = round(gx); gy = round(gy);
    Goal_Node = [gx gy];
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]丁金虎.基于改进蚁群算法的消防救援机器人路径规划方法[J].科技创新与应用,2024,14(14):133-136.DOI:10.19981/j.CN23-1581/G3.2024.14.032.

[2]颜明重,李琛,朱大奇.基于生物启发神经网络的无人水面艇实时避障路径规划系统[J/OL].上海海事大学学报:1-9[2024-05-15].https://doi.org/10.13340/j.jsmu.202304260096.

🌈4 Matlab代码实现

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐