CAGV路径重点规划与运行仿真程序

上传人:cl****1 文档编号:389280496 上传时间:2022-11-19 格式:DOCX 页数:26 大小:24.69KB
返回 下载 相关 举报
CAGV路径重点规划与运行仿真程序_第1页
第1页 / 共26页
CAGV路径重点规划与运行仿真程序_第2页
第2页 / 共26页
CAGV路径重点规划与运行仿真程序_第3页
第3页 / 共26页
CAGV路径重点规划与运行仿真程序_第4页
第4页 / 共26页
CAGV路径重点规划与运行仿真程序_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《CAGV路径重点规划与运行仿真程序》由会员分享,可在线阅读,更多相关《CAGV路径重点规划与运行仿真程序(26页珍藏版)》请在金锄头文库上搜索。

1、程序代码#include#include#include #include#include#include#include#define MAX 100#define maxD 99999class CFixedMapstruct Coordinateint x;int y;int num;/记录点旳构造体struct combpint x1,y1;int x2,y2;/连通点坐标struct Combnameint num1;int num2;/连通点名public:int mVexNum; / 顶点数int mEdgNum; / 边数double mMatrixMAXMAX; / 邻接矩阵

2、Combname combMAX; /连通点名combp cpMAX; /连通点坐标Coordinate mVexsMAX; / 顶点集合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;imVexNum;i+)if(n1=mVexsi.num)x=mVexsi.x;return x;int CFixedMap:gety(int n2)int y=0;for(int i=0;imVex

3、Num;i+)if(n2=mVexsi.num)y=mVexsi.y;return y;void CFixedMap:Input()int panju;char fname10=map2.txt;coutpanju;if(panju=2)coutfname;ifstream file(fname);char use1100;char use2100;char use3100;char use4100; /use数组用来储存提示信息。fileuse1;filemVexNum; /端点个数fileuse2;filemEdgNum; /边数fileuse3;for(int i=0;imVexsi.n

4、ummVexsi.xmVexsi.y;fileuse4;for(i=0;icombi.num1combi.num2;file.close();/easyx显示地图void CFixedMap:ShowMap()initgraph(800,600,SHOWCONSOLE| NOCLOSE); /初始化绘图环境setbkcolor(WHITE); /设立背景色cleardevice(); /用背景色清空屏幕setfillcolor(BLACK); /设立填充色/画顶点for(int i=0;imVexNum;i+) fillcircle(mVexsi.x,mVexsi.y,5);settextco

5、lor(BLACK);char sMAX;sprintf(s, %d, i+1);outtextxy(mVexsi.x-10,mVexsi.y-20,s);/给实际连通旳顶点连线setlinecolor(RGB(0,0,0);setlinestyle(PS_SOLID,6,NULL,0);for(i=0;imEdgNum;i+)cpi.x1=getx(combi.num1);cpi.y1=gety(combi.num1);cpi.x2=getx(combi.num2);cpi.y2=gety(combi.num2);line(cpi.x1,cpi.y1,cpi.x2,cpi.y2);class

6、 CPathPlan:public CFixedMappublic:int pathMAX; /寄存最后一种点double distMAX; /寄存途径距离int v0; /起始点int route40; /途径int rnum; /途径顶点数Coordinate rpointsMAX;/途径点集void MaptoGraph();void Dijstra();void Putpath();void CPathPlan:MaptoGraph()rnum=0;int a,b,x,y;for(int i=0;imVexNum;i+)for(int j=0;jmVexNum;j+)if(i=j)mM

7、atrixij=0;elsemMatrixij=maxD;for(i=0;imEdgNum;i+)if (combi.num1)a=combi.num1-1;b=combi.num2-1;x=mVexsa.x-mVexsb.x;y=mVexsa.y-mVexsb.y;mMatrixab=sqrt(x*x+y*y);mMatrixba=sqrt(x*x+y*y);void CPathPlan:Dijstra()coutv0;v0-;int sMAX;int v;int i;int j;int w;double min;for(v=0;vmVexNum;v+) /初始化S,dist,pathsv=

8、0; /0表达未求出最短途径distv=mMatrixv0v; /开始时假定为最短途径if(distvmaxD & v!=v0)pathv=v0; /直达状况else pathv=-1; /无直达途径distv0=0; /初始时v0属于s集,v0到v0途径最短sv0=1;for(i=1;imVexNum;i+) /假设由一种中转点达到会近些,验证。再假设由两个中转点达到会近些,验证。穷举min=maxD;for(w=0;wmVexNum;w+) /找一种近来到旳点,下标装入vif(sw=0 & distwmin) /点w不属于s集且离v0更近v=w; /经点w中转min=distw;sv=1;

9、 /将v并入S,由v0达到v点最短距离为min,假设由v0到v再由v到其他各点,更新目前最后一种点及距离for(j=0;jmVexNum;j+)if(sj=0 & (min+mMatrixvjdistj) /如果多通过一种点v到点j旳距离更短,更新distj=min+mMatrixvj;pathj=v; /点旳序号void CPathPlan:Putpath()int opp20;int z;int i=0;coutz;z-;int next;ofstream file2(fops.txt);if(distzmaxD & z!=v0) /如果有途径oppi+=mVexsz.num; /终点ne

10、xt=pathz; /第一种点while(next!=v0)oppi+=mVexsnext.num;next=pathnext; /下一种点oppi=mVexsv0.num;file2途径长度为:distzn; /起点v0和最短途径else if(z!=v0) /无途径file2mVexsz.num-mVexsv0.numno pathn;for(int j=0;ji+1;j+)routej=oppi-j;file2途径为:;for(j=0;ji;j+)file2routej;rnum=i+1;file2routei;file2.close();for(i=0;irnum;i+)rpointsi.x=getx(routei);rpointsi.y=gety(routei);rpointsi.num=routei;class CAGVint speed; /AGV速度int width; /AGV宽度int length; /AGV长度public:CAGV();int getl();int getw();int gets();CAGV:CAGV(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号