交通咨询模拟系统实验报告

合集下载

交通仿真实验报告

交通仿真实验报告

交通仿真实验报告1. 引言交通仿真是通过模拟真实道路交通环境来研究交通流动规律的一种方法。

本文旨在通过交通仿真实验来探讨交通拥堵的产生原因,并提出相应的改善措施。

2. 实验目的本次实验的目的是通过仿真模拟交通流动情况,分析交通拥堵的产生原因,并研究改善措施,从而为实际交通管理和规划提供参考。

3. 实验环境和工具本次实验使用了MATLAB软件来进行交通仿真。

MATLAB是一种常用的科学计算软件,它具有强大的数据处理和可视化分析能力,非常适合用于交通仿真实验。

4. 实验步骤4.1 数据收集首先,我们需要收集实际交通流动的数据,包括车辆数量、车速、车道宽度等信息。

这些数据可以通过交通摄像头、交通流量统计仪等设备来获取。

4.2 地图建模根据收集到的数据,我们可以使用MATLAB来建立交通仿真的地图模型。

地图模型应该包括道路、车辆和交通设施等元素,以尽可能真实地模拟实际交通情况。

4.3 交通流动仿真在地图模型建立完成后,我们可以进行交通仿真实验了。

通过设置不同的道路条件和车辆行为参数,观察交通流动情况,并记录相关数据。

4.4 数据分析在完成交通仿真后,我们可以对实验数据进行分析。

通过分析车辆密度、车速、道路容量等指标,可以找出交通拥堵产生的原因,如道路狭窄、车辆行为不当等。

4.5 改善措施根据实验数据分析的结果,我们可以提出相应的改善措施。

例如,如果发现道路狭窄导致交通拥堵,可以建议改扩建道路;如果发现车辆行为不当导致交通拥堵,可以建议加强交通法律法规的宣传和执行。

5. 结果与讨论根据实验数据分析的结果,我们可以得出交通拥堵产生的原因和相应的改善措施。

同时,我们还可以讨论交通仿真的局限性和不足之处,并提出进一步改进的建议。

6. 结论通过本次交通仿真实验,我们深入了解了交通拥堵的产生原因,并提出了改善措施。

交通仿真在交通管理和规划中具有重要的应用价值,可以帮助我们更好地理解和改善交通流动情况。

7. 参考文献[1] Smith, M. J. (1995). Traffic flow fundamentals. Transportation Research Part B: Methodological, 29(2), 145-160.[2] Treiber, M., Hennecke, A., & Helbing, D. (2000). Congested traffic states in empirical observations and microscopic simulations. Physical Review E, 62(2), 1805-1824.[3] 王晓晖. (2010). 基于交通仿真的交通流动研究[D]. 吉林大学.以上是本次交通仿真实验报告的详细内容。

2数据结构——全国交通咨询模拟系统实验报告

2数据结构——全国交通咨询模拟系统实验报告

2数据结构——全国交通咨询模拟系统实验报告全国交通咨询模拟一、设计目的掌握线性表、栈、图结构和对文件的操作,学习屏幕编辑和菜单技术,掌握用最短路径及其搜索算法编制较综合性的程序,能用图的邻接存储结构求解最优路线问题,解决有关实际问题。

得到软件设计技能的训练。

二、问题描述交通咨询模拟。

根据旅客的不同需要,要考虑到旅客希望在旅途中的时间尽可能短、希望旅费尽可能省等的要求。

三、基本要求1、对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能;2、对城市间的交通工具:火车。

对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除;3、提供两种最优决策:最快到达或最省钱到达。

全程只考虑一种交通工具,可以不考虑回程;4、咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。

由用户选择最优决策原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间,并详细说明依次于何时何地乘坐哪一趟列车何时到达何地。

四、具体实现1、思路(1) 数据存储。

城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。

在实验中本想用文本储存数据,但操作不熟悉,而是改用图的邻接矩阵储存原始信息,而后用数组进行添加删改(2) 数据的逻辑结构。

根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为无向图,图的顶点是城市,边是城市之间所耗费的时间(要包括中转站的时间)或旅费。

(3) 数据的存储结构。

采用邻接表和邻接矩阵都可作为数据的存储结构,这里建议采用邻接矩阵作为数据的存储结构。

(4) 用不同的功能模块对城市信息和交通信息进行编辑。

添加、修改、删除功能可用菜单方式或命令提示方式。

只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面,具体实现由学生自行设计,也可参考有关程序(届时在网上提供)。

这些工作有不小的工作量。

智能交通管理系统仿真实验报告

智能交通管理系统仿真实验报告

智能交通管理系统仿真实验报告一、引言随着城市化进程的加速和汽车保有量的不断增长,交通拥堵、交通事故等问题日益严重,给人们的出行带来了极大的不便。

为了有效地解决这些问题,提高交通系统的运行效率和安全性,智能交通管理系统应运而生。

智能交通管理系统是将先进的信息技术、通信技术、控制技术等应用于交通领域,实现对交通流量、路况等信息的实时监测和分析,并通过优化交通信号控制、引导交通流量等手段,提高交通系统的整体性能。

本次实验旨在通过对智能交通管理系统的仿真研究,深入了解其工作原理和性能特点,为实际交通管理提供理论依据和技术支持。

二、实验目的1、熟悉智能交通管理系统的组成结构和工作原理。

2、掌握智能交通仿真软件的使用方法。

3、研究不同交通流量和路况下智能交通管理系统的性能表现。

4、分析智能交通管理系统对交通拥堵和交通事故的缓解效果。

三、实验设备与环境1、计算机:配置较高的台式计算机或笔记本电脑。

2、智能交通仿真软件:选用了具体软件名称仿真软件,该软件具有强大的交通建模和仿真功能,能够模拟各种交通场景和交通管理策略。

3、操作系统:Windows 10 操作系统。

四、实验原理智能交通管理系统主要由交通信息采集子系统、交通信息处理与分析子系统、交通信号控制子系统、交通诱导子系统等组成。

