排队系统的统计模拟实现

合集下载

数学建模论文(蒙特卡罗的多服务台和单服务台排队系统)

数学建模论文(蒙特卡罗的多服务台和单服务台排队系统)

课程名称:数学建模与数学实验学院:专业:姓名:学号:指导老师:利用Monte Carlo方法模拟单服务台排队系统和多服务台排队系统摘要蒙特卡罗方法(Monte Carlo)又称统计模拟法随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。

将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。

本文通过两个具体的服务机构为例,分别说明如何利用蒙特卡洛方法模拟单服务台排队系统和多服务台排队系统。

单服务台排队系统(排队模型之港口系统):通过排队论和蒙特卡洛方法解决了生产系统的效率问题,通过对工具到达时间和服务时间的计算机拟合,将基本模型确定在//1M M排队模型,通过对此基本模型的分析和改进,在概率论相关理论的基础之上使用计算机模拟仿真(蒙特卡洛法)对生产系统的整个运行过程进行模拟,得出最后的结论。

多服务台排队系统(开水供应模型):为了解决水房打水时的拥挤问题。

根据相关数据和假设推导,最终建立了多服务窗排队M/G/n模型,用极大似然估计和排队论等方法对其进行了求解,并用Matlab软件对数据进行了处理和绘图。

用灵敏度分析对结果进行了验证。

本模型比较完美地解决了水房排队拥挤问题,而且经过简单的修改,它可以用于很多类似的排队问题。

关键词:蒙特卡洛方法,排队论,拟合优度,泊松流,灵敏度分析。

一、问题重述港口排队系统:一个带有船只卸货设备的小港口,任何时间仅能为一艘船只卸货。

船只进港是为了卸货,响铃两艘船到达的时间间隔在15分钟到145分钟变化。

一艘船只卸货的时间有所卸货物的类型决定,在15分钟到90分钟之间变化。

开水供应系统:学院开水房的供水时间有限,水房面积有限,水管易受水垢堵塞。

根据调查数据可知:通畅时几乎无人排队,堵塞时水房十分拥挤。

由此可以看出水房设计存在问题,我们可以把开水房看成是一个随即服务系统,应用排队论的方法对系统运行状态做定量的描述。

队列的应用——单服务台排队系统的模拟

队列的应用——单服务台排队系统的模拟

队列的应用:单服务台排队系统的模拟一、三个模拟1.离散事件模拟系统在排队系统中,主要有两类事件:顾客的到达事件和服务完毕后顾客的离去事件,整个系统就是不断有到达事件和离开事件的发生,这些事件并不是连续发生的,因此这样的系统被称为离散事件模拟系统。

(1)事件处理过程如果服务员没空,就去队列中排队;否则就为这个顾客生成服务所需的时间t,表示服务员开始为它服务,所需的服务时间是t。

每当一个离开事件发生,就检查有没有顾客在排队,如果有顾客在排队,则让队头顾客离队,为它提供服务,如果没有顾客排队,则服务员可以休息。

(2)如何产生顾客到达事件和离开事件在一个排队系统中,顾客的到达时间和为每个顾客服务的时间并不一定是固定的。

但从统计上来看是服从一定的概率分布。

假设到达的间隔时间和服务时间都满足均匀分布,则可以用随机数产生器产生的随机数。

①以生成顾客到达事件为例子如顾客到达的间隔时间服从[a,b]之间的均匀分布,则可以生成一个[a,b]之间的随机数x,表示前一个顾客到达后,经过了x的时间后又有一个顾客到达。

[a,b]之间的随机数可以按照下面的过程产生:假如系统的随机数生成器生成的随机数是均匀分布在0到RAND_MAX之间,可以把0到RAND_MAX之间的区间等分成b-a+1个,当生成的随机数落在第一个区间,则表示生成的是a,当落在第二个区间,则表示生成的是a+1…当落在最后一个区间,则表示生成的是b。

这个转换可以用rand()*(b-a+1)/( RAND_MAX+1)+a实现,rand 表示系统的随机数生成函数。

2.离散的时间驱动模拟在得到了在x秒后有一个事件生成的信息时,并不真正需要让系统等待x秒再处理该事件。

在模拟系统中,一般不需要使用真实的精确事件,只要用一个时间单位即可,这个时间单位是嘀嗒tick,可以表示1秒,也可以表示1min\1h.沿着时间轴,模拟每一个嘀嗒中发生了什么事件并处理该事件。

模拟开始时时钟是0嘀嗒,随后每一步都把时钟加1嘀嗒,并检查这个时间内是否有事件发生,如果有,则处理并生成统计信息。

排队系统的模拟

