首页 理论教育 智能运输系统:操作和调试实施(6.4版)

智能运输系统:操作和调试实施(6.4版)

时间:2023-10-14 理论教育 版权反馈
【摘要】:此次研究共进行了400次仿真。然而,实际上问题还要更加严重,在操作过程中的任一时刻,每个处理器都可能只执行DICAF程序中的某一行,且每一步之间都没有任何相关性。人们一般就此认为对多重自治实体进行综合同步操作是非常困难的。异步分布式算法同样对操作系统的精确性和正确性有较高要求。

智能运输系统:操作和调试实施(6.4版)

DICAF模型和仿真器都是用C语言编写的,通过带宽为10Mbit/s的以太网连接,在基于Unix工作站的网络上执行,并配备有松散耦合的并行处理器。该系统包括65个装有SUN Solaris 2.4操作系统的SUN Sparc10工作站。关于每个DTMC以及在该位置进入系统的车辆在内的信息代码段大概为4432行,用C语言编写,网络代码约1500行,由C++语言编写。仿真器由GNU C编译器以及gcc进行编译,并以“nice”效用在较低的优先级上执行。DICAF的执行会产生将近4~9.5MB的数据,然后由解析器解析得到性能曲线图。解析程序包括910行C语言代码。每个仿真都与某个实验相对应,模拟高速公路上24h的真实交通情况。对于10处理器和51处理器的两种DICAF系统,仿真时间都需要约16min。输入DICAF系统的车辆最大数为45000辆,试验台中有65个同步执行的SUN Sparc10工作站,每个都有32MB内存和424MB硬盘。此次研究共进行了400次仿真。根据记录,工作站在各自的控制台上为用户完成了最主要的工作。

异步分布式算法的一个特有的特征(以DICAF为例)就是调试极其困难。据估计,假设DICAF有将近4000行程序,那么调试一个有50个节点的DICAF仿真程序就相当于要调试4000×50=200000行C程序代码。然而,实际上问题还要更加严重,在操作过程中的任一时刻,每个处理器都可能只执行DICAF程序中的某一行,且每一步之间都没有任何相关性。人们一般就此认为对多重自治实体进行综合同步操作是非常困难的。可以想象,当人们打算在代码中添加一条printf语句来显示执行过程中的变量和结构的关键值时,却发现变量值的输出打印次数很快超过1000,并且还在迅速增加。与时间有关的问题要求更精确,调试起来也更加困难,这是因为如果在代码中加入printf语句,代码就会变得不连续。根据作者的经验,高效的调试需要对整个程序有极为深入的了解,并要求调试人员具有高度的专注力、责任心和耐心。

异步分布式算法同样对操作系统的精确性和正确性有较高要求。首先,这些算法要求能快速传递中小尺寸的消息;第二,消息的分布具有较高的突发性;第三,假设每个处理器除了计算和传递拥堵信息以外,还得为45000辆车进行路径选择计算,那么消息分布的突发性将达到极限,这将会导致频繁地写入缓冲区,使其长期处于饱和状态。据观察,有时候仿真会意外终止,错误显示为无法写入、通道断裂或写入数据错误等。还有其他一些难以解释的错误,包括成功打开,处理器却无法将数据写入文件等。(www.xing528.com)

在仿真过程中,车辆收集并存储自身的出行信息,包括路径、C.M.值以及出行时间等。当车辆到达终点DTMC时,数据即被写入到一个文件中。解析器根据此文件生成性能表现统计数据,包括车辆在整个行程中的平均速度、实际出行时间、理论上的最短出行时间、车辆实际速度分布、随车辆标识符和车辆进入DICAF时间而改变的出行时间差别率等。本章在后面会给出出行时间差别率的定义。此外,解析器还可以将C.M.值分别作为路段数和仿真时间的函数,分别绘制函数曲线图。车辆数在路段上的分布、车辆和DTMC之间的消息数、DTMC之间的消息数等也同样可以由解析器获得。为更好地进行各种评价,解析器还会算出各个指标的平均值和方差

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