交通信息采集子系统通过各种传感器和监测设备,实时采集交通流量、车速、路况等信息;交通信息处理与分析子系统对采集到的信息进行处理和分析,提取有用的交通参数和特征;交通信号控制子系统根据交通流量和路况信息,优化交通信号控制方案,提高道路通行能力;交通诱导子系统通过可变信息标志、导航系统等,为出行者提供实时的交通信息和出行建议,引导交通流量合理分布。

智能交通仿真软件通过建立交通模型,模拟交通系统的运行过程,从而对智能交通管理系统的性能进行评估和优化。

在仿真过程中,可以设置不同的交通流量、路况、交通信号控制策略等参数,观察交通系统的运行状况和性能指标的变化。

工作报告-交通仿真实验报告

工作报告-交通仿真实验报告

工作报告-交通仿真实验报告标题:交通仿真实验报告一、实验目的本实验的目的是通过交通仿真技术对不同交通流量下的交通运行情况进行模拟分析,了解交通系统的瓶颈和拥堵点,为交通规划和交通管理提供科学依据。

二、实验原理交通仿真是一种基于计算机模拟的方法,通过模拟交通环境、车辆和交通参与者的行为,以及道路基础设施的运行情况,来预测交通运行状态。

本实验利用交通仿真软件,建立虚拟交通网络,模拟不同交通流量条件下的车辆运行情况和交通拥堵状况。

三、实验步骤1. 设定交通网络:根据实际道路网络,利用交通仿真软件搭建道路网络,并设置路段、路口等交通元素。

2. 设置交通流量:根据交通状况和实验需求,设定不同交通流量条件下的车辆出行规模和行为模式。

3. 运行仿真模拟:通过设置好的交通流量条件,运行交通仿真模拟,观察车辆的行驶状态、交通拥堵状况等。

4. 数据分析和结果统计:根据仿真结果,分析交通瓶颈、路段拥堵情况,统计车辆平均速度、通行时间等指标。

四、实验结果根据不同交通流量条件下的仿真结果,得到以下结论:1. 随着交通流量的增加,道路网络的通行能力减小,交通拥堵现象显著增加。

2. 部分路段和路口成为交通瓶颈,导致交通拥堵点集中出现。

3. 车辆平均速度和通行时间与交通流量呈反比关系。

五、实验总结通过交通仿真实验,我们可以实现对交通系统的模拟和分析,了解交通运行状态和瓶颈所在,为交通规划和交通管理提供科学依据。

然而,交通仿真实验还需要综合考虑多个因素,如道路设计、信号控制等,以提高模拟结果的准确性和可靠性。

六、存在问题和改进措施在本实验中,由于部分交通仿真软件的局限性和数据不准确性,导致仿真结果的准确性尚有待提高。

为此,我们应该在选择仿真软件时进行全面评估,并准确获取实际交通数据,以提高实验结果的可靠性。

七、进一步研究展望基于交通仿真技术的研究还可以拓展到更广泛的领域,如城市交通规划、智能交通系统等。

未来的研究可以结合实际交通数据和智能算法,进一步提高交通仿真的准确性和实用性。

全国交通咨询模拟系统

全国交通咨询模拟系统

全国交通咨询模拟系统系统背景随着我国经济的快速发展,交通出行已经成为人们日常生活中不可或缺的一部分。

不仅高速公路、铁路、城市轨道交通、公共汽车等交通工具不断完善,而且智能化、自动化、先进化等新兴技术也在交通领域变得越来越普及。

但是在日常出行中,人们难免会遇到交通拥堵、事故等问题,对于这些问题,如果及时得到准确可靠的信息,将大大缩短人们的出行时间,帮助人们更快地解决问题。

因此,我们开发了一款全国交通咨询模拟系统,帮助人们快速获取各地交通信息、查询交通路线、实时交通情况等信息,缩短出行时间,提高出行效率,让人们更加便捷的出行。

系统功能1. 查询交通信息全国交通咨询模拟系统提供了各地铁路、航班、长途汽车的信息查询功能,用户可通过输入出发地和目的地信息,查询出该区域的所有交通信息。

同时提供了乘车时间和价格等信息,方便用户选择最优出行方式。

2. 实时交通情况查询全国交通咨询模拟系统为用户提供了实时交通情况查询功能,用户可通过输入出行路线,系统将返回该路线的实时情况,包括此时此刻的路况、车流量、拥堵情况、事故情况等,方便用户对出行进行最佳规划。

3. 路线规划全国交通咨询模拟系统提供了路线规划的功能,用户输入起点和终点的位置信息,系统将为用户快速规划出一条最优的路线。

此外,该系统还提供了多条路线的选择,用户可以根据自己的需求进行选择。

4. 路况预报全国交通咨询模拟系统还提供了路况预报的功能,即用户可以预先了解某段道路的车流量、拥堵情况等。

系统通过大数据分析和深度学习等技术,对路况进行精准预测,使用户能够提前规划出行。

5. 存储建议全国交通咨询模拟系统可为用户存储出行建议,用户可以按照自己的需求,将出行建议进行收藏、备份和删除,方便后续使用。

系统优势1. 数据准确性高全国交通咨询模拟系统通过各种渠道收集、整理和分析各地交通数据,确保提供给用户的是准确可靠的信息。

2. 使用简单该系统的使用非常简单,用户只需按照系统提示输入需要查询的信息,系统将自动返回相应的结果。

全国交通咨询模拟系统实验报告

全国交通咨询模拟系统实验报告

全国交通咨询模拟系统实验报告Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT一、问题描述全国交通咨询模拟:处于对不同目的的旅客对交通工具有不同的要求。

例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。

编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。

【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。

(2)城市之间有两种交通工具:火车和飞机。

提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。

(3)提供两种最优决策:最快到达或最省钱到达。

全程只考虑一种交通工具。

(4)旅途中耗费的总时间应该包括中转站的等候时间。