排队系统的模拟
到达时间间隔:[3,8]之间的随机数 服务时间:【2,7】之间的随机数 存款金额:【1,50】之间的随机数,将此
随机数乘1000 存款类型:【0,6】之间的随机数,分别
对应六种存款类型
totalWaitTime = 0; 设置顾客开始到达的时间currentTime = 0; for (i=0; i<customNum; ++i)
{ 生成下一顾客到达的间隔时间; 下一顾客的到达时间currentTime += 下一顾客到达的间隔时间; 生成存款类型、金额、服务完成时间; 将下一顾客的到达时间入队;
} while (顾客队列非空)
{ 取队头顾客; 输出顾客信息;}
如何产生均匀分布的随机值
均匀分布可以通过随机数产生器产生。 如某个随机过程产生的值服从[a,b]之间
的均匀分布,则可以生成一个[a,b]之间 的一个随机值,把此随机值作为随机过程 产生的值 [a,b]之间的随机值:rand() * (b-a+1) /(RAND_MAX + 1)
几个重要的随机值的生成
解决这个问题的关键就是在每一步跳到下一个 事件发生的时刻,这就是所谓的事件驱动模拟 (event-driven simulation) 。
事件驱动的模拟
在任何时刻,下一个事件只有两种情况:一种是 输入流中下一个顾客的到达或者出纳柜台前某一 个顾客的离开。事件发生的时刻都可获知,所以 我们只需要找出最先发生的事件并处理该事件 (并把当前时间设置成该事件发生的时间)。
事件驱动模拟(event-dHale Waihona Puke iven simulation)直接
把当前时间跳到下一个事件发生的时刻。 如果在连续事件之间的滴嗒间隔很大时,用事件

运营管理第10章 排队分析与仿真

运营管理第10章  排队分析与仿真
n!
10-10
队列中的顾客到达(见第14版P211,图10-5)
10-11
顾客到达的其他特征

到达方式 到达的规模 耐心程度
望而却步 中途离队
10-12
排队系统(见第14版P213)

队长
无限长队列 限制队长的能力

队列数 排队规则: 是指队列中决 定顾客接受服务次序的 一个或一系列优先法则。
10-20
例 10.1: 解答(见第14版P217)
10-21
例 10.1: 不超过3辆车(见第14版P217)
10-22
例10.1:95%的服务水平(见第14版P218)
10-23
例10.2: 设备选择
Robot 公司在全美国的特许经营把加油和汽车冲洗业务合 并在一起的设备业务。公司对加满油的车辆提供免费冲洗, 对于不加油只冲洗的费用0.5美元。以往的经验表明:加 油并洗车的顾客数和单独洗车的顾客数大致相等。平均加 一次油可盈利0.7美元,洗一次车的成本是0.1美元,公司 每天营业14小时。 三款设备可以选择:
10-53
仿真软件的理想特性
7. 8. 9. 10. 11.
有物流能力。 有输出标准统计如周期、利用率和等待时间。 允许各种数据分析方法的输入和输出数据。 具有动画功能来显示图形产品流经系统。 允许交互式调试。
10-54
仿真的优点
1. 2.
往往会导致更好地了解实际系统。 在实际系统中有几年的经验可以被压缩为几秒或几分 钟。 模拟不中断正在进行的实际系统的活动。 仿真是远远超过一般的数学模型。 仿真可以作为一种游戏用作训练经验。
10-26
例10.3: 服务人数决策
在格伦玛柯汽车销售公司的售后服务部门,机械修理师要为 汽车修理或服务而准备零件,这种需求以表单的形式递交到 零件部柜台,由柜台职员填表,由此时机械维修师处于等待 状态。机械维修师的到达是随机的(符合泊松分布)到达率 是40人/小时,职员填表的速度是20份/小时,且处理时间 服从指数分布。如果售后部的职员工资是30美元/小时,机 械维修师的工资是60美元/小时,请决定该柜台职员的最佳 数量(由于到达率很大,所以假设顾客源是无限的)。

实验2单服务台单队列排队系统仿真

实验2单服务台单队列排队系统仿真

实验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分钟。

排队模型的随机模拟

