精华内容
下载资源
问答
  • A星算法matlab实现

    2020-01-28 02:30:16
    matlab实现的A星算法,有个性界面,直接运行就可以 matlab实现的A星算法,有个性界面,直接运行就可以
  • A星算法 机器人的路径规划 适合新手 自己选择起始点和终点 A星算法 机器人的路径规划 适合新手 自己选择起始点和终点
  • A*星算法matlab实现

    2017-05-07 19:30:25
    a星算法matlab实现 还有c++实现的算法
  • A星算法的matlab实现(附有官方代码的语句注释),注释文件样式为:A星算法matlab源码及详细注释.docx
  • 运行平台MATLAB,本资源是我做课程设计使用的程序,含有A星算法最优路径寻路的完程序代码,可以点击astar.m文件直接运行,寻址地图可以自行绘制,也可使用提供的地图。
  • MATLAB A星算法.zip

    2020-05-08 18:52:21
    利用MATLABA*算法进行演示,先设置障碍物,然后设置起点和终点,即可得到路径规划结果。内涵源代码
  • 具体原理参考: 用简单直白的方式讲解A星寻路算法原理 https://www.cnblogs.com/leoin2012/p/3899822.html A星寻路算法介绍 ...matlab代码实现及效果实例: Astar/A星/A*算法matlab路径规划 微信公众号: ...

    具体原理参考:

    用简单直白的方式讲解A星寻路算法原理
    https://www.cnblogs.com/leoin2012/p/3899822.html

    A星寻路算法介绍
    https://www.cnblogs.com/zhoug2020/p/3468167.html

    matlab代码实现及效果实例:

    Astar/A星/A*算法matlab路径规划


    在这里插入图片描述
    微信公众号:
    在这里插入图片描述

    展开全文
  • matlab代码中的A星算法

    2020-12-13 09:17:57
    A*搜索算法,俗称A星算法。通过全局路径节点,求解起始点到目标点的最短路径 ,如果存在最短路径,无论在什么情况之下,都能够保证找到这条最短路径 。
  • matlab实现的八方向A星算法,可以选择地图大小,起点位置、终点位置以及地图中的障碍物比例,分享一起学习。
  • 动态衡量式A星算法及拐角优化的matlab文件,内部包含两个matlab文件,A_ROAD_3 为完整的动态衡量式A星算法文件,A_ROAD_4是进行拐角优化后的文件,详情请见博文----详细介绍用MATLAB实现基于A*算法的路径规划(附...
  • A星算法八数码问题

    2013-11-01 14:34:59
    人工智能课程作业 采用A星算法解决八数码问题 采用曼哈顿距离 A星算法 matlab 程序 性能可靠
  • A星算法(基于matlab)

    千次阅读 2019-04-10 17:30:29
    A星算法属于图这种数据结构的搜索算法,对比于树的遍历搜索,需要考虑到的问题是:同一个节点的重复访问,所以需要对于已经访问过的节点进行标记。 曼哈顿距离: 在几何度量空间中,用以标明两个点在标准坐标系上...

    概述

    基于上一篇文章提到的DFS算法和BFS算法
    A星算法属于图这种数据结构的搜索算法,对比于树的遍历搜索,需要考虑到的问题是:同一个节点的重复访问,所以需要对于已经访问过的节点进行标记。

    曼哈顿距离:
    在几何度量空间中,用以标明两个点在标准坐标系上的绝对轴距总和。
    图 1
    图1中绿色代表欧氏距离(直线距离),蓝色和黄色代表等价的曼哈顿距离。
    d( i , j ) = |Xi - Xj| + |Yi - Yj|
    优势:计算机图形学中,欧氏距离需要进行浮点运算,曼哈顿距离只涉及到加减法,运算速度大大提高。

    我们假设无人车需要从A点(左下侧浅绿色)移动到B点(右上侧浅黄色),但是两点之间被障碍物隔开,我们使用矩阵的形式来构建地图,其中元素为0的矩阵坐标视为可走的,值为1的视为不可走的。

    
    clear;
    clc;
    clf;
    figure(1);
    map =[
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0
    0	0	0	.3	0	0	0	1	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	1	0	0	.7	0	0	0	0	0
    0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	1	1	1	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    ];
    pcolor(map)
    colormap summer
    [row,col] = size(map);
    [start_px,start_py] = find(map == .3);
    [end_px,end_py] = find(map == .7);
    
    close = struct([]); 
    closelen = 0;
    open = struct([]); 
    openlen = 0;
    
    %% 将起点添加到open列表
    open(1).row = start_px;
    open(1).col = start_py;
    open(1).g = 0;
    open(1).h = abs(end_py - start_py) + abs(end_px - start_px);
    openlen = openlen + 1;
    %% 四种运动格式
    sport = [0,1;0,-1;-1,0;1,0];
    backNum = 0;
    prev = [];
    while openlen > 0
        %% 获取代价最小的值
        for i = 1:openlen
            f(i,:) = [i,open(i).g + open(i).h];       
        end
        f1 = sortrows(f,2);
        current = open(f1(1));
        choose = 0;
        chooseArr = [];
        %% 回溯将走过的点标记出来
         if current.row == end_px && current.col == end_py
             i = 1;
             while(i<=size(prev,1))
                 if prev(i,3) == current.row && prev(i,4) == current.col
                     choose = choose +1;
                     chooseArr(choose,1) = prev(i,1);
                     chooseArr(choose,2) = prev(i,2);
                     current.row =  prev(i,1);
                     current.col =  prev(i,2);
                     i = 1;
                 else
                     i = i + 1;
                 end
             end      
             for j = 1: size(chooseArr,1)
                    map(chooseArr(j,1),chooseArr(j,2)) = 0.5;
             end
             figure(2);
             pcolor(map);
             colormap winter;
             return;         
         end
         closelen = closelen + 1;
         close(closelen).row = open(f1(1)).row;
         close(closelen).col = open(f1(1)).col;
         close(closelen).g = open(f1(1)).g;
         close(closelen).h = open(f1(1)).h;   
         open(f1(1)) = [];
         openlen = openlen -1;     
        for i = 1:4
            dimNormal = all([current.row,current.col]+sport(i,:)>0) ...
                && current.row+sport(i,1)<=row && current.col+sport(i,2)<=col;
            neighbor.row = current.row + sport(i,1);
            neighbor.col = current.col + sport(i,2);
            neighbor.g = abs(start_px - neighbor.row) + abs(start_py - neighbor.col);
            neighbor.h = abs(end_px - neighbor.row) + abs(end_py - neighbor.col);
        
        
            if dimNormal
                inCloseFlag = 0; 
                if closelen ==0
                else
                    for j = 1:closelen
                        if close(j).row == neighbor.row && close(j).col ==neighbor.col
                            inCloseFlag = 1;
                            break;
                        end
                    end
                end
            
                if inCloseFlag
                    continue;
                end
                
                temp_g = current.g + abs(current.row - neighbor.row) + abs(current.col - neighbor.col);
                inOpenFlag = 0;
                for j =1:openlen
                    if open(j).row == neighbor.row && open(j).col ==neighbor.col
                        inOpenFlag = 1;
                        break;
                    end
                end        
                if ~inOpenFlag && map(neighbor.row,neighbor.col) ~= 1
                    openlen = openlen + 1;
                    open(openlen).row = neighbor.row;
                    open(openlen).col = neighbor.col;
                    open(openlen).g = abs(start_px - neighbor.row) + abs(start_py - neighbor.col);
                    open(openlen).h = abs(end_px - neighbor.row) + abs(end_py - neighbor.col);               
                elseif temp_g >= neighbor.g
                    continue;
                end
                    backNum = backNum +1;
                    prev(backNum,:) = [current.row ,current.col,neighbor.row ,neighbor.col];
                    neighbor.g = temp_g;            
            else
                continue;
            end
        end     
    end
    

    生成初始图:
    在这里插入图片描述

    开始搜索

    我们已经完成地图搜寻区域的准备工作,下面我们基于可以移动的四个动作(上、下、左、右)来进行搜索,我们使用openList来维护需要展开的待搜索的节点,在最开始的时候,只有起点这一项。之后,openList里面的元素可能是会经过的,也有可能是不经过的,但是经过的点都应该在openList中存在或者曾经存在。另外,对于我们已经访问过的点,我们使用closeList来进行记录,避免多次访问。

    代价函数:
    f(v) = g(v) + h(v)
    g(v)表示由起始点到当前节点的最小cost;
    h(v)表示由当前结点到目标节点的最小cost的估计值;
    这里,为方便计算,笔者统一选取了曼哈顿距离用来计算g(v)和h(v)的cost值。

    算法伪码:

    function AStar_Routing(Gragh(V,E),src,dst)
    	create vertex List openList
    	create vertex List closeList
    	create prev_map
    	insert src into openList
    	while(openList.isNotEmpty)
    		current = the node v in openList s.t.  min(f[v]) in openList
    		if current = dst
    			return  reconstruction_route(prev_map,current)
    		endif
    		remove current from openList
    		insert current into closeList
    		for each neighbor u of current
    			if u in closeList
    				continue;
    			endif
    			temp_u = g[current] + h(current,u)
    			if u not in openList
    				insert u into openList
    			elseif temp_u >= g[u]
    				continue;
    			endif
    			prev_map[u] = current			
    			g[u] = temp_cost
    			f[u] = g[u] + h(current,dst)
    	endwhile
    

    回溯后,整体PATH效果如下:
    在这里插入图片描述

    展开全文
  • 动态切点调整算法去除凹凸点,该方法能够得到既有曲率连续性,同时满足几何特性的路径。
  • 分享一下A星算法及A星优化算法源码,提供大家学习使用!
  • Astar-Komega实现的的寻优算法MATLAB编程实现。
  • A星算法程序

    2011-10-09 10:47:27
    改程序是A星算法MATLAB程序,经过调试
  • 一个寻星算法,1个文件,无附加功能。 很好的解释和易于扩展/可重用。 随心所欲地更改地图、起点和障碍。 启发式权重可以更改为更贪婪或设置为 0 以获得 Dijkstra 算法。 蓝色绘制的节点是开放集的一部分。 绿色...
  • A*算法 A star 算法matlab)版本,可以直接使用,包含路径优化。直接下载即可运行。A*算法 A star 算法matlab)版本,可以直接使用,包含路径优化。直接下载即可运行。
  • 以车辆的运动学模型为节点,以当前点到终点的Astar距离和RS距离两者最大的距离作为H(n)函数的估计代价,使用matlab实现(2016a以上版本)
  • matlab实现基于栅格地图的A星算法路径规划,代码中障碍物为任意障碍物。
  • Astar算法--MATLAB实现

    2017-11-30 13:56:01
    A星算法MATLAB实现,具体问题稍作修改即可实现。A星算法是一种启发式搜索算法
  • 主要是对A星算法的进一步改进
  • 对10*10的二维高程矩阵进行插值,得到较平滑的三维山地图,使用A星算法得到起点到终点的最优路径,使用B样条插值法对路径进行平滑处理。
  • A星算法伪代码

    2019-04-04 17:47:59
    用miktex2.9编写的A*算法的伪代码(xelatex格式),里面包含tex文件和生成的pdf文件。
  • 对传统的A*算法进行matlab仿真实验,位做改进,只为给读者提供最原始简介的实验环境,避免因为过度的改进造成不必要的理解误区。该实验程序可自由定义栅格地图大小,自由定义障碍物的摆放位置与数量,同时也可以生成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,914
精华内容 765
关键字:

a星算法matlab

matlab 订阅