(5)咨询以用户和计算机的对话方式进行。

由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。

二、1、根据题目中的基本要求分析,可以创建系统概念模型,流程设计框图如下:班次辑结构拆分:而为了便于数据的存储、添加、删除等操作,我选择了储存文件对这些数据进行了存储。

将每个信息量放在不同的文件中,可以更有效、直观地对这些数据进行处理。

流程图中的7个主要功能模块在主函数中,采用输入选项进入子菜单,但是其他操作都是在路线添加好后进行的,并且为了每一项功能进行完后,系统可以及时回到主交互界面,我采用的是无限循环形式,即while(1)。

以邻接表作交通图的存储结构,表示边的结点内除含有邻接点的信息外,包括交通工具、路程中消耗的时间和花费以及出发和到达的时间等多项属性。

三、主控及功能模块层次结构:1、模块说明:本系统分为个模块1、)主函数2、)添加城市3、)查找城市并返回序号4、)删除城市5、)添加列车6、)添加航班7、)删除列车或航班8、)找出最小费用路线9、)初始化系统数据(读入内存)10、)找出最快路线11、)计算最快路线耗费的时间并打印12、)计算最小费用路线13、)主界面14、)存储信息到文件15、)退出、2、下面是各模块示意图:基本操作:函数变量声明:#include <>#include <>#define ERR 0#define OK 1#define Dij_MAXN 33#define MAX_VERTEX_NUM 31#define MAX_STRING_NUM 10#define MAX_TRAFFIC_NUM 10const char CityFile[] ="D:\\";const char TrainFile[] ="D:\\";const char FlightFile[] ="D:\\";typedef short int CityType;typedef struct TrafficNode{char name[MAX_STRING_NUM]; rainNum;}fprintf(fp,"%d\n",total);for (i=0;i<CityNum;i++){for (j=0;j<AdjList[i].TrainNum;j++){fprintf(fp,"%s %s %s ", AdjList[i].Train[j].name,CityName[i],CityName[AdjList[i].Train[j].EndCity]);fprintf(fp,"%2d:%2d %2d:%2d %d\n", AdjList[i].Train[j].StartTime/60, AdjList[i].Train[j].StartTime%60,AdjList[i].Train[j].StopTime/60,AdjList[i].Train[j].StopTime%60,AdjList[i].Train[j].Cost);}}fclose(fp);total=0;fp=fopen(FlightFile,"w");for (i=0;i<CityNum;i++){total+=AdjList[i].FlightNum;}fprintf(fp,"%d\n",total);for (i=0;i<CityNum;i++){for (j=0;j<AdjList[i].FlightNum;j++){fprintf(fp,"%s %s %s ", AdjList[i].Flight[j].name,CityName[i],CityName[AdjList[i].Flight[j].EndCity]);fprintf(fp,"%2d:%2d %2d:%2d %d\n", AdjList[i].Flight[j].StartTime/60, AdjList[i].Flight[j].StartTime%60,AdjList[i].Flight[j].StopTime/60,AdjList[i].Flight[j].StopTime%60,AdjList[i].Flight[j].Cost);}}fclose(fp);return 1;}(4)添加城市:int InsertCity (char *Name){strcpy(CityName[CityNum],Name);AdjList[CityNum].city=CityNum;AdjList[CityNum].FlightNum=0;AdjList[CityNum].TrainNum=0;CityNum++;return 1;}(5)删除城市:int DelCity (char *Name){int city,i,j;city=SeekCity(Name);for (i=city;i<CityNum-1;i++){strcpy(CityName[i],CityName[i+1]);AdjList[i].FlightNum=AdjList[i+1].FlightNum;AdjList[i].TrainNum=AdjList[i+1].TrainNum;for (j=0;j<AdjList[i].FlightNum;j++){AdjList[i].Flight[j].Cost=AdjList[i+1].Flight[j].Cost;AdjList[i].Flight[j].EndCity=AdjList[i+1].Flight[j].EndCity;strcpy(AdjList[i].Flight[j].name,AdjList[i+1].Flight[j].name);AdjList[i].Flight[j].StartTime=AdjList[i+1].Flight[j].StartTime; AdjList[i].Flight[j].StopTime=AdjList[i+1].Flight[j].StopTime;}}CityNum--;return 1;}(6)添加火车路线:int InsertTrain (char *train,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost){int i,j;i=SeekCity(StartCity);j=SeekCity(EndCity);AdjList[i].Train[AdjList[i].TrainNum].Cost=cost;AdjList[i].Train[AdjList[i].TrainNum].EndCity=j;AdjList[i].Train[AdjList[i].TrainNum].StartTime=StartTime;AdjList[i].Train[AdjList[i].TrainNum].StopTime=EndTime;strcpy(AdjList[i].Train[AdjList[i].TrainNum].name,train);AdjList[i].TrainNum++;return 1;}(7)添加航班路线:int InsertFlight(char *flight,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost){int i,j;i=SeekCity(StartCity);j=SeekCity(EndCity);AdjList[i].Flight[AdjList[i].FlightNum].Cost=cost;AdjList[i].Flight[AdjList[i].FlightNum].EndCity=j;AdjList[i].Flight[AdjList[i].FlightNum].StartTime=StartTime;AdjList[i].Flight[AdjList[i].FlightNum].StopTime=EndTime;strcpy(AdjList[i].Flight[AdjList[i].FlightNum].name,flight);AdjList[i].FlightNum++;return 1;}(8)删除路线:int DelPath (char *name){int i,j,flag=0;for (i=0;i<CityNum;i++){for (j=0;j<AdjList[i].FlightNum;j++)if (strcmp(AdjList[i].Flight[j].name,name)==0){flag=1;break;}if (flag){for (;j<AdjList[i].FlightNum-1;j++){AdjList[i].Flight[j].Cost=AdjList[i].Flight[j+1].Cost;AdjList[i].Flight[j].EndCity=AdjList[i].Flight[j+1].EndCity;strcpy(AdjList[i].Flight[j].name,AdjList[i].Flight[j+1].name); AdjList[i].Flight[j].StartTime=AdjList[i].Flight[j+1].StartTime; AdjList[i].Flight[j].StopTime=AdjList[i].Flight[j+1].StopTime;}AdjList[i].FlightNum--;break;}for (j=0;j<AdjList[i].TrainNum;j++)if (strcmp(AdjList[i].Train[j].name,name)==0){flag=1;break;}if (flag){for (;j<AdjList[i].TrainNum-1;j++){AdjList[i].Train[j].Cost=AdjList[i].Train[j+1].Cost;AdjList[i].Train[j].EndCity=AdjList[i].Train[j+1].EndCity;strcpy(AdjList[i].Train[j].name,AdjList[i].Train[j+1].name);AdjList[i].Train[j].StartTime=AdjList[i].Train[j+1].StartTime;AdjList[i].Train[j].StopTime=AdjList[i].Train[j+1].StopTime;}AdjList[i].TrainNum--;break;}}return 1;}(9)打印最小费用路线:void Dijkstra_Output(int matx[Dij_MAXN][Dij_MAXN],int PreCity[Dij_MAXN],intp_end,int TravelType){int track[Dij_MAXN];int i=0,j,k,min,tmp,end,cost=0;int startH, startM, endH, endM;rainNum;k++)if(AdjList[track[i]].Train[k].EndCity==end&&min>AdjList[track[i]].Train[k].Cost){min=AdjList[track[i]].Train[k].Cost;tmp=k;}printf("%s ",AdjList[track[i]].Train[tmp].name);startH = AdjList[track[i]].Train[tmp].StartTime/60 ;startM =AdjList[track[i]].Train[tmp].StartTime%60;endH = AdjList[track[i]].Train[tmp].StopTime/60 ;endM = AdjList[track[i]].Train[tmp].StopTime%60 ;if( !(startH/10) ){printf("0");}printf("%d:",startH);if( !(startM/10) ){printf("0");}printf("%d -- ",startM);if( !(endH/10) ){printf("0");}printf("%d:",endH);if( !(endM/10) ){printf("0");}printf("%d\n",endM);rain[tmp].StartTime/60,AdjList[track[i]].Train[tmp].StartTime%60,AdjList[track[i]].Tr ain[tmp].StopTime/60,AdjList[track[i]].Train[tmp].StopTime%60);}}else{for(i--;i>0;i--){printf("\n%s:",CityName[track[i]]);end=track[i-1];min=32767;for (k=0;k<AdjList[track[i]].FlightNum;k++)rain[k].EndCity改为AdjList[track[i]].Flight[k].EndCity!/*if(AdjList[track[i]].Train[k].EndCity==end&&min>AdjList[track[i]].Flight[k].Cost){ */if(AdjList[track[i]].Flight[k].EndCity==end&&min>AdjList[track[i]].Flight[k].Cost){min=AdjList[track[i]].Flight[k].Cost;tmp=k;}printf("%s",AdjList[track[i]].Flight[tmp].name);startH =AdjList[track[i]].Flight[tmp].StartTime / 60 ;startM =AdjList[track[i]].Flight[tmp].StartTime % 60;endH =AdjList[track[i]].Flight[tmp].StopTime / 60 ;endM =AdjList[track[i]].Flight[tmp].StopTime % 60 ;if( !(startH/10) ){printf("0");}printf("%d:",startH);if( !(startM/10) ){printf("0");}printf("%d -- ",startM);if( !(endH/10) ){printf("0");}printf("%d:",endH);if( !(endM/10) ){printf("0");}printf("%d\n",endM);light[tmp].StartTime / 60,AdjList[track[i]].Flight[tmp].StartTime %60,AdjList[track[i]].Flight[tmp].StopTime / 60,AdjList[track[i]].Flight[tmp].StopTime % 60);}}printf("\n%s: DESTINATION!",CityName[track[0]]);printf("\nMin Cost : %d\n",cost);}(10)找出最小费用路线void Dijkstra(int matx[Dij_MAXN][Dij_MAXN],int p_start,int p_end,int TravelType) {int PreCity[Dij_MAXN]; .\n");return -1;}fscanf(fp,"%d",&CityNum);for (i=0;i<CityNum;i++){fscanf(fp,"%s",&CityName[i]);AdjList[i].city=i;AdjList[i].TrainNum=0;AdjList[i].FlightNum=0;}fclose(fp);fp=fopen(TrainFile,"r");if (!fp){printf("\nError:Cannot Open Train File...\n");return -1;}fscanf(fp,"%d",&num);for (i=0;i<num;i++){fscanf(fp,"%s",&stmp1);fscanf(fp,"%s",&stmp2);fscanf(fp,"%s",&stmp3);j=SeekCity(stmp2);AdjList[j].Train[AdjList[j].TrainNum].EndCity=SeekCity(stmp3); strcpy(AdjList[j].Train[AdjList[j].TrainNum].name,stmp1);fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Train[AdjList[j].TrainNum].StartTime=hour*60+minute; fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Train[AdjList[j].TrainNum].StopTime=hour*60+minute; fscanf(fp,"%d",&cost);AdjList[j].Train[AdjList[j].TrainNum].Cost=cost;AdjList[j].TrainNum++;}fclose(fp);fp=fopen(FlightFile,"r");if (!fp){printf("\nError:Cannot Open Flight File...\n");return -1;}fscanf(fp,"%d",&num);for (i=0;i<num;i++){fscanf(fp,"%s",&stmp1);fscanf(fp,"%s",&stmp2);fscanf(fp,"%s",&stmp3);j=SeekCity(stmp2);AdjList[j].Flight[AdjList[j].FlightNum].EndCity=SeekCity(stmp3); strcpy(AdjList[j].Flight[AdjList[j].FlightNum].name,stmp1);fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Flight[AdjList[j].FlightNum].StartTime=hour*60+minute; fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Flight[AdjList[j].FlightNum].StopTime=hour*60+minute; fscanf(fp,"%d",&cost);AdjList[j].Flight[AdjList[j].FlightNum].Cost=cost;AdjList[j].FlightNum++;}fclose(fp);return 1;}(12)找出最快路线:int SearchMinTime (CityType City,CityType EndCity,int CurTime,int curPathNo,int TravelType){int i;if (City==EndCity){if (MinTime>CurTime-StartTime){for (i=0;i<=curPathNo;i++){MinPath[i].City=Path[i].City;MinPath[i].TraNo=Path[i].TraNo;curPath=curPathNo;}MinTime=CurTime-StartTime;}}else{curPathNo++;Path[curPathNo].City=City;if (!TravelType){for (i=0;i<AdjList[City].TrainNum;i++){if((AdjList[City].Train[i].StartTime>=(CurTime%1440))&&(AdjList[City].Train[i].StopT ime+(CurTime/1440)*1440-StartTime<MinTime)){Path[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Train[i].EndCity,EndCity,AdjList[City].Train[i].StopTim e+(CurTime/1440)*1440,curPathNo,TravelType);}if((AdjList[City].Train[i].StartTime<(CurTime%1440))&&(AdjList[City].Train[i].StopTi me+(CurTime/1440)*1440-StartTime<MinTime)){Path[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Train[i].EndCity,EndCity,AdjList[City].Train[i].StopTim e+(CurTime/1440+1)*1440,curPathNo,TravelType);}}}else{for (i=0;i<AdjList[City].FlightNum;i++){if((AdjList[City].Flight[i].StartTime>=CurTime)&&(AdjList[City].Flight[i].StopTime+(C urTime/1440)*1440-StartTime<MinTime)){Path[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Flight[i].EndCity,EndCity,AdjList[City].Flight[i].StopTi me+(CurTime/1440)*1440,curPathNo,TravelType);}if((AdjList[City].Flight[i].StartTime<CurTime)&&(AdjList[City].Flight[i].StopTime+(Cur Time/1440)*1440-StartTime<MinTime)){Path[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Flight[i].EndCity,EndCity,AdjList[City].Flight[i].StopTi me+(CurTime/1440+1)*1440,curPathNo,TravelType);}}}}return 1;}(13)计算最快路线所需时间并打印:int CalcMinTime (int StartCity,int EndCity,int TravelType){int i;int startH, startM, endH, endM;ity=StartCity;if (!TravelType){for (i=0;i<AdjList[StartCity].TrainNum;i++){Path[0].TraNo=i;StartTime=AdjList[StartCity].Train[i].StartTime;SearchMinTime(AdjList[StartCity].Train[i].EndCity,EndCity,AdjList[StartCity].Train[i ].StopTime,0,TravelType);}}else{for (i=0;i<AdjList[StartCity].FlightNum;i++){Path[0].TraNo=i;StartTime=AdjList[StartCity].Flight[i].StartTime;SearchMinTime(AdjList[StartCity].Flight[i].EndCity,EndCity,AdjList[StartCity].Flight[ i].StopTime,0,TravelType);}}if (MinTime==32767){printf("\nNo access to that destination!");return 0;}rain[MinPath[0].TraNo].StartTime;light[MinPath[0].TraNo].StartTime;printf("\nPath:\n");for (i=0;i<=curPath;i++){if (!TravelType)printf("%s : %s",CityName[MinPath[i].City],AdjList[MinPath[i].City].Train[MinPath[i].TraNo].name); elseprintf("%s : %s",CityName[MinPath[i].City],AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].name);startH =AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime / 60 ;startM =AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime % 60 ;endH =AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime / 60 ;endM =AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime % 60 ;if( !(startH/10) ){printf("0");}printf("%d:",startH);if( !(startM/10) ){printf("0");}printf("%d -- ",startM);if( !(endH/10) ){printf("0");}printf("%d:",endH);if( !(endM/10) ){printf("0");}printf("%d\n",endM);rainNum){min=32767;end=AdjList[i].Train[j].EndCity;while(end==AdjList[i].Train[j].EndCity&&j<AdjList[i].TrainNum){if (AdjList[i].Train[j].Cost<min){min=AdjList[i].Train[j].Cost;}j++;}ma[i][end]=min;}}}else{for (i=0;i<CityNum;i++){min=32767;j=0;while (j<AdjList[i].FlightNum){min=32767;end=AdjList[i].Flight[j].EndCity;while(end==AdjList[i].Flight[j].EndCity&&j<AdjList[i].FlightNum){if (AdjList[i].Flight[j].Cost<min){min=AdjList[i].Flight[j].Cost;}j++;}ma[i][end]=min;}}}Dijkstra(ma,StartCity,EndCity,TravelType);return 1;}五、功能模块间函数的调用关系,如下图所示:1、主界面:2、添加城市:输入命令1后,按提示输入城市名,而后返回主界面原city文件:添加城市后的city文件:3、删除城市:输入命令2后,按提示输入城市名,而后返回主界面4、添加路线:输入命令3后,按提示依次输入起始站、终点站、类型、起始时刻、到达时刻、票价等信息,而后返回主界面添加路线后的train文件:5、删除路线:输入命令4后,按提示输入,而后返回主界面删除路线后的train文件:6、查找最小费用花费:输入命令5后,按提示输入起始城市、终点城市、类型,而后返回主界面结果正确!7、查找最小时间花费:输入命令6后,按提示输入城市名,而后返回主界面结果正确!8、退出:输入命令0后,退出系统七、课程设计小结:1、实验过程中的注意点1)遇到逻辑问题,然后设断点,调试跟踪看哪步出了问题.比如说全局变量和局部变量设置出现问题,导致运行过程各变量的取值不对。

