排队系统的随机模拟法、旅馆仿真分析
MG1型排队系统分析与仿真
M/G/1型排队系统分析与仿真一、排队系统排队论(queuing theory), 或称随机服务系统理论, 是通过对服务对象到来及服务时间的统计研究,得出这些数量指标(等待时间、排队长度、忙期长短等)的统计规律,然后根据这些规律来改进服务系统的结构或重新组织被服务对象,使得服务系统既能满足服务对象的需要,又能使机构的费用最经济或某些指标最优。
它是数学运筹学的分支学科。
也是研究服务系统中排队现象随机规律的学科。
广泛应用于计算机网络, 生产, 运输, 库存等各项资源共享的随机服务系统。
排队论研究的内容有3个方面:统计推断,根据资料建立模型;系统的性态,即和排队有关的数量指标的概率规律性;系统的优化问题。
其目的是正确设计和有效运行各个服务系统,使之发挥最佳效益。
一般的排队过程为:顾客由顾客源出发,到达服务机构(服务台、服务员)前,按排队规则排队等待接受服务,服务机构按服务规则给顾客服务,顾客接受完服务后就离开。
排队过程的一般过程可用下图表示。
我们所说的排队系统就是指图中虚线所包括的部分。
排队系统又称服务系统。
服务系统由服务机构和服务对象(顾客)构成。
服务对象到来的时刻和对他服务的时间(即占用服务系统的时间)都是随机的。
描述一个排队系统一般需要分析其三个组成部分:输入过程、排队规则和服务机构。
输入过程输入过程考察的是顾客到达服务系统的规律。
它可以用一定时间内顾客到达数或前后两个顾客相继到达的间隔时间来描述,一般分为确定型和随机型两种。
例如,在生产线上加工的零件按规定的间隔时间依次到达加工地点,定期运行的班车、班机等都属于确定型输入。
随机型的输入是指在时间t内顾客到达数n(t)服从一定的随机分布。
如服从泊松分布,则在时间t内到达n个顾客的概率为或相继到达的顾客的间隔时间T 服从负指数分布,即式中λ为单位时间顾客期望到达数,称为平均到达率;1/λ为平均间隔时间。
在排队论中,讨论的输入过程主要是随机型的。
排队规则排队规则分为等待制、损失制和混合制三种。
排队系统仿真matlab实验报告
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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
排队系统的模拟
随机数乘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)直接
把当前时间跳到下一个事件发生的时刻。 如果在连续事件之间的滴嗒间隔很大时,用事件
MMN排队系统建模与仿真
.《系统仿真与matlab》综合试题....................... 错误!未定义书签。
M/M/N 排队系统的模拟仿真 (1)摘要 (1)1. 问题分析 (3)2. 模型假设 (4)3. 符号说明 (5)4. 模型准备 (5)4.1 排队系统的组成和特征 (5)4.1.1输入过程 (6)4.1.2排队规则 (6)4.1.3服务过程 (7)4.1.4排队系统的主要指标 (7)4.2输入过程与服务时间的分布 (8)4.2.1负指数分布 (8)4.2.2泊松分布 (8)4.3生灭过程 (9)5. 标准M/M/N模型 (11)5.1多服务台模型准备 (11)5.2多服务台模型建立 (12)5.2.1服务利用率 (12)5.2.2平均排队长 (13)5.2.3平均队长 (13)5.2.4平均等待时间 (14)6. 程序设计 (14)6.1动画流程图 (14)6.2 M/M/N流程图 (15)7. 程序运行实例介绍 (16)7.1动画实例讲解 (16)7.2M/M/N排队系统实例讲解 (18)8. 程序实现难点和模型评价 (21)8.1程序实现难点 (21)8.2模型评价 (21)9. 参考文献 (21)10. 附录 (22)10.1动画实现的核心程序 (22)10.2 M/M/N模型计算主要程序 (32)M/M/N 排队系统的模拟仿真摘要排队是在日常生活中经常遇到的事,由于顾客到达和服务时间的随机性,使得排队不可避免。
因此,本文建立标准的M/M/N模型,并运用Matlab软件,对M/M/N排队系统就行了仿真,从而更好地深入研究排队问题。
问题一,基于顾客到达时间服从泊松分布和服务时间服从负指数分布,建立了标准的M/M/N模型。
运用Matlab软件编程,通过输入服务台数量、泊松分布参数以及负指数分布参数,求解出平均队长、服务利用率、平均等待时间以及平均排队长等重要指标。
然后,分析了输入参数与输出结果之间的关系。
排队模型的随机模拟
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”。以顾客离开作为分界点,统计顾客人数,顾客的排队时间,顾客队伍长度,服务员的服务时间。根据顾客的到达时间和服务时间要分两种情况:①上一个顾客还没服务完,而下一个顾客已经到了。②上一个顾客服务结束后,而下一个顾客过一段时间才到达。
排队问题知识点总结归纳
排队问题知识点总结归纳排队问题是生活中常见的一种现象,在各个领域都有着广泛的应用。
从排队理论到排队模型,排队问题涉及数学、经济学、物理学等多个学科领域,具有重要的理论和实践价值。
一、排队问题的定义和基本特点排队问题是指在一定的规则下,由许多个体依次等待某种服务或者处理某种事务的过程。
排队问题具有以下基本特点:1. 排队的客体:排队问题的客体可以是人、机器、车辆等,对于不同的客体,排队规则和模型可能不同。
2. 排队的服务:排队的服务可以是购物、交通、医疗、餐饮等多种形式,不同的服务对排队的要求也不同。
3. 排队的规则:排队可能遵循先来先服务、优先等级、随机等待等不同的规则,不同的规则下可能产生不同的效果。
4. 排队的目的:排队的目的是为了合理分配资源、提高效率、保障公平等多种原因。
二、排队问题的基本模型排队问题可以用数学模型来描述,常见的排队模型有M/M/1排队模型、M/M/c排队模型、M/G/1排队模型等。
这些模型基于排队的客体、服务、规则和目的,对排队问题进行了抽象和理论分析。
排队模型的基本元素包括:到达过程、服务过程、排队规则和系统性能指标。
1. 到达过程:描述排队客体到达的频率和规律,主要包括到达间隔的分布、到达率和到达模式。
2. 服务过程:描述排队客体接受服务的频率和规律,主要包括服务时间的分布、服务率和服务模式。
3. 排队规则:描述排队客体的排队规则,主要包括优先级、服务顺序、等待规则等。
4. 系统性能指标:描述排队系统的效率、稳定性和公平性等性能指标,主要包括平均等待时间、系统繁忙率、系统利用率等。
三、排队问题的常见应用排队问题在现实生活中有着广泛的应用,涉及到交通、医疗、零售、餐饮、银行等多个领域。
根据不同的应用领域,排队问题的特点和模型也会有所不同。
1. 交通领域:交通拥堵是城市问题的常见症结,而排队问题的根本原因之一。
研究交通排队问题,可以从交通流理论、交通信号控制、交通规划等多个角度入手,找到合理的解决办法。
基于计算机仿真的排队系统优化问题研究
基于计算机仿真的排队系统优化问题研究一、本文概述随着信息技术的快速发展和广泛应用,排队系统在各种实际场景中的应用越来越普遍,如银行、医院、商场、交通等各个领域。
然而,传统的排队系统往往存在效率不高等待时间长、服务质量不稳定等问题,这些问题不仅影响了服务效率,也降低了客户满意度。
因此,如何优化排队系统,提高服务效率和质量,成为了当前研究的热点之一。
基于计算机仿真的排队系统优化问题研究,旨在通过计算机仿真技术,对排队系统的运行过程进行模拟和分析,发现系统存在的问题和瓶颈,进而提出有效的优化策略。
本文首先介绍了排队系统的基本概念和分类,分析了传统排队系统存在的问题和挑战。
然后,详细介绍了计算机仿真技术在排队系统优化中的应用,包括仿真模型的建立、仿真实验的设计和实施、仿真结果的分析和评估等方面。
接着,本文重点探讨了基于计算机仿真的排队系统优化策略,包括服务流程优化、资源配置优化、排队规则优化等方面,并通过案例分析和实验验证,证明了这些优化策略的有效性和可行性。
本文的研究不仅有助于解决传统排队系统存在的问题,提高服务效率和质量,也有助于推动计算机仿真技术在排队系统优化中的广泛应用和发展。
本文的研究方法和成果也可以为其他领域的系统优化问题提供借鉴和参考。
二、排队系统理论基础排队系统,也称为随机服务系统,是一种广泛存在于现实生活中的数学模型。
这种模型通常描述顾客到达服务机构,等待并接受服务的过程。
排队系统理论的核心在于分析并优化这种服务过程的效率。
在计算机仿真领域,通过模拟排队系统的运行过程,可以深入理解其内部机制,为优化系统性能提供理论支持。
排队系统主要由三个基本部分构成:输入过程、排队规则和服务机构。
输入过程描述了顾客到达服务系统的规律,常见的输入过程包括定长输入、泊松输入等。
排队规则决定了顾客在系统中的等待和服务顺序,常见的有先到先服务(FCFS)、最短作业优先(SJF)等。
服务机构则负责为顾客提供服务,其服务能力通常受到多种因素的影响,如服务速度、服务人员数量等。
管理系统模拟的基本原理-排队系统手工仿真
第三步:按照分布规律建立与随机数的映射关系
例如 时间
概率 随机数范围(均匀分布)
2 3 5
0.2 0.5 0.3
1-2 3-7 8-0
相当于现实中的抽奖: 在箱子中放10个小球,其中两个小球写上2,五个写上 3,三个小球写上5,随机取,则取出为2的小球概率为20%,….. 也可以分别写上0,1,2,…,9,随机取,如果取出的球上写的是1或2,则服务时间 为2,如果球上是3-7,则时间为3,…
系统模拟方法:在数学分析方法难以应用的情况下,唯一解决 方案 简单易用,成本低-专门的模拟软件 无需过多的假设,模型更接近现实 模型一次建立,多次使用
3 系统模拟方法的本质和关键
本质:对符合一定统计分布规律的现实随机 过程进行模仿再现,进而对系统进行分析、 设计和改进—统计方法 关键:如何动态实现这种模仿或影射
⑤ ⑥
完成仿真过程 结果分析
5 手工模拟实例-单通道队列
某售票点只有一个售票窗口. 顾客到达时间 间隔分别是2、3、4、5分钟, 各时间间隔概率分 别为0.4、0.3、0.15、0.15. 对每位顾客的服务时 间为1、2、3分钟,相应概率分别为0.1、0.3、 0.6. 请模拟6位顾客的到达和购票过程,分析是 否需要增加售票窗口.
第四步:抽取随机数,确定顾客到达和服务时间
顾客的到达时间间隔
顾客 1 2 3 4 5 6
7
随机数 13 27 15 48 89
到达时间间隔 2 2 2 3 5
第四步:抽取随机数,确定顾客到达和服务时间
顾客接受服务的时间
顾客 1 2 3 4 5 6
随机数 8 0 7 5 1 9
服务台单队列排队系统仿真
服务台单队列排队系统仿真1. 引言排队是我们日常生活中常见的现象之一。
每当我们去银行、超市、餐厅等地方,总会看到人们在服务台前排长队等待接受服务。
而排队系统的效率直接影响到我们的等待时间和满意度。
为了改善排队系统的效率,许多地方引入了服务台单队列排队系统。
这种系统中,所有顾客都将排在同一个队伍中,然后按照先后顺序依次接受服务。
这种系统相比于多个队列排队系统,能够有效减少空闲时间和服务延迟。
为了对服务台单队列排队系统进行评估和优化,我们可以使用仿真技术来模拟系统的运行情况,并对其进行分析。
2. 仿真模型设计在服务台单队列排队系统的仿真模型中,我们需要考虑到以下几个方面的因素:2.1 顾客到达规律在实际排队系统中,顾客的到达时间往往是随机的,我们可以使用随机数生成器来模拟此过程。
通过设定到达时间的概率分布函数,我们可以生成一系列随机数来模拟顾客的到达间隔。
2.2 服务时间每个顾客在服务台的服务时间也是随机的。
同样地,我们可以使用随机数生成器来模拟服务时间。
通过设定服务时间的概率分布函数,我们可以生成一系列随机数来模拟顾客在服务台的停留时间。
2.3 服务台数量为了简化仿真模型,我们假设只有一个服务台。
在实际情况中,可以根据实际需求增加服务台数量,以提高系统的整体效率。
2.4 排队规则在服务台单队列排队系统中,顾客按照先后顺序依次接受服务。
当一个顾客结束服务后,下一个顾客将开始接受服务。
为了模拟这个过程,我们可以使用队列数据结构来管理顾客的排队顺序。
3. 仿真过程在进行仿真过程时,我们可以按照以下步骤进行操作:3.1 初始化仿真参数根据实际情况,我们可以设定好仿真的时间段、顾客到达规律和服务时间的概率分布函数等参数。
3.2 创建顾客队列根据顾客到达规律,我们可以按照一定的间隔时间将顾客加入到队列中。
3.3 顾客进入服务台当顾客队列不为空时,服务台将接受当前队列中的第一个顾客,并开始对其进行服务。
3.4 更新服务时间和队列在服务过程中,服务单位时间递减,直到达到零时,服务结束,当前顾客离开服务台,下一个顾客开始接受服务。
排队系统的建模仿真研究
( ) 件 表 : 件 表 列 举 了 系 统 运 行 过 程 所 发 生 的各 种 7事 事
1 排 队 系 统
1 1 基 本 概 念 . .
也就 是仿真要 解决 的问题 , 是系统调 研和建模 的依据 。 这
2 2 系统 调 研 . ’
排 队 是 生 活 中 经 常 出 现 的 现 象 。如 到 银 行 办 理 业 务 ,
系 统 结 构 调 研 的 目 的 是 为 了 深 入 了 解 系 统 的 总 体 流
13 排 队 系统 常 用 的 输 出 参 数 .
n
① 平 均 等 待 时 间 d i ∑ L —l m J i
n —一
() 1
() 2
() 3
真 的 专 业 性 特 点 , 真 模 型 和 运 行 模 型 的 工 作 一 般 由 专 业 仿 的 仿 真 人 员 来 做 。 但 是 对 系 统 的 分 析 常 常 需 要 仿 真 需 求 方 的 密 切 配 合 。为 了 使 仿 真 需 求 方 了 解 仿 真 的 一 般 过 程 , 以 配 合 仿 真 前 期 的 调 研 工 作 , 以 将 上 述 调 研 所 需 获 取 的 数 可 据 和参数 整理并列 表 , 仿真需 求 方进 行针 对性 的 填写 , 由 以 保 证资料 的完整性 和准确性 。 系 统 模 型 的形 式 可 以是 多 样 的 , 文 字 叙 述 型 、 程 图 有 流 建 立 系 统 的 流 程 图 模 型 。 流 程 图 模 型 中 应 包 含 有 : 时 实 临
排队系统的仿真与应用论文
摘要排队系统是一个应用很广泛的课题。
它可以应用于各个部门,比如:银行储蓄柜的排队管理,医院门诊挂号,电信营业厅排队管理,财政营业厅,税务报税大厅,工商注册,海关业务大厅,邮政业务,民航、铁路、车站售票处等任何窗口服务需要排队等候的场所。
在这些场所,使用排队管理系统的意义重大。
首先,它可以提升服务机构的形象,提高服务质量;其次,减少客户的等待时间,杜绝大厅的纷乱现象;最后,它也为部门有关决策提供依据,增加对工作人员的考核依据。
此外利用排队系统的原理结合预测算法和大量历史数据来设计系统,用它来预测顾客的到来和顾客的订单。
利用本系统可以科学的预测将来的某一天中顾客的到达情况和他所要的订单,为公司生产多少产品提供了依据。
除了以上的基本功能外,本系统还提供了对历史数据和库存基本操作,更方便了用户的使用。
希望对朋友们有所启发,也希望同朋友们一起完善它,使之更实用。
【关键词】排队系统预测数据库操作历史数据随机数AbstractQueueing system is an applied very extensive lesson. It can apply in the each department,for example,the queueing system using in the cashomart of bank, the hospital out-patient service registers,the system using in the telecommunication business hall,public finance business hall,tax administration tax reporting hall,industry and business register, maritime customs business hall, postal service business, and civil , railroad, station box office etc. any places which provide server windows and demand waiting in line. In these places, it is very important to use the queueing system. First, it can promote the image of the service organization,and increase service quantity; Second, it also can reduce the customer's time spending on waiting, and eradicate completely the confusion phenomenon of the hall; Finally, it can provide grounds for some relevant decisions, and increase to investigate to the worker basis. In addition,making use of the principle of the queueing system ,predictive algorithm, and a flood of history data,we can design a system,with which to predict when the next customer will come and how many products he will order.Making use of this system,you can predict scientifically the situation of the arrives of customers and their orders on some day in the future,which could provide the basis on how many products should be produce in the future. In addition to above basic function, this system still provided the basic operations for the history data in stock,making it more convenient. I hope this system to have to inspire to the friends.I also hope to make it perfect with friends, let it more practical. 【Key Words】Queueing system;Pretect;Operate on database; History data;Random number目录引言 (2)第一章系统概述及其体系结构 (3)1.1系统概述 (3)1.2系统体系结构 (4)第二章开发环境介绍 (6)2.1 Microsoft Visual C++ 6.0简介 (7)2.2开发过程中所用到的组件及其介绍 (12)2.3开发过程中所用到的数据库及其简介 (13)第三章系统功能的实现 (15)3.1预测算法的原理 (15)3.2 Visual C++环境下数据库与应用程序的连接 (19)3.3 各个功能模块的实现简介 (21)第四章开发过程中遇到的问题及其解决方法 (36)第五章系统的改进方案 (37)第六章心得体会 (38)致谢 (39)参考文献 (40)附录 (41)引言离散事件系统中,由于顾客到来时间间隔与服务台服务时间都是随机的,所以在系统中会产生顾客排队现象,排队是该类系统的特征. 离散系统仿真技术是研究该类系统的有效方法,在计算机上模拟逐个顾客的来到、排队、服务及离开,统计得到整个系统的运行参数,即根据顾客到来及服务台结构、服务时间的分与参数得到了顾客的等待时间与服务台效率,从而有效地分析各类排队系统的性能。
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;CusNum(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');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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
系统建模与仿真-排队论
常见仿真软件介绍与比较
功能方面
各软件均有独特的功能优势 ,如MATLAB/Simulink在数
学计算和可视化方面表现突 出,Arena则擅长离散事件仿
真。
易用性方面
MATLAB/Simulink和Arena 均提供友好的图形界面和丰 富的教程资源,便于用户快
速上手。
开放性方面
OMNeT作为开源软件,具有 较高的开放性和定制性,但 可能需要一定的编程基础。
完善。
建议和展望
在未来的学习和研究中,我将继续关注排队论领域的最新动态和研究成果,不断拓宽自 己的知识面和视野。同时,我也希望能够在实践中不断运用所学知识解决实际问题,提
高自己的实践能力和创新能力。
THANKS
感谢观看
成本效益
相较于实际系统搭建,仿真技术通常成本更低、周期更 短。
常见仿真软件介绍与比较
MATLAB/Simulink
提供强大的数学计算和可视化工具,适用于复杂系统建模与仿真。
Arena
专注于离散事件仿真,适用于制造、物流等领域的优化问题。
常见仿真软件介绍与比较
• OMNeT开源的网络仿真框架,适用于通 信网络性能评估。
06
总结与展望
本次课程重点内容回顾
排队论基本概念
介绍了排队论的定义、应用领域以及基 本术语和符号。
排队系统性能指标
介绍了评价排队系统性能的主要指标, 如平均队长、平均等待时间、服务强
度等。
排队系统组成与分类
详细阐述了排队系统的输入过程、服 务机构以及排队规则,并对排队系统 进行了分类。
经典排队模型及其求解
定义系统状态和变量
明确系统的状态和关键变量 ,如队列长度、等待时间等 。
排队系统的随机模拟法、旅馆仿真分析
运筹学课题实验报告指导老师:周亚平第二小组成员:张雷勇、布兵、肖相泽、黎潇、哈西木江实验一:排队系统的随机模拟法思路描述:通过产生0-99之间的随机数,并指定概率值所落区域来模拟现实货车到达与卸货的现实场景。
实现方法:C++实验;//源代码//排队系统的随机模拟法 By第二小组#include<iostream>#include<iomanip>#include<math.h>#include<string>#include <ctime>#include <cstdlib>using namespace std;int main(){cout<<"排队系统的随机模拟法,第二小组,代码:张雷勇"<<endl<<endl;long int N;float arr_N,late_N,ave_arr_N,ave_late_N;arr_N=0.0;late_N=0.0;cout<<"请输入您准备模拟的天数:"<<endl;cin>>N;//即为需要模拟的天数int *RANDOM_1,*ARRIVAL,*NEED,*REAL,*LATE;RANDOM_1=new int [N];//此处定义的是随机数数组ARRIVAL=new int [N];//此处定义的是到达的车辆数数组NEED=new int [N];//此处定义的是需要卸货的车辆数组REAL=new int [N];//此处定义的实际卸货的车辆数数组LATE=new int [N];//此处定义的是推迟卸货车数double random(double,double);srand(unsigned(time(0)));for(int icnt = 0; icnt != N+3; ++icnt){//加3的原因是为了模拟一个稳态过程中的任意点开始RANDOM_1[icnt]=int(random(0,99));if((RANDOM_1[icnt]>=0)&&(RANDOM_1[icnt]<=22)){ARRIVAL[icnt]=0;}else if((RANDOM_1[icnt]>=23)&&(RANDOM_1[icnt]<=52)){ARRIVAL[icnt]=1;}else if((RANDOM_1[icnt]>=53)&&(RANDOM_1[icnt]<=82)){ARRIVAL[icnt]=2;}else if((RANDOM_1[icnt]>=83)&&(RANDOM_1[icnt]<=92)){ARRIVAL[icnt]=3;}else if((RANDOM_1[icnt]>=93)&&(RANDOM_1[icnt]<=97)){ARRIVAL[icnt]=4;}else{ARRIVAL[icnt]=5;}}NEED[0]=ARRIVAL[0];if(NEED[0]>=2){REAL[0]=2;LATE[0]=NEED[0]-REAL[0];}else{REAL[0]=NE ED[0];LATE[0]=0;}for(int i = 1; i != N+3; ++i){//加3的原因是为了模拟一个稳态过程中的任意点开始NEED[i]=ARRIVAL[i]+LATE[i-1];if(NEED[i]<=2){REAL[i]=NEED[i];LATE[i]=0;}else{REAL[i]=2;LATE[i]=NEED[i]-REAL[i];}}for(int t=3;t != N+3;++t){arr_N=arr_N+ARRIVAL[t];late_N=late_N+LATE[t];}ave_arr_N=arr_N/N;ave_late_N=late_N/N;cout<<"货车每天的平均到达数为:"<<endl;cout<<ave_arr_N<<endl;cout<<"平均每天的推迟卸载货车数为:"<<endl;cout<<ave_late_N<<endl;//cout << "No." << icnt+1 << ": " <<ARRIVAL[icnt]<<endl;}//cout << "No." << icnt+1 << ": " <<RANDOM_1[icnt]<<endl;} return 0;}double random(double start, double end){//产生随机数的函数return start+(end-start)*rand()/(RAND_MAX + 1.0);}运行结果截屏:从运行的结果来看,如果经过一个很长时期的模拟实验,货车的每天平均达到数和平均每天推迟卸货的货车数是趋于稳定的。
排队模型与模拟方法
第一节 排队系统的基本概念
一、排队系统的组成 二、排队系统的主要研究内容 三、排队系统的符号表示 四、排队系统的常见分布
一、排队系统的组成
• 共同特征:
(1)请求服务的人或者物——顾客 (2)有为顾客服务的人或者物--服务台 (3)顾客到达系统的时刻是随机的,为 每一位顾客提供服务的时间是随机的, 因而整个排队系统的状态也是随机的。
各种形式的排队系统
随机服务系统
排队论所要研究解决的 问题
• 面对拥挤现象,人们通常的做法是增加服 务设施,但是增加的数量越多,人力、物 力的支出就越大,甚至会出现空闲浪费, 如果服务设施太少,顾客排队等待的时间 就会很长,这样对顾客会带来不良影响。 • 如何做到既保证一定的服务质量指标 , 又 如何做到既保证一定的服务质量指标, 使服务设施费用经济合理。 使服务设施费用经济合理。 • 恰当地解决顾客排队时间与服务设施费用 大小这对矛盾,就是随机服务系统理论—— 排队论所要研究解决的问题。
令
ρ=
λ ,称为服务强度。 µ
ρ <1 即
λ < µ ,表明服务员有足够的能力完全
接待到来的全体顾客。可以证明排队模型是稳定的。 但这决不是说,每位顾客就不用等待了,因为在 系统运行中随机因素在起作用。
ρ >1 即
λ > µ ,表明服务员没有足够的能力接待到
来的全体顾客,从总的趋势上说,排队的顾客会越来 越多。可以证明排队模型是不稳定的。
排队系统由3 排队系统由3个部分组成
1、输入过程 2、排队规则 3、服务规则
顾客是按怎样的规律到达排 1.输入过程: 输入过程: 队系统的 (1)顾客源 指顾客的来源。 顾客源, (1)顾客源,指顾客的来源。 可以是有限的,也可以是无限的。 可以是有限的,也可以是无限的。 (2)顾客到达方式,描述顾客怎样来到系统。 (2)顾客到达方式,描述顾客怎样来到系统。 顾客到达方式 可以单个到达,也可以成批到达。 可以单个到达,也可以成批到达。 (3)顾客流的概率分布 顾客流的概率分布( (3)顾客流的概率分布(相继顾客到达时间间 隔的分布) 隔的分布) 有确定的时间间隔, 有确定的时间间隔,也有随机的时间间隔
基于Arena的影印店排队系统仿真建模与分析
基于Arena的影印店排队系统仿真建模与分析摘要影印店是大学校园里一种很重要的配套设施,而影音店排长队现象是困扰店家和客户的一大难题,减少客户的等待时间,提高店铺的服务效率,成为关注的焦点。
Arena仿真技术能对这种复杂排队系统进行实际模拟进而对其优化。
本文用Arena仿真软件分析确定客户到达间隔的分布和处理时间的分布,并用假设检验方法进行检验,确定分布类型,最终模拟一个影音店的工作过程,根据实体排队间隔时间等指标,提高影音店的运行效率。
关键字:Arena,仿真,影印店,排队一、引言 (3)二、原理简述......................... 错误!未定义书签。
三、实地调研及数据收集..... 错误!未定义书签。
四、数据分析处理................. 错误!未定义书签。
4.1客人到店的时间间隔错误!未定义书签。
4.2打印的服务时间....... 错误!未定义书签。
4.3复印的服务时间 (4)五、模型建立 (6)5.1客户到达模块 (6)5.2选择服务模块 (7)5.3 接受服务模块 (7)5.3.1 打印服务模块 (7)5.3.2 复印服务模块 (8)5.4 离开模块 (8)5.5模型总体结构图 (9)六、仿真 (9)6.1仿真运行参数 (9)6.2仿真结果分析 (10)七、优化及结果分析 (11)7.1 延长服务时间 (11)7.2增加机器数量 (12)八、结论 (13)参考文献 (13)一、引言当代学生无论在考试还是平时,都会用到试卷和各种资料。
现在不是每种资料都要去书店买,有的资料在书店也买不到,有些只是需要参考书中的一部分,那么买整本书就很不合实际,此时就需要复印。
方便,快捷,也可以节省不必要的开支。
当代大学生尤其需要这样的服务。
在考试前夕,老师会总结一些有用的复习资料提供给大家作为参考,这种资料往往是以电子邮件的形式发放,各高校的学生并不都是本地学生,所以只有利用影印店,即使是本地学生,大部分为了方便也都会选择学校附近的影印店来解决资料问题。
排队系统仿真(1)
4.3 排队模型的分类
单队多服务台按FIFO规则服务的情形表示为 X/Y/Z 式中,X——相继到达时间间隔的分布; Y——服务时间的分布; Z——服务台数目。 Ek 表示相继到达间隔时间和服务时间的各种分布的符号: M——指数分布 Ek ——k阶爱尔朗分布 D——确定性时间间隔 GI——一般相互独立的随机分布 G——一般随机分布 例,M/M/1
4.排队系统模拟 排队系统模拟
在日常生活中, 在日常生活中,人们常常会见到各种各样 的服务系统。例如: 的服务系统。例如: 到食堂去买饭, 到食堂去买饭,炊事员和买饭人员构成一 个服务系统; 个服务系统; 在公共汽车服务系统,由汽车、 在公共汽车服务系统,由汽车、乘客和车 站组成。 站组成。 服务系统的主要特征是出现排队。 服务系统的主要特征是出现排队。因此 也称其为“排队系统” 也称其为“排队系统”。
到达模式
到达
排队
服务机构
离去
几种常见的排队系统的结构:
动态实体到达 动态实体 服务设备 离去
一线一服务设备排队系统结构
服务设备1 服务设备 动态实体到达 动态实体 离去 : : 服务设备n 服务设备
一线并联服务设备排队系统结构
排队系统两个随机因素
顾客到达是随机的(泊松分布) 一个泊松过程在(0,t)时间内到达K个 顾客的概率为:
排队模拟要解决的基本问题
平均等待时间问题 服务台空闲时间问题 系统绩效(性能)
4.1排队系统的组成
排队系统的三个基本组成部分
到达模式 指临时实体 临时实体按怎样的规律到达。 临时实体 服务机构 指同一时刻有多少服务台 服务台可以接纳临时实体, 服务台 它们的服务要多少时间。 排队规则 服务台完成当前服务后,从队列中选择下一 个实体服务的原则。
排队模型的随机模拟
求导得分布函数
, 积分可得
λ
λ λ
。 由此对
分布函数求反函数,则随机变量的变化规律 ( , ),则 ( )。
,设
,因为
服务时间以1min为单位时间,而服务时间Y满足均匀分布,分布范围(0,2),由已知, 用rand()函数产生随机变量符合服务时间的要求。
蒙特卡诺随机模拟
Monte carlo 算法是以概率和统计理论方法为基础的一种计算方法。将所求解的问
对于以上问题,随机模拟100次的结果: 平均排队时间为0.6526分钟 服务员的空闲率49.63% 平均队伍长度0.60 日平均服务客人240人 随机模拟次数为200次的统计结果: 平均排队时间为0.6590分钟 服务员的空闲率49.78% 平均队伍长度0.60 日平均服务客人239人 同时,随机模拟次数为500次的统计结果: 平均排队时间为0.6600分钟 服务员的空闲率49.95% 平均队伍长度0.60 日平均服务客人239人
Y
i <480?
N
初始化到达时间与开始服务时间
到达时间 = 上个到达时间 + 到达时间间隔 ; 起始服务时间 =ma x( 到达时间,上一个结束服务时间)
累计等待时间,空闲时间营业范围内?YN输出结束
5
由于C语言包括服从均匀分布的随机变量函数rand() ,调用随机函数在VC6.0中运行程 序如下: #include<stdio.h> #include<time.h> #include<math.h> #include<stdlib.h> double AverageRandom(double min,double max) { while(1) { int p=rand(); if(p>=30000)continue; int q=rand(); if(q>=30000)continue; float s=fmod(p,max)+min+q%10000/10000.0; if(s>min && s<max) return s; } } double ExponentRandom(double landa) { double x; int q; while((q=rand())>30000); x=q%10000/10000.0; return -1.0/landa*log(1-x); } int main() { int i,j,k,Sumi=0; int count=0; srand(time(NULL)); double SumW=0,SumE=0; int LengthQ1,LengthQ2; double SumLQ=0,LastTime; while(count<200) { double TimeR[480]={0};//到达时间间隔 double TimeS[480]={0};//服务时间 double TimeB[480]={0};//开始服务时间 double TimeN[480]={0};//到达时间 double LQ[480]={0}; TimeR[0]=ExponentRandom(0.5); TimeS[0]=AverageRandom(0,2);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运筹学课题实验报告指导老师:周亚平第二小组成员:张雷勇、布兵、肖相泽、黎潇、哈西木江实验一:排队系统的随机模拟法思路描述:通过产生0-99之间的随机数,并指定概率值所落区域来模拟现实货车到达与卸货的现实场景。
实现方法:C++实验;//源代码//排队系统的随机模拟法 By第二小组#include<iostream>#include<iomanip>#include<math.h>#include<string>#include <ctime>#include <cstdlib>using namespace std;int main(){cout<<"排队系统的随机模拟法,第二小组,代码:张雷勇"<<endl<<endl;long int N;float arr_N,late_N,ave_arr_N,ave_late_N;arr_N=0.0;late_N=0.0;cout<<"请输入您准备模拟的天数:"<<endl;cin>>N;//即为需要模拟的天数int *RANDOM_1,*ARRIVAL,*NEED,*REAL,*LATE;RANDOM_1=new int [N];//此处定义的是随机数数组ARRIVAL=new int [N];//此处定义的是到达的车辆数数组NEED=new int [N];//此处定义的是需要卸货的车辆数组REAL=new int [N];//此处定义的实际卸货的车辆数数组LATE=new int [N];//此处定义的是推迟卸货车数double random(double,double);srand(unsigned(time(0)));for(int icnt = 0; icnt != N+3; ++icnt){//加3的原因是为了模拟一个稳态过程中的任意点开始RANDOM_1[icnt]=int(random(0,99));if((RANDOM_1[icnt]>=0)&&(RANDOM_1[icnt]<=22)){ARRIVAL[icnt]=0;}else if((RANDOM_1[icnt]>=23)&&(RANDOM_1[icnt]<=52)){ARRIVAL[icnt]=1;}else if((RANDOM_1[icnt]>=53)&&(RANDOM_1[icnt]<=82)){ARRIVAL[icnt]=2;}else if((RANDOM_1[icnt]>=83)&&(RANDOM_1[icnt]<=92)){ARRIVAL[icnt]=3;}else if((RANDOM_1[icnt]>=93)&&(RANDOM_1[icnt]<=97)){ARRIVAL[icnt]=4;}else{ARRIVAL[icnt]=5;}}NEED[0]=ARRIVAL[0];if(NEED[0]>=2){REAL[0]=2;LATE[0]=NEED[0]-REAL[0];}else{REAL[0]=NE ED[0];LATE[0]=0;}for(int i = 1; i != N+3; ++i){//加3的原因是为了模拟一个稳态过程中的任意点开始NEED[i]=ARRIVAL[i]+LATE[i-1];if(NEED[i]<=2){REAL[i]=NEED[i];LATE[i]=0;}else{REAL[i]=2;LATE[i]=NEED[i]-REAL[i];}}for(int t=3;t != N+3;++t){arr_N=arr_N+ARRIVAL[t];late_N=late_N+LATE[t];}ave_arr_N=arr_N/N;ave_late_N=late_N/N;cout<<"货车每天的平均到达数为:"<<endl;cout<<ave_arr_N<<endl;cout<<"平均每天的推迟卸载货车数为:"<<endl;cout<<ave_late_N<<endl;//cout << "No." << icnt+1 << ": " <<ARRIVAL[icnt]<<endl;}//cout << "No." << icnt+1 << ": " <<RANDOM_1[icnt]<<endl;} return 0;}double random(double start, double end){//产生随机数的函数return start+(end-start)*rand()/(RAND_MAX + 1.0);}运行结果截屏:从运行的结果来看,如果经过一个很长时期的模拟实验,货车的每天平均达到数和平均每天推迟卸货的货车数是趋于稳定的。
当模拟天数趋近于正无穷,我们可以推断这两个值均是一个常数。
实验二:非线性插值法估计Wq*u实验思路:尝试用拉格朗日插值法来估计Wq*u实现方法:C++//源代码//二次拉格朗日差值法估计Wq*u By第二小组#include<iostream>#include <stdlib.h>#include<iomanip>#include<math.h>#include<string>using namespace std;int main(){cout<<"运筹学作业小课题之第一题,第二小组,代码:张雷勇"<<endl<<endl;int c,i,j;cout<<"请输入有多少服务台数!"<<endl;cin>>c;int d;d=c-1;cout<<endl;cout<<"请输入rou的值!"<<endl;float p;cin>>p;cout<<endl;float w[10][5]={{0.1111,0.0101,0.0014,0.0002,0.0000}, {0.2500,0.0417,0.0103,0.0030,0.0010}, {0.4286,0.0989,0.0333,0.0132,0.0058}, {0.6667,0.1905,0.0784,0.0378,0.0199}, {1.0000,0.3333,0.1579,0.0870,0.0521}, {1.5000,0.5625,0.2956,0.1794,0.1181}, {2.3333,0.9608,0.5470,0.3572,0.2519}, {4.0000,1.7778,1.0787,0.7455,0.5541}, {9.0000,4.2632,2.7235,1.9694,1.5250},{19.0000,9.2564,6.0467,4.4571,3.5112}};floatx[10]={0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.95};double fx=0.0;double tmp;for(i=0;i<10;i++){tmp=1.0;for(j=0;j<i;j++)tmp=tmp*(p-x[j])/(x[i]-x[j]);for(j=i+1;j<10;j++)tmp=tmp*(p-x[j])/(x[i]-x[j]);fx=fx+tmp*w[i][d];}if((p>=0.1)&&(p<=0.95)&&((c==1)||(c==2)||(c==3)||(c==4)||(c==5))){ cout<<"经过系统精密运算,Wq*u的拉格朗日插值结果为:"<<endl; cout<<setiosflags(ios::fixed)<<setprecision(16)<<fx<<endl;}else{cout<<"严重警告!"<<endl;cout<<"c的值或者rou的值不符合系统要求,请检查后重新输入!"<<endl;}system("Pause");return 0;}运行结果截屏:运行结果说明,在插值上面,拉格朗日的插值能够满足更高的精度要求。
非线性插值的误差更小一些。
实验三:旅馆仿真模拟主要思想:通过仿真的方法,对现实的旅馆排队情况进行模拟。
在给定旅馆的房间数的情况下,计算出客人被拒绝的概率,以及房间空闲的数目平均数。
实现方法:C++//源代码#include<iostream>#include<iomanip>#include<math.h>#include<string>using namespace std;int main(){cout<<"旅馆的仿真算法,第二小组,代码:张雷勇"<<endl<<endl;int lamt=6;//平均每天到达人数int u_1=2;//平均逗留时间int crou=12;long int crou_n[8];long int n_jiecheng[8];double x4[8],x5[8];long int tmp=1;double Pc[8],Ls[8];for(int i=0;i<8;i++){crou_n[i]=pow(crou,i+1);long int jiecheng(int m);n_jiecheng[i]=jiecheng(i+1);x4[i]=crou_n[i]/n_jiecheng[i];}cout<<" "<<"满员的概率"<<" "<<"每天客房平均占用数"<<endl;x5[0]=1+x4[0];for(int j=1;j<8;j++){for(int k=j;k>=0;k--){tmp=tmp+x4[k];}x5[j]=tmp;tmp=1;}//cout<<x5[2]<<" "<<x5[3]<<endl;//测试语句for(int m=0;m<8;m++){Pc[m]=float(x4[m]/x5[m]);Ls[m]=(1-Pc[m])*12;cout<<"当有"<<m+1<<"个房间的时候:"<<setiosflags(ios::fixed)<<setprecision(8)<<Pc[m]<<" "<<Ls[m]<<endl;}//cout<<Pc[2]<<" "<<Pc[3]<<endl;//测试语句return 0;}long int jiecheng(int m){//自己写的阶乘函数long int w=1;for(int n=m;n>0;n--){w=w*n;}return w;}运行结果截屏:从运行的结果来看,当房间数目越多的时候,满员的概率就会越低,而每天客房的平均占用数就会越高。