排队模型的计算机模拟
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
到达、车辆分别从各个通道的离开。
模型 3
车辆到时刻达及办理事务所需要的时间都是随机的,设第
模型 2 系统有 M 个服务台串联,有 N 个顾客到达系统,顾 一辆车到达的时刻为 0,即模拟程序处理的第一个事件,之后每
基金项目:山西省教育厅"高校科技研究开发项目"(200358)。
2006 年第 7 期
福建电脑
13
个车辆到达的时刻在前一辆车到达时设定。因此,在车辆到达事
件发生时需产生两个随机数,其一为此时刻到达的车辆办理事
务所需要的时间(servicetime),其二为下一车辆到达的时间间隔 (intertime),假设当前事件发生的时刻为 occurtime,则下一个车辆 到达事件发生的时刻为 occurtime+intertime。由此产生一个新的 车辆到达事件插入事件表。刚到达的车辆应排到当前车辆最少
boolean withdraw(int amt){
if(balance- amt>=0){ balance=balance- amt; return true; }
参考文献: 1. 洪维恩,何嘉,Java 2 面向对象程序设计,中国铁道出版社,2005.1. 2. 郑晓艳,童勇木,Java 程序设计教程,清华大学出版社,2003.11.
作是插入和删除事件。由于假设有三个通道,所以程序中需要 N
个队列,队列中有关车辆的信息主要有到达时刻和接受服务的
时间。每个队列中的对头车辆即为正在办理收费的车辆,办完收
费便离开队列的时刻就是即将发生的车辆离开事件的时刻,这
就是说对每个对头车辆都存在一个将要驱动的车辆离开事件。
因此,在任何时刻即将发生的时间只有下列几种可能:新车辆的
1 所示:
服务机构:多个通道并行服务。
假设某收费站有 N 个通道供车辆并行通行,我们模拟在不
同时间段内的收费情况。由于每个通道在某时刻只能接待一辆
车,因此车辆太多时需在每个通道处排队等候,对于刚刚到来的
车辆,如果某个通道空闲则可上前交费然后离去,反之若 N 个通
道均有车辆,它便会排在等候车辆最少的队伍后面,现在需要编
从结果分析表中我们可以清楚地看到,为了减少车辆的平 均等待时间(即减少车辆因等待而造成的损失)就必须增加车道 数。但车道数的增加必然会相应地增加设立车道设备所消耗的 费用(人力、才力)。究竟如何选择,要根据车道所消耗的费用和 车辆等待所消耗的费用进行比较决定。如上例中显然选择 3 个 车道数消耗的总费用最少。
征、排队规则、服务机构也变的越来越复杂,解析方法已无法求 所示:
解,计算机模拟是求解排队系统和分析排队系统性能的非常有 2. 模拟模型求解方法
效的方法,它是通过建立计算机模拟模型,在计算机上进行模拟
模拟模型的求解采用下次事件法,通过时间的推进确定下
实验,并用实验结果作为原始问题的近似解,它可以降低系统的 次事件的发生(如:到达、离开),更新系统状态。
服务建立三类模拟模型[3]。
辆到达是相互独立的。
模型 1 系统有一个服务台,有 N 个顾客随机到达系统,顾
排队规则:车辆到达时排队等候(等待制)队列所占空间是
ຫໍສະໝຸດ Baidu
客进入等待队列后按先进先出的排队规则等待服务,顾客接受 无限的。
的服务时间也是随机的,顾客接受一次服务后就离开。结构如图
服务规则:先来先服务,车辆接受服务的时间是随机的。
使用多线程会发现,数据共享可能是一个缺陷。如果两个或 两个以上线程共享访问(读或写)一个变量,那么就要仔细协调 同步数据访问。例如,假设 Tom 和 Bob 共用一个支票簿,如果不 小心的话,两个人签出去的支票很可能超出两个人的余额。如下 程序段:
int balance;
}
如果 Tom 和 Bob 同时提款的话,他们的余额就有可能成为 负数。为解决这个问题,需要对 withdraw 方法同步处理,以便在 任一给定时刻,只有一个线程执行代码。使用 synchronized 访问 标识符或 synchronized 代码段可以保证它们的互斥(即防止对一 个 共 享 资 源 的 同 时 访 问 ), 如 下 形 式 :synchronized boolen withdraw(int amt){…},使得任一时刻只能由一个线程执行。 6. 结论 这里我们就可以得出这样的结论:在引入 Java 多线程技术后, 首先,程序能够同时执行多个任务;其次,它们提供了一个充分 利用多 CPU 计算机的方法;再次,它能够提高应用程序的吞吐 率,加快应用程序的响应时间,以及使应用程序更有效地利用系 统资源。
12
福建电脑
2006 年第 7 期
排队模型的计算机模拟
韩瑞峰, 武俊丽
(忻州师范学院 山西忻州 034000)
【摘 要】:排队系统是离散事件系统中最典型的问题,计算机模拟是求解排队系统和分析排队系统性能的非常有效的 方法。通过对高速路收费站车辆排队问题的模拟,建立了不同的三类计算机模拟模型,并给出了其中一种单队列、多服务台 (并联)的排队模型在高速路收费站车辆调度中的应用。
速路上收费亭排起的汽车长队,为了解决这个问题,如果将征管
1. 模拟模型建立
所提供的出口车道数与通行车辆所需要的道口数配置尽可能合
排队系统的要素是顾客和服务台,顾客可以是作业、信息、 理,就可以减少供方道口人员候车的空闲现象,或者减少车辆等
请求、机器、车船、呼叫等,任何到达一个设备并需要服务的东 待交费的时间。本文试图运用排队模型,对供需双方因排队所产
产生一个离开事件并插入事件列表; } } else {//调用车辆离开子程序删除第 i 队列的队头车辆并计算车辆的总等待时间 wtime;
if(此队列不空) 产生一个离开事件并插入事件列表;
} }
输入参数和模拟输出结果如表 1 和表 2:
的逗留时间。Wtime 表示所有到达车辆的逗留时间。Z 表示车辆 等待和过道提供服务消耗的总费用。
表 1 模型输入参数和模拟输出结果表(分析一) 说明:Num 表示到达的车辆数。C 表示车辆的过道数(即收 费员数)。Cw 表示每个过道数提供服务消耗的费用。Cs 表示每 辆车等待 1 分钟消耗的费用。Cz 表示 C 过道提供服务消耗的费 用。CCz 表示每辆车逗留时间内消耗的费用。Ls 表示平均每辆车
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(上接第 66 页)
然后写到控制台;写线程从控制台读,然后写到服务器。这样就
return false;
有一个对控制台的共享访问题。为防止这种情况,就必须给读线 程较写线程高的优先级。但是,如果一个线程的优先级高于其他 线程,那么它就不可能让其他线程占据处理器时间,这样的线程 称为“自私的”线程。一个好的线程将睡眠一会儿,或做出一定的 让步,以便其它线程能够运行。使用 yield()方法可以实现这一 点,它使其他线程能够有机会得以运行。 5. 同步
参考文献: 1. 方再根.计算机模拟和蒙特卡洛方法[M].北京:北京工业学院出版社, 1990 2. 吴庆标.一类排队系统模型的计算机模拟[J].计算机应用与软件,1993, 10(6):35- 38 3. 李维铮,郭耀煌等.运筹学[M].北京:清华大学出版社,1982 4. 赵静,但琦等.数学建模与数学实验[M].北京:高等教育出版社(CHEP) 施普林格出版社(Springer),2000
模型 1
制一个程序以模拟车辆通过收费站的情况来计算车辆在收费站
的平均逗留时间。
该问题中包括的事件有两类:一类是车辆的到达事件,另一
类是车辆的离开事件。前一类事件发生的时刻车辆的到来自然
生成。后一类事件发生的时刻则由服务时间和等待时间而定,事
件是按发生的先后顺序进行的,则事件表应是有序表。其主要操
模型 2
表 2 模型输入参数和模拟输出结果表(分析二) 通过分析表我可以清楚地看到设的车道数太多或太少都会 增加消耗的总费用,车道数太少则车辆等待时间太长,车主由于 等待而造成的损失也会相应地增加,车道数太多又浪费收费站 太多的人力才力资源,况且当车道数增加到一定程度时车辆的 平均等待时间也不会因此而减少。因此在实际应用中我们应根 据具体的车辆到达情况和可以提供的服务情况来设定车道数 目。针对本实验中车辆随机到达的情况用设 2 个车道时消耗的 总费用最少。 4. 总结 排队系统模型应用广泛,一些复杂的排队系统模型的解析 和求解有时很困难甚至根本不可能,但通过计算机模拟,使的有 些排队系统相对简单化,清晰化,往往会取得很好的效果[4]。本 文根据服务台数目及服务形式的不同,建立了 3 类排队模型,并 选择了一种模型作为高速路收费站车辆排队问题的模型,给出 了计算机模拟程序、输入输出结果及结果分析,而且模拟程序的 通用性也很强。
Step2 生成初始事件表,初始化相关参数 Step3 While(事件表不空)
{ if(en.type==9) { //调用车辆到达子程序产生前一辆车的服务时间 和下一辆车到达间隔随 机数//(servicetime,intertime)并计算一辆车的到达时刻(ttl)
if(ttl<simulationtime) { 找出车辆最少的队列(q[i])并入队; if(length q[i]==1)
的队列中等候服务,若该队列在车辆进入前为空则还应产生一
个车辆离开事件并插入事件表。车辆离开事件的处理:首先计算
该车辆在收费站的逗留时间,然后从队列中删除该车辆后查看
队列是否为空,若不为空则设定一个新的对头车辆离开事件插
入事件表。
模型模拟算法如下:
Step1 建立一个有序链表队列作为事件表;建立一个队列 数组作为车辆过道数。
【关键词】:排队系统;随机变量;计算机模拟;先进先出;排队模型;
离散事件系统的计算机模拟技术[1]主要用于解决复杂系统 客的到达时间间隔和接受服务的时间是随机的,顾客接受完一
管理中的决策问题,这里的管理具有广泛的意义,既可以是企 次服务后,便离开当前服务台,进入下一服务台等待、接受服务。
业、工厂的计划调度,也可以是导弹防御系统的战场管理,还可 结构如图 2 所示:
以是作战系统的指挥管理。排队系统是离散事件系统中最典型
模型 3 系统有 M 个服务台并联,有 N 个顾客到达系统,顾
的问题,计算机系统、通讯系统、交通运输等都是典型的有形或 客的到达时间间隔和接受服务时间是随机的,顾客 到达时可以
无形的排队系统,由于排队系统的应用已越来越广泛,排队特 选择在哪个服务台接受服务。接受完服务后就离开。结构如图 3
研制成本,提高系统的实验、调试和训练中的安全性,具有重大 3. 模拟实例
的社会效益和经济效益。本文讨论了多随机顾客流且先进先出
现实生活中处处能见排队等候的现象,这给生活节奏越来
的多服务台并联的排队模型的计算机模拟,这类模型在我们日 越快的人们的生活,带来了极大的不便,同样我们也常常见到高
常生活中也是经常可以见到的[2]。
西。服务台可以是交换机、主机、网络服务器、CPU、磁盘、磁带、 生的损失进行对比,以达到所需道口数最少,征费员服务强度最
车站、码头、接线员等。根据随机到达和服务率的概念。现分别以 小,并且不让通行车辆等待太长的时间的目的。现作如下假设:
服务台为单数、服务台为多数(串联、并联)和排队规则为先来先
输入过程:车辆源是无限的、车辆到达方式是随机的且车