交通系统仿真实验报告

交通系统仿真实验报告

道路交通系统仿真实验实验一 VISSIM班级:08交通工程学号:120081501131 姓名:王两全一、实验目的1.掌握用VISSIM绘制简单的路网;2.掌握如何给路网添加基本的路网元素(如:信号灯、路径决策、冲突区域、优先规则、公交站点等);3.掌握对仿真模型进行指标评价,包括行程时间、延误、排队长度以及相关参数的设置。

二、实验设备1.硬件要求:装有VISSIM的PC机一台;2.系统要求:能在Windows 2000、XP和VISTA环境下运行;三、实验要求在VISSIM中构建一个平面信号控制交叉口模型,不考虑行人和非机动车,具体要求见试卷。

四、实验内容与步骤1.绘制路网(1)根据实验要求导入背景图;(2)按照每车道宽3.5m设置比例尺参数,根据背景图绘制一个T形交叉口(北进口封闭),交叉口宽度:南北:45m、东西99m;(3)初步路网结果图.2.添加路网元素(1)对绘制好的路网标明车道方向;(2)输入车辆数:400辆/车道小时;(3)信号配时;(4)设置行驶路径决策;(5)设置一条跨越交叉口的公交线路并设置两种不同的公交站点:港湾式和路边式;(6)设置冲突区域。

