数学建模 | MATLAB学习 | 排队论

•排队论发源于上世纪初。当时美国贝尔电话公司发明了自动电话,以适应日益繁忙的工商业电话通讯需要。这个新发明带来了一个新问题,即通话线路与电话用户呼叫的数量关系应如何妥善解决,这个问题久久未能解决。1909年,丹麦的哥本哈根电话公司A.K.埃尔浪(Erlang)在热力学统计平衡概念的启发下予以解决了。

一、排队现象

 到达顾客       服务内容          服务机构

 ——————————————————————————

 病 人        诊断/手术         医生/手术台

 进港的货船   装货/卸货         码头泊位

 到港的飞机   降落              机场跑道

 电话拨号     通话              交换台

 故障机器     修理              修理技工

 修理技工     领取修配零件      仓库管理员

 上游河水     入库              水闸管理员 

 ——————————————————————————

 (1)由于顾客到达和服务时间的随机性,

      现实中的排队现象几乎不可避免;

 (2)排队过程,通常是一个随机过程,

      排队论又称“随机服务系统理论”;


二、排队系统

 (一)排队服务过程

数学建模 | MATLAB学习 | 排队论_第1张图片

 

(二)排队系统的要素及其特征

 1、排队系统的要素:
  

 (1)顾客输入过程;

 (2)排队结构与排队规则;

 (3)服务机构与服务规则;

 2、排队系统不同要素的主要特征

 (1)顾客输入过程;  

   顾客源(总体):有限/无限;

   顾客到达方式:逐个/逐批;(仅研究逐个情形)

   顾客到达间隔:随机型/确定型;

   顾客前后到达是否独立:相互独立/相互关联;

   输入过程是否平稳:平稳/非平稳;(仅研究平稳性)

数学建模 | MATLAB学习 | 排队论_第2张图片

 (2)排队结构与排队规则;

   顾客排队方式:等待制/即时制(损失制);

   排队系统容量:有限制/无限制;

   排队队列数目: 单列/多列;

   是否中途退出: 允许/禁止;

   是否列间转移: 允许/禁止;

         (仅研究禁止退出和转移的情形)


 (3)服务机构与服务规则;

   服务台(员)数目;单个/多个;

   服务台(员)排列形式;并列/串列/混合;

   服务台(员)服务方式;逐个/逐批;(研究逐个情形)

   服务时间分布;随机型/确定型;

   服务时间分布是否平稳:平稳/非平稳;(研究平稳情形)

数学建模 | MATLAB学习 | 排队论_第3张图片

 服务台(员)为顾客服务的顺序:

 ————————————

     a)先到先服务(FCFS);

    b)后到先服务(LCFS);

    c)随机服务;

    d)优先服务;

实例:

 单服务员的排队模型

 单服务员的排队模型,在某上商店有一个售货员,顾客陆续来到,售货员陆续来到,售货员逐个地接待顾客,当到来的顾客

较多时,一部分顾客便须排队等待,被接待后的顾客便离开商店。设:

1.顾客到来间隔时间服从参数为0.1的指数分布。

2.对顾客的服务时间从[4 , 15]上均匀分布。

3.排队按先来后到规则,队长无限制。

假设时间以min为单位,一个工作日为8h:

 (1)模拟一个工作日内完成服务的个数及顾客平均等待时间t;

 (2)模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平均等待时间。


设:w总等待时间;

ci : 第i个顾客的到达时刻;

bi : 第i个顾客的开始服务时刻;

ei : 第i个顾客的结束服务时刻;

第一问

clear
i = 2;%第二个顾客
w = 0;%等待时间
e(i-1)=0;
%指数分布的均值为1/0.1=10
%指两个顾客到达商店的平均间隔时间是10个单位时间,即平均10个单位时间到达
%一个顾客,顾客到达的间隔时间可以用exprnd(10)模拟;
x(i)=exprnd(10);%产生参数为0.1的指数分布的命令应为exprnd(1/0.1)
c(i)=x(i);%此时为第二个顾客
b(i)=x(i);%开始服务时间

while b(i)<=480 %8个小时
    %产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n)
    %产生一个[a,b]均匀分布的随机数:unifrnd (a,b)
    y(i) = unifrnd(4,15);%对顾客的服务时间服从在[4,15]上的均匀分布
    e(i) = b(i) + y(i);%结束服务时间
    w = w + b(i)-c(i);%等待时间累加,开始服务时间减去到达时间
    i=i+1;%下一个客人
    x(i)=exprnd(10);
    c(i)=c(i-1) + x(i);%上一个客人到达时间加上间隔时间
    b(i)=max(c(i),e(i-1));%取最大(上一个客人结束服务时间,此客人到达时间)
end
i = i-2;
t=w/i;
m=i
模拟出一个工作日内完成服务的顾客数m=48人,t=22.5min


第二问

clear
cs = 100 %100天;
for j=1:cs
    j
    w(j)=0;

    i = 2;%第二个顾客
    x(i)=exprnd(10);%产生参数为0.1的指数分布的命令应为exprnd(1/0.1)
    c(i)=x(i);%此时为第二个顾客
    b(i)=x(i);%开始服务时间

    while b(i)<=480
     %产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n)
    %产生一个[a,b]均匀分布的随机数:unifrnd (a,b)
        y(i) = unifrnd(4,15);%对顾客的服务时间服从在[4,15]上的均匀分布
        e(i) = b(i) + y(i);%结束服务时间
        w(j) = w(j) + b(i)-c(i);%等待时间累加,开始服务时间减去到达时间
        i=i+1;%下一个客人
        x(i)=exprnd(10);
        c(i)=c(i-1) + x(i);%上一个客人到达时间加上间隔时间
        b(i)=max(c(i),e(i-1));%取最大(上一个客人结束服务时间,此客人到达时间)
    end
i = i-2;
    t(j)=w(j)/i;
    m(j)=i;
end

pt=0;
    pm=0;
for j =1:cs
    pt=pt + t(j);
    pm = pm + m(j);
end
pt=pt/cs
pm=pm/cs

运行得到:pt =25(平均等待时间) pm = 43(顾客数)




你可能感兴趣的:(数学建模)