• 大小: 1.73MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-11
  • 语言: C/C++
  • 标签:

资源简介

在已知AGV运行的地图(可手动输入)和AGV运行速度的情况下实现单台AGV路径规划的最短路径算法,并动态显示AGV的运行。同时给出了两个地点两台AGV的自动分配最短路径规划的算法并动态显示。

资源截图

代码片段和文件信息

#include 
#include 
#include  
#include  
#include 
#include  
#include  
#include   
#define  MAX  100 
#define  maxD 99999  

class Matrix
{
private:
    double matrix[MAX][MAX];
public:
double getm (int aint b)
{
return matrix[a][b];
}
void change (int aint bdouble x)
{
matrix[a][b]=x;
}
};

Matrix mat;

float ma(float afloat b)
{
if (a>b)
return a;
else
return b;
}

float mi(float afloat bfloat cfloat d)
{
float q[4];
q[0]=a;q[1]=b;q[2]=c;q[3]=d;
for(int i=0;i<4;i++)
{
if (q[0]>q[i])
q[0]=q[i];
}
return q[0];
}

struct  Coordinate 
{   
int x; 
int y;   
int num; 
};//记录点的结构体 

class CFixedMap 
{  
private:
struct combp 
{   
int x1y1;
int x2y2;
};//连通点坐标
struct Combname
{
int num1;
int num2;
};//连通点名
combp cp[MAX];                 //连通点坐标
public: 
Matrix *matr;
CFixedMap ()
{
matr=&mat;
}
int mEdgNum;       
Combname comb[MAX];            //连通点名
int mVexNum;                   // 顶点数
double mMatrix[MAX][MAX];         // 邻接矩阵
Coordinate mVexs[MAX];         // 顶点集合
int getx(int n1);
int gety(int n2);
void Input();//以文件方式输入地图信息
void ShowMap();//easyx显示地图
 };

int CFixedMap::getx(int n1)
{
int x=0;
for(int i=0;i if(n1==mVexs[i].num)
x=mVexs[i].x;
return x;
}
int CFixedMap::gety(int n2)
{
int y=0;
for(int i=0;i if(n2==mVexs[i].num)
y=mVexs[i].y;
return y;
}
void CFixedMap::Input()
{
int panju;
char fname[10]={“map.txt“};
cout<<“是否载入默认地图?(1:是,2:否)“;
cin>>panju;
if(panju==2)
{
cout<<“请输入地图信息文件名:“;
cin>>fname;
}
ifstream file(fname);
char use1[100];
char use2[100];
char use3[100];
char use4[100];          //use数组用来储存提示信息。
file>>use1;
file>>mVexNum;         //端点个数
file>>use2;
file>>mEdgNum;         //边数
file>>use3;
for(int i=0;i {
file>>mVexs[i].num>>mVexs[i].x>>mVexs[i].y;
}
file>>use4;
for(i=0;i {
file>>comb[i].num1>>comb[i].num2;
}
file.close();
}

//easyx显示地图
void CFixedMap::ShowMap()
{
initgraph(850850SHOWCONSOLE| NOCLOSE);     //初始化绘图环境
setwritemode(R2_COPYPEN);
setbkcolor(BLACK);      //设置背景色
cleardevice();          //用背景色清空屏幕
setfillcolor(WHITE);      //设置填充色
//给实际连通的顶点连线
setlinecolor(WHITE);
setlinestyle(PS_SOLID6NULL0);
for(int i=0;i {
cp[i].x1=getx(comb[i].num1);
cp[i].y1=gety(comb[i].num1);
cp[i].x2=getx(comb[i].num2);
cp[i].y2=gety(comb[i].num2);
line(cp[i].x1cp[i].y1cp[i].x2cp[i].y2);
}
//画顶点
for(i=0;i {
fillcircle(mVexs[i].xmVexs[i].y5);
settextcolor(BLACK);
char s[MAX];
sprintf(s “%d“ i+1);
settextcolor(YELLOW);
outtextxy(mVexs[i].x+20mVexs[i].y-20s);
}
}

class CPathPlan:public CFixedMap
{
private:
int panduan;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-06-18 09:35  程序\
     文件       20206  2019-06-18 09:03  程序\AGV.cpp
     文件        3365  2019-06-28 19:36  程序\AGV.dsp
     文件         514  2019-06-28 19:38  程序\AGV.dsw
     文件       41984  2019-06-28 19:38  程序\AGV.ncb
     文件       48640  2019-06-28 19:38  程序\AGV.opt
     文件       30059  2019-06-28 19:36  程序\AGV.plg
     目录           0  2019-06-28 19:36  程序\Debug\
     文件      340059  2019-06-28 19:36  程序\Debug\AGV.exe
     文件      480680  2019-06-28 19:36  程序\Debug\AGV.ilk
     文件       67407  2019-06-28 19:36  程序\Debug\AGV.obj
     文件     4206576  2019-06-28 19:36  程序\Debug\AGV.pch
     文件      574464  2019-06-28 19:36  程序\Debug\AGV.pdb
     文件      181248  2019-06-28 19:36  程序\Debug\vc60.idb
     文件      102400  2019-06-28 19:36  程序\Debug\vc60.pdb
     文件         941  2019-06-09 20:25  程序\map.txt

评论

共有 条评论