(7)添加路网元素后的结果3.设置仿真评价指标(1)行程时间;创建时间检测,并在“评价->文件”进行行程时间检测设置。

(2)延误;(3)排队长度。

1.信号控制2.冲突区域通过该实验巩固了初步使用VISSIM对一个完整路网的构建,对Vissim 的各个功能有更深刻的了解。

但由于实验过程中可能有一些小细节出错了,导致两种控制方式的评价指标结果都一样,通过多次的调试仍然未找出错误的地方,这是该实验遗憾的地方。

理论上讲,该试验的交叉口可以看成是主干道与次干道的相交(东西为主干道,南北为次干道且),而且该交叉口的流量比较小,粗略判断应该是冲突区域控制会比信号控制更加优越。

同时,此次实验为我们以后自己动手进行交通仿真做了很好的铺垫。

交通仿真实习报告

交通仿真实习报告

交通仿真实习报告一、引言随着城市化进程的加速和人们对出行需求的不断提高,交通问题日益凸显。

为了解决实际交通问题,提高交通系统效率,我们进行了一次交通仿真实习。

本报告将详细介绍我们的仿真实习目的、方法、结果及结论。

二、仿真实习目的本次仿真实习的主要目的是通过模拟交通系统,深入了解交通流特性、交通拥堵形成原因、交通规划原则等,以期在实践中得到应用。

