排队系统仿真 包含C.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
排队系统仿真 包含C

排队系统仿真实验 1. 实验目的 离散事件系统大量存在于现实生活中。离散事件系统往往是随机的,具有复杂的变化关系,难以用常规的微分方程、差分方程等模型来描述,计算机仿真技术是解决这类问题的有效手段。排队系统是一种非常重要的离散事件系统,也是最早研究的离散事件系统。本实验通过设计一种最简单的单服务台排队系统仿真程序,深入理解排队系统的建模与仿真方法,掌握排队系统仿真的基本步骤和程序设计技术,了解离散事件系统仿真的一般原理。 2. 排队系统仿真程序功能 模拟一个单服务台单队列排队系统的运行过程,完成一定数量活动实体的服务过程,输出排队系统的常用统计指标。 仿真运行时间(可由活动实体数确定)、活动实体到达平均时间间隔、平均服务时间作为参数在程序运行时输入。 3. 关键技术 (1)随机数发生器——乘同余法 递推公式: 程序中采用: (2)随机变量的产生——变换抽样法 指数分布随机变量的产生: 其中,λ为到达(或服务)速率,1/λ到达时间平均间隔(或平均服务时间),u为随机数。 (3)排队、到达、服务模式 排队规则:先到先服务(FIFO); 到达模式:泊松到达,即相邻两个顾客到达的时间间隔服从指数分布; 服务模式:服务台为活动实体提供服务的时间是随机的,服从指数分布。 (4)常用统计性能指标计算 平均延误时间: 其中,Di为第i个活动实体在队列中耽误的时间。 平均滞留时间: 其中,Wi为第i个活动实体在系统中滞留的时间,Si为第i个活动实体接受服务台服务的时间。 平均队长: 其中,Q(t)为t时刻系统中队列的长度。 平均实体数: 其中,L(t)为t时刻系统中的活动实体数,Q(t)为t时刻队列的长度,S(t)为t时刻接受服务台服务的活动实体数。 4. 程序架构 (1)基本模块 void initialize(void); /*变量初始化*/ void timing(void); /*时间调度*/ void arrive(void); /*到达事件处理*/ void depart(void); /*离开事件处理*/ void report(void); /*统计量输出*/ void update_time_avg_stats(void); /*统计量的更新*/ float expon(float mean); /*指数分布随机变量的变换抽样法*/ (2)程序流程(main()函数) (3)到达事件处理流程(arrive()函数) (4)离开事件处理流程(depart()函数) 5. 程序设计 (1)定义 #include stdio.h #include math.h /*#include lcgrand.h Header file for random-number generator. */ #define Q_LIMIT 100 /* Limit on queue length. */ #define BUSY 1 /* Mnemonics for servers being busy */ #define IDLE 0 /* and idle. */ int next_event_type, num_custs_delayed, num_delays_required, num_events, num_in_q, server_status; float area_num_in_q, area_server_status, mean_interarrival, mean_service, sim_time, time_arrival[Q_LIMIT + 1], time_last_event, time_next_event[3], total_of_delays; FILE *infile, *outfile; float lcgrand(int stream); void initialize(void); void timing(void); void arrive(void); void depart(void); void report(void); void update_time_avg_stats(void); float expon(float mean); (2)主程序 main() /* Main function. */ { /* Open input and output files. */ infile = fopen(mm1.in, r); outfile = fopen(mm1.out, w); /* Specify

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档