• 大小: 4.27MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-28
  • 语言: 其他
  • 标签: D星  路径搜索  

资源简介

在5X5坐标系上面进行路径搜索,使用D星搜索出来一条最优路径。

资源截图

代码片段和文件信息

#include
#include
#include  
#include  
#include
#include
      
using namespace std;  

const int maxnum = 100;
const int maxint = 999999;

const int NODE = 25;//节点的数量
const int PATH = 24;//路径值
const int path_number=50;//路径的数量

int origin;//定义一个起点
int destination;//定义一个终点

struct POINT
{
    int x;
    int y;
    int th;
}P[NODE];
 
struct DISTANCE
{
    int weight()
    {
        for(int i=1;i<=PATH;i++)
        {
            return abs((P[i+1].x-P[i].x)+(P[i+1].y-P[i].y));
        }
    }
}W[PATH];

void Dijkstra(int n int v int *dist int *prev int c[maxnum][maxnum])
{
    bool s[maxnum];// 判断是否已存入该点到S集合中
    for(int i=1; i<=n; ++i)
    {
        dist[i] = c[v][i];
        s[i] = 0;// 初始都未用过该点
        if(dist[i] == maxint)
            prev[i] = 0;
        else
            prev[i] = v;
    }
    dist[v] = 0;
    s[v] = 1;
 
    // 依次将未放入S集合的结点中,取dist[]最小值的结点,放入结合S中
    // 一旦S包含了所有V中顶点,dist就记录了从源点到所有其他顶点之间的最短路径长度
    for(int i=2; i<=n; ++i)
    {
        int tmp = maxint;
        int u = v;
        // 找出当前未使用的点j的dist[j]最小值
        for(int j=1; j<=n; ++j)
            if((!s[j]) && dist[j]            {
                u = j;// u保存当前邻接点中距离最小的点的号码
                tmp = dist[j];
            }
        s[u] = 1;// 表示u点已存入S集合中
 
        // 更新dist
        for(int j=1; j<=n; ++j)
            if((!s[j]) && c[u][j]            {
                int newdist = dist[u] + c[u][j];
                if(newdist < dist[j])
                {
                    dist[j] = newdist;
                    prev[j] = u;
                }
            }
    }
}

void searchPath1(int *prevint v int u vector& a)
{
    int que[maxnum];
    int tot = 1;
    que[tot] = u;
    tot++;
    int tmp = prev[u];
    while(tmp != v)
    {
        que[tot] = tmp;
        tot++;
        tmp = prev[tmp];
    }
    que[tot] = v;

    for(int i=tot; i>=1; --i)
    {
        cout << que[i] << “ -> “;
        a.push_back(que[i]);
    }
}

void searchPath2(int *prevint u int v vector& a)
{
    int que[maxnum];
    int tot = 1;
    que[tot] = u;
    tot++;
    int tmp = prev[u];
    while(tmp != v)
    {
        que[tot] = tmp;
        tot++;
        tmp = prev[tmp];
    }
    que[tot] = v;

    for(int i=1; i<=tot; ++i)
    {
        cout << que[i] << “ -> “;
        a.push_back(que[i]);
    }
}

int main()
{
    ifstream init_xinit_yinit_th;
    init_x.open(“../param/x.txt“);//读取.txt文件的各个参数
    init_y.open(“../param/y.txt“);
    init_th.open(“../param/th.txt“);
    
    for(int i=1;i<=NODE;i++)
    {
init_x>>P[i].x;
        init_y>>P[i].y;
        init_th>>P[i].th;
    }

    init_x.close();
    init_y.close();
    init_th.close();

    map mapStudent;
    for(int i=1;i<=NODE;i++)
    {  
        mapStudent.insert(pair(i P[i]));    
    }   
    map::iterator iter;  

    ofstream outfile;
    outfile.open(“../param/map.txt“);

    outfile << NODE << endl;//保存节点数到本地文件
    outf

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-21 09:10  MAP\
     文件     4399174  2019-01-18 07:31  MAP\map.jpg
     文件         489  2019-01-21 09:10  MAP\REAEME.txt
     文件        7022  2019-01-21 09:05  MAP\map.cpp
     文件         146  2019-01-19 09:47  MAP\CMakeLists.txt
     目录           0  2019-01-21 09:05  MAP\build\
     文件       61904  2019-01-21 09:05  MAP\build\map
     文件        1347  2019-01-19 09:48  MAP\build\cmake_install.cmake
     文件        4620  2019-01-19 09:48  MAP\build\Makefile
     文件       11467  2019-01-19 09:48  MAP\build\CMakeCache.txt
     目录           0  2019-01-21 09:04  MAP\param\
     文件           5  2019-01-19 08:59  MAP\param\node.txt
     文件         298  2019-01-21 09:05  MAP\param\map.txt
     文件          82  2019-01-18 07:20  MAP\param\th.txt
     文件          51  2019-01-18 07:20  MAP\param\x.txt
     文件          52  2019-01-18 07:20  MAP\param\y.txt
     文件           3  2019-01-21 09:04  MAP\param\destination.txt
     文件           4  2019-01-21 09:04  MAP\param\origin.txt
     目录           0  2019-01-21 09:05  MAP\build\CMakeFiles\
     文件        6289  2019-01-19 09:48  MAP\build\CMakeFiles\Makefile.cmake
     文件        2994  2019-01-19 09:48  MAP\build\CMakeFiles\Makefile2
     文件           2  2019-01-19 09:48  MAP\build\CMakeFiles\progress.marks
     文件         140  2019-01-19 09:48  MAP\build\CMakeFiles\TargetDirectories.txt
     文件       12696  2019-01-19 09:48  MAP\build\CMakeFiles\feature_tests.bin
     文件         611  2019-01-19 09:48  MAP\build\CMakeFiles\CMakeDirectoryInformation.cmake
     文件          85  2019-01-19 09:48  MAP\build\CMakeFiles\cmake.check_cache
     文件       10011  2019-01-19 09:48  MAP\build\CMakeFiles\feature_tests.cxx
     文件         688  2019-01-19 09:48  MAP\build\CMakeFiles\feature_tests.c
     文件       40485  2019-01-19 09:48  MAP\build\CMakeFiles\CMakeOutput.log
     目录           0  2019-01-19 09:48  MAP\build\CMakeFiles\CMakeTmp\
     目录           0  2019-01-19 09:48  MAP\build\CMakeFiles\3.5.1\
............此处省略22个文件信息

评论

共有 条评论