排队模型的随机模拟
{
ListNode *p,*s,*q;
p=L;
while (p!=NULL)
{
if(newelem>p->OccurTime)
{
if(!p->next)
{
s=new(ListNode);
s->OccurTime=newelem;
AvgLenth(L);
}
srand( (unsigned)time( 0 ) );
while(temp2<=CloseTime)
{
Customer++;
x1=rand()%1001;
ServerTime=x1/500.0;
y1=rand()%1001;
y=y1/1000.0;
{
ListNode *p;
p=L;
while (p!=NULL)
{
printf("OccurTime=%.2f EventType=%d \n",p->OccurTime ,p->EventType);
p=p->next;
}
}
void InsertList(LinkList L,DataType newelem,int EventType)
SumWaitTime:顾客总的等待时间;SumServerTime:服务员总的服务时间;
SumFreeTime:空闲时间;
四,思考过程:
给出两个随机数分别是:(ServerTime,NextCusTime),把这两个数当成一组数据。 把顾客离开置为“1”,顾客到达置为“0”。以顾客离开作为分界点,统计顾客人数,顾客的排队时间,顾客队伍长度,服务员的服务时间。根据顾客的到达时间和服务时间要分两种情况:①上一个顾客还没服务完,而下一个顾客已经到了。②上一个顾客服务结束后,而下一个顾客过一段时间才到达。

MM1排队系统仿真matlab实验报告

MM1排队系统仿真matlab实验报告

M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。

二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即etkk 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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3
本文将采用系统模拟方法对排队系统进行模拟。并统计不同情况下服务员人数安排及顾客排队情况。第二章主要介绍[0,1)上均匀分布的伪随机数产生方法。第三章主要介绍在产生了[0,1)上均匀分布的随机数后以它为基石模拟其他各种分布的随机变量的方法。第四章主要介绍了排队系统的基础理论及离散事件模拟方法,并且对具体的排队系统进行模拟统计并讨论实验结果。
因为 ,且 在[0,1)上均匀分布。
3.2
由逆变换法可知,对于连续随机变量的具体算法是:首先产生均匀分布的随机数 ,取 即可。例如X是参数为1的指数型随机变量,其分布函数为 ,如果设 ,则
(3-2)
于是参数1的指数分布的随机变量可由下式产生
(3-3)
用计算机模拟的10000个参数为1的指数分布的随机变数,如图3-1所示。
另一个生成随机数的方法是如下的递推公式
(2-3)
由于它包含乘法和加法因此被称为混合同余法。当采用这种方法生成随机数时,人们常取 为计算机字长,这是由于这是因为这种取法易于非常有效的计算。混合同余法是乘同余法和加同余法的混合,它产生的随机数周期较大且统计特性较佳。
图2-1 [0,1)上均匀分布的伪随机数
逐步计算 , ,其中 和 是给定的正整数。 称为一个伪随机数,它近似服从[0,1)内的均匀分布。
在随机变量的模拟中最常用的方法是逆变换法,它首先产生[0,1)内均匀分布随机数,再通过计算分布函数的反函数得到所要的随机数。设 是[0,1)上均匀分布的随机变量,可以证明对于任一分布函数 ,随机变量
(1-2)
,如果 , (1-4)
则 满足所给随机变量的分布。上述算法被称为离散随机变量的逆变换法。
1.2
排队系统是各种随机系统中最为典型的。计算机系统、通信系统和营业窗口系统都是典型的有形或者无形的排队系统。随机模拟是求解排队系统和分析排队系统系能的非常有效的方法,它是用计算机程序直接建立真实系统的模型,通过计算机系统的随机变化研究其行为的特征。
1.1
随机变量的模拟离不开[0,1)内均匀分布随机数的产生。真正的随机数只能由物理设备产生,由于其产生的效率过低,在实际应用中我们采用计算机递推产生的伪随机数。伪随机数并不是真正的随机数,它虽然符合真随机数的统计特征但实际上是一个周期序列。一种常用的产生随机数的方法是:从初值 出发,利用公式:
(1-1)
符合上述要求。
由上述乘同余法产生伪随机数时,分别取:
; ;
所得到的序列:
从上可以看出,当 能整除 时,最后的序列必定会收敛到零。当 不能整除 时,则所得的序列是周期序列,且最大周期是 。由此可以看出,递推方法计算出来的伪随机数序列实际上是周期序列,而非真正的随机序列。事实上当 取得非常大的时候在模拟中只需取其一个周期即可,这样的伪随机数序列满足均匀分布独立随机变量的一切特征。由上述乘同余法模拟的1000个在[0,1)上服从均匀分布的伪随机数的结果,如图2-1所示。
In real life,weoften need in some conditions completely random cases of one thing analysis and decision making. Due to the use of traditional experimental results verify that the stochastic system requires a lot of manpower and difficult to achieve good results. To save money, we consider using a computer to simulate random system. As a typical stochastic system,queuing system widely exists in life. Using the computer simulation system of queuing system can reduce the cost, improve the system of study efficiency. For managers to make decisions of the practical system provides reliable operation.
一般的,在选取常数 和 时应遵循如下原则:
(1)对于任一初值,产生的序列具有[0,1)上均匀分布独立随机变量的特征。
(2)对已任一初值,在重复出现前产生的随机数序列足够长。
(3)每一数值均可由计算机有效计算。
为满足上述三个条件,可选一个符合计算机字长要求的较大素数作为 。对于32位计算机(其中第一个字节为正负号),已经证明 和
2.3
设随机向量(X,Y)在中心为原点、面积为4的正方形上均匀分布,则在这个正方形里画其内切圆,如果我们大量的在正方形里生成随机点(X,Y)。可以证明这些点落在内切圆内的概率等于 ,即
(2-4)
设U是[0,1)上的均匀分布,则2U是在[0,2)上的均匀分布。2U-1在[-1,1)上均匀分布。因此我们生成2个随机数 令 ,我们可以如此估计 :先生成大量随机数对 ,之后用满足 的随机数对的比例来估计 。以上算法由计算机模拟得到的结果是: ,可以看到与准确值相差不多。
2.4
本章介绍了随机数的产生原理和方法,并给出了随机数的一个简单应用。
第三章
用计算机模拟任何一个随机现象时必然涉及一个给定概率分布的随机变量。例如,在模拟排队系统时,顾客的到达时间和服务时间都是满足一定分布的随机变量。一旦这些随机变量所满足的概率分布函数被选定,则必须有生成该给定概率分布的随机变量的算法,才能在计算机内得到这样的随机变量。而所有的这些方法都基于[0,1)上的均匀分布的随机变量。
(2-2)
逐步计算 , ,其中 和 是给定的正整数,上式表示 为 被 除后的余数。于是每一个 均为 中的一个, 称为一个伪随机数,它近似服从[0,1)上的均匀分布。
由上式产生随机数的方法称为乘同余法。由于每一个 均取值 中的一个,故若干次后(至多 次)所产生的随机数必定重复,且自此之后整个序列也开始重复。于是,我们在选择常数 和 时,希望对任一初值 ,在重复出现前所产生的随机数序列足够长。
(2-1)
为物理设备所能产生的[0,1)内的一串等间隔分布的有理数序(即等差数列)。如果n充分大,则该数列在[0,1)内充分“稠密”。因此,问题的本质在生成一个等概率分布的离散随机数集 。如果这一件事能够办到,则它可以看作[0,1)上均匀分布的随机数的一个近似。
实际上,可以取 ,若能生成 上的等概率分布,则将上述整数等概率随机变量除以n即能得到所需[0,1)上均匀分布随机数序。较常见的一种办法有:取 则 内的任何一个数都可以用一个相应的m位二进制数表示。该二进制数每一位取0或者1。只要等概率的生成0和1就可以得到一个概率 的m位2进制数。最直接的可以用掷硬币的方法等概率地产生0或1。
变量和事件是排队系统最重要的因素。在模拟中我们紧盯某些变量。只要出现一个事件,上述变量的值就会出现改变或更新,我们就要找到相应感兴趣的数据作为输出。为确定下一个事件何时出现,我们需要一个事件列表(此列表给出后面最近的事件和这些事件出现的时间表)。只要出现一个事件我们就重置时间变量、状态变量、计数变量和收集相应的数据。这样我们就可以及时追踪随时间而变化的系统。
3.1
逆变换法(也称反演法或变换法)是在随机变量的模拟中最常用的方法。它首先产生[0,1)内均匀分布随机数,再通过计算分布函数的反函数得到所需要的随机变量。
命题3.1设 是[0,1)上均匀分布的随机数,则对于任一分布函数 ,随机变量
(3-1)
的分布函数为 。
证明:以 记 的分布函数,则
由于 是一分布函数,故它是 的单调递增函数,且不等式“ ”等价于不等式“ ”。于是有
This paper firstly introduces the recursive generate pseudo random by the linear congruence method, based on the substitution method of generating meet specific conditions in the corresponding random variables. Then using discrete event simulation method introduced some basic theoretical queuing system simulation queuing system. Finally, through computer programming realized in the attendant and many waiter situation of simulation and comparison queuing system.
第一章
在现实生活中常需要在某些条件完全随机的情况下对一件事情作出分析和决策。由于用传统实验验证这样的随机系统需要耗费大量的人力物力且难以达到很好的效果。为节省经费我们考虑采用计算机来对随机系统进行模拟。随机系统的模拟是利用计算机上编写的计算机程序语言模拟实际系统的行为。通过观察和分析计算机模型系统的性能,从而掌握和了解实际系统的大致情况,并依此对实际系统作出分析和决策。
图3-1指数型随机变量的模拟
利用逆变换法可以模拟随机变量,但由于某些随机变量分布函数的反函数很难或不可能显式地表出,无法直接应用逆变换法。因此我们考虑采用其他的算法,例如拒绝法、极坐标法等。
的分布函数为 。逆变换法是一种很好的产生指数型随机变量的算法,因为能很快得出指数型变量的分布函数的反函数。但是对某些随机变量,其分布函数的反函数很难或不可能显式地表出,无法直接应用逆变换法,因此我们考虑采用其他的算法。
假设我们希望生成一个满足概率分布为
, (1-3)
相关文档
最新文档