VC++排队系统的仿真与应用-任务书
- 格式:doc
- 大小:53.50 KB
- 文档页数:4
M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即e t kk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO )4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。
三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。
四、采用的语言MatLab 语言源代码:clear;clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;Mu=0.9; %服务率Mu;t_Arrive=zeros(1,SimTotal);t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间t_Arrive(1)=Interval_Arrive(1);%顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;elseCusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[0,0,1000,700]);subplot(2,2,1);title('各顾客到达时间和离去时间');stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'y');legend('到达时间','离去时间');hold off;subplot(2,2,2);stairs(Timepoint,CusNum,'b')title('系统等待队长分布');xlabel('时间');ylabel('队长');subplot(2,2,3);title('各顾客在系统中的排队时间和等待时间');stairs([0 ArriveNum],[0 t_Queue],'b');hold on;stairs([0 LeaveNum],[0 t_Wait],'y');hold off;legend('排队时间','等待时间');%仿真值与理论值比较disp(['理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]);disp(['理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]);disp(['理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]);disp(['理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp(['仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)])disp(['仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)])disp(['仿真系统中平均顾客数=',num2str(CusNum_avg)]);disp(['仿真系统中平均等待队长=',num2str(QueLength_avg)]);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔t_Arrive(1)=Interval_Arrive(1);%顾客到达时间时间计算t_Wait=t_Leave-t_Arrive;%各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
c语言医院排队课程设计一、课程目标知识目标:1. 学生能理解C语言结构体类型的概念,掌握其定义和应用方法。
2. 学生能运用一维数组存储病人信息,实现对病人数据的排序和查找。
3. 学生掌握C语言文件操作,实现病人信息的保存和读取。
技能目标:1. 学生能够运用结构体类型设计和表示医院排队的病人信息。
2. 学生能够编写程序实现排队功能的算法,如冒泡排序等。
3. 学生能够利用文件操作,实现病人信息的持久化存储。
情感态度价值观目标:1. 学生通过课程学习,培养解决问题的能力和团队协作精神。
2. 学生在学习过程中,增强对编程的兴趣和信心,认识到编程在现实生活中的应用价值。
3. 学生通过医院排队课程设计,培养关爱他人、关注社会问题的情感态度。
课程性质分析:本课程设计属于C语言编程实践环节,结合医院排队实际问题,培养学生运用C语言解决实际问题的能力。
学生特点分析:本课程针对的是高中二年级学生,他们对C语言有一定的了解,但实际编程经验不足。
学生具有较强的求知欲和好奇心,希望通过实际案例学习编程。
教学要求:1. 结合教材内容,使学生掌握C语言的基本知识和编程技巧。
2. 重视实践操作,引导学生通过编写程序解决实际问题。
3. 注重培养学生团队协作能力和创新思维,提高学生编程兴趣。
二、教学内容1. 结构体类型基本概念及其应用(教材第5章)- 结构体的定义与声明- 结构体变量的创建与初始化- 结构体数组的创建与使用2. 一维数组及其操作(教材第4章)- 一维数组的定义与初始化- 数组元素的访问与排序算法(冒泡排序等)- 查找算法(顺序查找等)3. C语言文件操作(教材第6章)- 文件的概念及其分类- 文件的打开与关闭- 文件的读写操作4. 医院排队系统设计与实现- 设计病人信息结构体- 实现病人信息排序与查找功能- 实现病人信息文件存储与读取教学进度安排:第一课时:介绍结构体类型基本概念及其应用,让学生设计病人信息结构体。
实验2排队系统仿真一、学习目的1.了解仿真的特点2.学习如何建构模型3.熟悉eM-Plant基本的对象和操作4.掌握排队系统的特点与仿真的实现方法二、问题描述该银行服务窗口为每个到达的顾客服务的时间是随机的,表2.4是顾客服务时间纪录的统计结果表2.4 每个顾客服务时间的概率分布对于上述这样一个单服务待排队系统,仿真分析30天,分析该系统中顾客的到达、等待和被服务情况,以及银行工作人员的服务和空闲情况。
三、系统建模3.1 仿真目标通过对银行排队系统的仿真,研究银行系统的服务水平和改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。
3.2.系统建模3.2.1 系统调研1. 系统结构: 银行服务大厅的布局, 涉及的服务设备2. 系统的工艺参数: 到达-取号-等待-服务-离开3. 系统的动态参数: 顾客的到达时间间隔, 工作人员的服务时间4. 逻辑参数: 排队规则, 先到先服务5. 系统的状态参数: 排队队列是否为空, 如果不为空队长是多少, 服务台是否为空6. 系统的输入输出变量:输入变量确定其分布和特征值,顾客的到达时间间隔的概率分布表和每个顾客被服务时间的概率分布. 输出变量根据仿真目标设定. 包括队列的平均队长、最大队长、仿真结束时队长、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。
3.2.2系统假设1.取号机前无排队,取号时间为02.顾客排队符合先进先出的排队规则3.一个服务台一次只能对一个顾客服务4.所有顾客只有一种单一服务5.仿真时间为1个工作日(8小时)6.等候区的长度为无限长3.2.3系统建模系统模型:3.2.4 仿真模型1.实体:银行系统中的实体是人(主动体)2.属性:到达时间间隔、接受服务的时间、接受服务类型3.事件:顾客到达、开始取号、取号结束、进入队列、出队列、接受服务、服务完成、离开银行。
4.活动:到达、取号、排队、服务、离开5.资源:取号机、排队的座椅、服务柜台4 系统仿真4.1 eM-plant 界面与主要控件介绍1. 实体:eM-Plant 中包括3类实体:entity ,container ,transporter 。
一、实验目的1. 熟悉银行排队系统的基本原理和设计方法;2. 掌握使用C语言实现银行排队系统的基本操作;3. 培养团队合作精神和实践能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 开发工具:Visual Studio三、实验内容1. 银行排队系统简介银行排队系统是一种模拟真实银行排队场景的程序,主要功能包括:客户到达、排队、服务、离开等。
通过模拟银行排队过程,我们可以了解银行排队系统的基本原理,并为实际应用提供参考。
2. 系统设计(1)数据结构本系统采用队列数据结构来存储排队客户。
队列是一种先进先出(FIFO)的数据结构,适用于模拟银行排队场景。
(2)功能模块本系统主要包括以下功能模块:1)客户到达模块:模拟客户到达银行,并随机生成客户信息,如客户ID、到达时间、服务时间等;2)排队模块:根据客户到达顺序,将客户信息依次加入队列;3)服务模块:按照客户排队顺序,为每位客户提供服务,并更新客户状态;4)离开模块:客户服务完成后,从队列中移除该客户信息;5)统计模块:记录客户服务次数、平均等待时间、最长等待时间等数据。
(3)实现方法1)客户到达模块:使用随机数生成器生成客户信息,并将客户信息存入队列;2)排队模块:当客户到达时,将客户信息加入队列尾部;3)服务模块:从队列头部取出客户信息,为该客户提供服务,并更新客户状态;4)离开模块:当客户服务完成后,从队列中移除该客户信息;5)统计模块:记录客户服务次数、平均等待时间、最长等待时间等数据。
3. 实验步骤(1)初始化系统,设置窗口数量和客户到达时间间隔;(2)模拟客户到达,生成客户信息并加入队列;(3)按照客户到达顺序,为每位客户提供服务;(4)记录客户服务次数、平均等待时间、最长等待时间等数据;(5)统计实验结果,分析银行排队系统性能。
四、实验结果与分析1. 实验结果通过实验,我们得到了以下数据:(1)客户服务次数:100次;(2)平均等待时间:5分钟;(3)最长等待时间:15分钟。
使用VC++开发考场随机排座系统3.2随机数的产生随机数的产生需要一个随机的种子,而计算机产生的随机数是通过递推的方法得到的,必须有一个初始值,也就是通常所说的随机种子,如果不对随机种子进行初始化,那么计算机有一个缺省的随机种子,这样每次产生的随机数序列结果就会完全相同,在VC系统中,随机种子的初始化是通过srand(int)函数进行的,但是如果给定的参数是一个常量,则每次得到的随机数序列也会完全相同,即使是使用系统时间作为随机种子进行初始化srand(GetTickCount()),又不能在每次调用rand()的时候都进行这项操作,因为现在计算机上运行速度比较快,当连续调用rand()函数时,系统的时间还没有更新,这也不足以保证产生随机数序列的真正随机性。
本系统采用了对产生的随机数序列进行筛选的方法,使得产生的随机数序列符合一width=139>(其中,,为常数,分别代表数学期望和方差[3])概率密度理论为随机数序列的均值,代表着随机数在该处的概率最大,为方差,代表3.3打印处理由于整个系统采用了基于对话框的应用程序结构,而基于对话框的应用程序本身不具有文档/视图结构,对打印功能的支持有限,所以整个打印处理部分也需要自定义解决,本系统采用了生成临时CFrameWnd和CView类对象的方法[4]调用系统默认的OnFilePrintPreview()函数来实现打印功能,文献[4]对此有详细描述。
4结束语本系统运行后的界面如图3所示,通过该系统可以很方便地实现对考生随机座号的生成,同时,系统提供的丰富的打印预览和打印功能也为数据的输出提供了便利,如图4.图3程序运行主界面图4打印功能模块界面本系统是根据高校考试的需求,结合高校学生信息管理的特点开发的,整个系统具有良好的实用性和可扩充性,已经应用于院系的考试中,能满足院系环境下的考试管理需求,使用该系统一方面可以减少相关教务和教学管理人员的工作量和劳动强度,增加工作效率,另一方面也提高了考试管理信息化的水平,使得考试管理工作上了一个新的台阶,具有非常好的通用性和推广价值。
排队模拟系统课程设计一、课程目标知识目标:1. 学生能理解排队模拟系统的基本概念,掌握其数学模型及相关参数。
2. 学生能运用所学知识分析并解决生活中的排队问题。
3. 学生了解计算机编程在排队模拟系统中的应用。
技能目标:1. 学生能运用数学知识构建简单的排队模型。
2. 学生能通过编程实现排队模拟系统的运行。
3. 学生能运用数据分析方法评估排队模拟系统的效果。
情感态度价值观目标:1. 培养学生运用数学和计算机知识解决实际问题的兴趣和信心。
2. 增强学生的团队协作意识和沟通能力。
3. 提高学生对生活中排队现象的关注和思考,培养良好的社会公德意识。
课程性质:本课程为信息技术与数学跨学科课程,结合计算机编程和数学建模,培养学生解决实际问题的能力。
学生特点:学生具备一定的数学基础和编程技能,对新鲜事物充满好奇,善于合作和探究。
教学要求:注重理论与实践相结合,引导学生主动参与,鼓励学生创新思维,提高解决问题的能力。
通过课程学习,将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 排队论基本概念:介绍排队系统的组成,排队论的基本参数(到达率、服务率、排队规则等)。
教材章节:第五章第一节2. 排队模型建立:分析不同排队模型的数学表达式,如M/M/1、M/M/c等。
教材章节:第五章第二节3. 计算机编程实现:运用Python等编程语言,实现排队模拟系统的编写。
教材章节:第七章4. 数据分析方法:介绍数据分析方法,如排队长度、等待时间、系统利用率等指标的统计和分析。
教材章节:第六章5. 实际案例分析与讨论:结合生活中的排队现象,运用所学知识进行案例分析,提出优化方案。
教材章节:第八章教学安排与进度:第一课时:排队论基本概念及排队模型的介绍第二课时:计算机编程实现排队模拟系统第三课时:数据分析方法及案例讨论第四课时:学生展示与点评,总结提升教学内容确保科学性和系统性,结合教材章节和实际案例,引导学生从理论到实践,逐步掌握排队模拟系统的相关知识。
仿真实验指导书实验一 UWB (超宽带)信号仿真与调制仿真 (一)、实验目的通过超宽带系统仿真,进一步了解PPM-UWB 信号模型的特性,更加牢固地掌握UWB 的调制解调技术。
(二)、实验工具C++/VC(三)、实验步骤1、熟悉C++/VC 软件开发平台、UWB 信号产生原理及UWB 信号调制解调过程。
2、构成UWB 信号的w(t)一般是由被称作monocycle shape 的脉冲波形序列组成。
monocycle shape 的脉冲波形的一个主要特点是冲击脉冲波形具有很陡的上升和下降沿,通常用在UWB 信号中的monocycle shape 脉冲波形有如下几种类型:Ganssian 脉冲、Gaussian First Derivative 脉冲、Scholtz’s 脉冲、Manchester 脉冲、RZ Manchester 脉冲、Sine 脉冲和Rectangle 脉冲等。
由于UWB 信号的传输是利用基带信号直接进行的,因此,所采用的脉冲波形的特性将对UWB 系统的性能有着直接的影响。
3、这里采用Gaussian First Derivative Pulse 作为UWB 的脉冲信号,它的公式如下:w(t)=))/)((2exp()(/22au c c au T T t T t e T A −×−×−××× (1) 其中:A 是幅值,T c 为时移,T au 是脉宽参数. 仿真波形如右图1所示。
--0-0-0-00000T m e (n s )A m p u d e图1 UWB 脉冲信号图4、在脉冲信号仿真的基础上,进行UWB 调制仿真。
在时域上利用脉冲位置调制的UWB 信号可以由公式(2)表示。
()()()()()()s k kk k k trt f j c j N j S t w t jT c T d δ+∞⎡⎤⎢⎥=−∞=−−−×∑(2)利用C++/VC 软件完成上述信号调制仿真,仿真流程如下图2所示。