三、仿真实习方法我们采用了专业的交通仿真软件进行模拟实验。

我们构建了一个包含道路、交叉口、交通信号灯等基本交通设施的模型。

接着,我们设置了不同的交通流量和出行需求,观察交通运行情况。

同时,我们还通过调整交通信号灯的配时方案,研究其对交通流的影响。

四、仿真实习结果在模拟过程中,我们观察到了交通拥堵、车辆排队等现象。

通过数据分析,我们发现交通拥堵主要发生在道路节点处,如交叉口和交通信号灯处。

我们还发现交通信号灯配时不合理会加剧交通拥堵。

针对这些问题,我们提出了一些可能的解决方案,如优化交通信号灯配时、增加道路通行能力等。

五、结论与展望通过本次仿真实习,我们深入了解了交通系统的运行特性和存在的问题。

针对这些问题,我们提出了一些解决方案,以期在实际应用中得到改善。

然而,这只是初步的探索和研究,我们还需要在未来的学习和实践中不断深化和完善相关知识,为解决实际交通问题提供更有价值的参考。

仿真实习个人实习报告一、引言随着科技的发展和数字化时代的到来,仿真技术已经成为工程设计、生产规划和管理决策等方面的重要工具。

为了更好地掌握仿真技术的应用和实践,我参与了一次为期六周的仿真实习项目。

通过本次实习,我不仅了解了仿真模型的构建过程和基本原理,还深入学习了如何运用仿真技术解决实际问题。

以下是我对本次实习的总结和个人心得。

二、仿真实习概述在本次实习中,我参与的是一个生产流水线的仿真项目。

通过构建仿真模型,模拟生产线的运行过程,预测可能出现的瓶颈和问题,并制定相应的优化方案。

1、仿真模型的构建构建仿真模型是仿真的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、问题描述全国交通咨询模拟:处于对不同目的的旅客对交通工具有不同的要求。

例如, 因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。

编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。

1、根据题目中的基本要求分析,流程设计框图如下:255班次2、逻辑结构拆分:3、 1 2、)添加城市3、)查找城市并返回序号4、)删除城市5、)添加列车6、)添加航班7、)删除列车或航班8、)找出最小费用路线9、)初始化系统数据(读入内存)10、)找出最快路线11、)计算最快路线耗费的时间并打印12、)计算最小费用路线13、)主界面14、)存储信息到文件15、)退出、2、下面是各模块示意图:基本操作:函数变量声明:#include <stdio.h>#include <string.h>#define ERR 0#define OK 1#define Dij_MAXN 33#define MAX_VERTEX_NUM 31#define MAX_STRING_NUM 10{} TrafficNodeDat;typedef struct VNode{CityType city;int TrainNum,FlightNum; //标记下面Train数组和Flight数组里元素个数TrafficNodeDat Train[MAX_TRAFFIC_NUM]; //数组成员为结构体,记录了到达城市、起止时间、票价和班次TrafficNodeDat Flight[MAX_TRAFFIC_NUM]; // int Cost; //遍历时到达该城市的耗费(时间或者费用)} VNodeDat;typedef struct PNode{函数构成:int main(){char name[MAX_STRING_NUM];char s_city[MAX_STRING_NUM];char e_city[MAX_STRING_NUM];int Command,cost;int startcity,endcity,traveltype;int s_hour,s_minute,e_hour,e_minute;while (1){ShowMenu(); //显示菜单printf("System Info Save OK!\n");break;case 2: //删除城市InitSysData();printf("\n输入城市名:");scanf("%s",&name);DelCity(name);SaveSysInfo();printf("System Info Save OK!\n");break;case 3: //添加路线InitSysData();scanf("%2d:%2d",&e_hour,&e_minute);printf("票价:");scanf("%d",&cost);if (traveltype){InsertFlight(name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost);else{InsertTrain(name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost);}case 5: //最小耗费InitSysData();printf("\n起始城市:");scanf("%s",&name);startcity=SeekCity(name);if (startcity<0)printf("Error City Name:No such city!\n");break;}printf("终点城市:");scanf("%s",&name);break;}CalcMinCost(startcity,endcity,traveltype);printf("\n");break;case 6: //最短时间路线InitSysData();printf("\n起始城市:");scanf("%s",&name);startcity=SeekCity(name);if (startcity<0){printf("类型(列车0,航班1) :");scanf("%d",&traveltype);if (traveltype!=0&&traveltype!=1) {printf("Error Input!");break;}CalcMinTime(startcity,endcity,traveltype);printf("\n");break;}}查询最}(2)查找城市并返回城市序号:int SeekCity (char *name){int i;for (i=0;i<CityNum;i++)if (strcmp(name,CityName[i])==0){return i;}}}fclose(fp);total=0;fp=fopen(TrainFile,"w");for (i=0;i<CityNum;i++){total+=AdjList[i].TrainNum;fprintf(fp,"%d\n",total);for (i=0;i<CityNum;i++){for (j=0;j<AdjList[i].TrainNum;j++) {fp=fopen(FlightFile,"w");for (i=0;i<CityNum;i++){total+=AdjList[i].FlightNum;}fprintf(fp,"%d\n",total);for (i=0;i<CityNum;i++){for (j=0;j<AdjList[i].FlightNum;j++){fprintf(fp,"%s %s %s ", AdjList[i].Flight[j].name,CityName[i],int InsertCity (char *Name){strcpy(CityName[CityNum],Name);AdjList[CityNum].city=CityNum;AdjList[CityNum].FlightNum=0;AdjList[CityNum].TrainNum=0;CityNum++;return 1;}(5)删除城市:int DelCity (char *Name){strcpy(AdjList[i].Flight[j].name,AdjList[i+1].Flight[j].name);AdjList[i].Flight[j].StartTime=AdjList[i+1].Flight[j].StartTime;AdjList[i].Flight[j].StopTime=AdjList[i+1].Flight[j].StopTime;}}CityNum--;return 1;}(6)添加火车路线:int InsertTrain (char *train,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost) {int i,j;int InsertFlight(char *flight,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost) {int i,j;i=SeekCity(StartCity);j=SeekCity(EndCity);AdjList[i].Flight[AdjList[i].FlightNum].Cost=cost;AdjList[i].Flight[AdjList[i].FlightNum].EndCity=j;AdjList[i].Flight[AdjList[i].FlightNum].StartTime=StartTime; AdjList[i].Flight[AdjList[i].FlightNum].StopTime=EndTime; strcpy(AdjList[i].Flight[AdjList[i].FlightNum].name,flight); AdjList[i].FlightNum++;return 1;break;}if (flag){for (;j<AdjList[i].FlightNum-1;j++){AdjList[i].Flight[j].Cost=AdjList[i].Flight[j+1].Cost;AdjList[i].Flight[j].EndCity=AdjList[i].Flight[j+1].EndCity;strcpy(AdjList[i].Flight[j].name,AdjList[i].Flight[j+1].name);AdjList[i].Flight[j].StartTime=AdjList[i].Flight[j+1].StartTime;AdjList[i].Flight[j].StopTime=AdjList[i].Flight[j+1].StopTime; }{AdjList[i].Train[j].Cost=AdjList[i].Train[j+1].Cost;AdjList[i].Train[j].EndCity=AdjList[i].Train[j+1].EndCity;strcpy(AdjList[i].Train[j].name,AdjList[i].Train[j+1].name);AdjList[i].Train[j].StartTime=AdjList[i].Train[j+1].StartTime;AdjList[i].Train[j].StopTime=AdjList[i].Train[j+1].StopTime;}AdjList[i].TrainNum--;break;}}return 1;出发的{cost+=matx[PreCity[j]][j];track[i++]=j=PreCity[j];}printf("\nTrack Way:");if (!TravelType){for(i--;i>0;i--){printf("\n%s:",CityName[track[i]]);end=track[i-1];min=32767;for (k=0;k<AdjList[track[i]].TrainNum;k++)if( !(startH/10) ){printf("0");}printf("%d:",startH);if( !(startM/10) ){printf("0");}printf("%d -- ",startM);if( !(endH/10) ){);}}else{for(i--;i>0;i--){printf("\n%s:",CityName[track[i]]);end=track[i-1];min=32767;for (k=0;k<AdjList[track[i]].FlightNum;k++)//这句错了,AdjList[track[i]].Train[k].EndCity改为AdjList[track[i]].Flight[k].EndCity!startM = AdjList[track[i]].Flight[tmp].StartTime % 60;endH = AdjList[track[i]].Flight[tmp].StopTime / 60 ;endM = AdjList[track[i]].Flight[tmp].StopTime % 60 ;if( !(startH/10) ){printf("0");}printf("%d:",startH);if( !(startM/10) ){printf("0");}//printf("%2d:%2d-%2d:%2d",AdjList[track[i]].Flight[tmp].StartTime / 60,AdjList[track[i]].Flight[tmp].StartTime % 60,AdjList[track[i]].Flight[tmp].StopTime / 60,AdjList[track[i]].Flight[tmp].StopTime % 60);}}printf("\n%s: DESTINATION!",CityName[track[0]]);printf("\nMin Cost : %d\n",cost);}(10)找出最小费用路线void Dijkstra(int matx[Dij_MAXN][Dij_MAXN],int p_start,int p_end,int TravelType) {for (i=0;i<CityNum;i++)if (PreCity[i]!=-1){for (j=0;j<CityNum;j++)if(PreCity[j]==-1&&matx[i][j]>0&&(min<0||matx[i][j]<min)){pre=i;pos=j;min=matx[i][j];}}PreCity[pos]=pre;}{printf("\nError:Cannot Open City File...\n");return -1;}fscanf(fp,"%d",&CityNum);for (i=0;i<CityNum;i++){fscanf(fp,"%s",&CityName[i]);AdjList[i].city=i;AdjList[i].TrainNum=0;AdjList[i].FlightNum=0;}fscanf(fp,"%s",&stmp2);fscanf(fp,"%s",&stmp3);j=SeekCity(stmp2);AdjList[j].Train[AdjList[j].TrainNum].EndCity=SeekCity(stmp3);strcpy(AdjList[j].Train[AdjList[j].TrainNum].name,stmp1);fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Train[AdjList[j].TrainNum].StartTime=hour*60+minute; fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Train[AdjList[j].TrainNum].StopTime=hour*60+minute; fscanf(fp,"%d",&cost);AdjList[j].Train[AdjList[j].TrainNum].Cost=cost;AdjList[j].TrainNum++;fscanf(fp,"%s",&stmp1);fscanf(fp,"%s",&stmp2);fscanf(fp,"%s",&stmp3);j=SeekCity(stmp2);AdjList[j].Flight[AdjList[j].FlightNum].EndCity=SeekCity(stmp3); strcpy(AdjList[j].Flight[AdjList[j].FlightNum].name,stmp1);fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Flight[AdjList[j].FlightNum].StartTime=hour*60+minute;fscanf(fp,"%d:%d",&hour,&minute);AdjList[j].Flight[AdjList[j].FlightNum].StopTime=hour*60+minute;fscanf(fp,"%d",&cost);AdjList[j].Flight[AdjList[j].FlightNum].Cost=cost;if (MinTime>CurTime-StartTime){for (i=0;i<=curPathNo;i++){MinPath[i].City=Path[i].City;MinPath[i].TraNo=Path[i].TraNo;curPath=curPathNo;}MinTime=CurTime-StartTime;}}elsePath[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Train[i].EndCity,EndCity,AdjList[City].Train[i].StopTime+(CurTime/ 1440)*1440,curPathNo,TravelType);}if((AdjList[City].Train[i].StartTime<(CurTime%1440))&&(AdjList[City].Train[i].StopTime+(CurTime /1440)*1440-StartTime<MinTime)){Path[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Train[i].EndCity,EndCity,AdjList[City].Train[i].StopTime+(CurTime/{Path[curPathNo].TraNo=i;SearchMinTime(AdjList[City].Flight[i].EndCity,EndCity,AdjList[City].Flight[i].StopTime+(CurTime/ 1440)*1440,curPathNo,TravelType);}if((AdjList[City].Flight[i].StartTime<CurTime)&&(AdjList[City].Flight[i].StopTime+(CurTime/1440)* 1440-StartTime<MinTime)){Path[curPathNo].TraNo=i;int i;int startH, startM, endH, endM;//定义四个变量:startH 出发的小时,startM 出发的分钟,endH 到达的小时,endM 到达的分钟MinTime=32767;curPath=0;Path[0].City=StartCity;if (!TravelType){for (i=0;i<AdjList[StartCity].TrainNum;i++){Path[0].TraNo=i;StartTime=AdjList[StartCity].Train[i].StartTime;SearchMinTime(AdjList[StartCity].Flight[i].EndCity,EndCity,AdjList[StartCity].Flight[i].StopTime,0, TravelType);}}if (MinTime==32767){printf("\nNo access to that destination!");return 0;}// if (!TravelType)// StartTime=AdjList[StartCity].Train[MinPath[0].TraNo].StartTime;// else%s%sstartM = AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime % 60 ;endH = AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime / 60 ;endM = AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime % 60 ;if( !(startH/10) ){printf("0");}printf("%d:",startH);if( !(startM/10) ){printf("0");}//printf(" %2S:%2S-%2S:%2S\n",startH);}printf("%s: DESTINATION!",CityName[EndCity]);printf("\nTime Cost: %2d hour - %2d minute",MinTime/60,MinTime%60);return 1;}(14)计算最小费用路线:int CalcMinCost (int StartCity,int EndCity,int TravelType){int ma[Dij_MAXN][Dij_MAXN];int i,j,min,end;for (i=0;i<CityNum;i++)while (end==AdjList[i].Train[j].EndCity&&j<AdjList[i].TrainNum){if (AdjList[i].Train[j].Cost<min){min=AdjList[i].Train[j].Cost;}j++;}ma[i][end]=min;}}}if (AdjList[i].Flight[j].Cost<min){min=AdjList[i].Flight[j].Cost;}j++;}ma[i][end]=min;}}}Dijkstra(ma,StartCity,EndCity,TravelType); return 1;2、添加城市:输入命令1后,按提示输入城市名,而后返回主界面原city文件:添加城市后的city文件:3、删除城市:输入命令2后,按提示输入城市名,而后返回主界面4、添加路线:输入命令3后,按提示依次输入起始站、终点站、类型、起始时刻、到达时刻、票价等信息,而后返回主界面添加路线后的train文件:5、删除路线:输入命令4后,按提示输入,而后返回主界面删除路线后的train文件:6、查找最小费用花费:输入命令5后,按提示输入起始城市、终点城市、类型,而后返回主界面结果正确!7、查找最小时间花费:输入命令6后,按提示输入城市名,而后返回主界面结果正确!8、退出:输入命令0后,退出系统七、课程设计小结:1、实验过程中的注意点1)遇到逻辑问题,然后设断点,调试跟踪看哪步出了问题.比如说全局变量和局部变量设置出现问题,导致运行过程各变量的取值不对。

相关文档
最新文档