matlab中排队论的程序

matlab中排队论的程序,第1张

你参考模仿一下吧。

clear

clc

%*****************************************

%初始化顾客

%*****************************************

%总仿真时间

Total_time = 10

%队列最大长度

N = 10000000000

%到达率与服务率

lambda = 10

mu = 6

%平均到达时间与平均服务时间

arr_mean = 1/lambda

ser_mean = 1/mu

arr_num = round(Total_time*lambda*2)

events = []

%按负指数分布产生各顾客达到时间间隔

events(1,:) = exprnd(arr_mean,1,arr_num)

%各顾客的到达时刻等于时间间隔的累积和

events(1,:) = cumsum(events(1,:))

%按负指数分布产生各顾客服务时间

events(2,:) = exprnd(ser_mean,1,arr_num)

%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数

len_sim = sum(events(1,:)<= Total_time)

%*****************************************

%计算第 1个顾客的信息

%*****************************************

%第 1个顾客进入系统后直接接受服务,无需等待

events(3,1) = 0

%其离开时刻等于其到达时刻与服务时间之和

events(4,1) = events(1,1)+events(2,1)

%其肯定被系统接纳,此时系统内共有

%1个顾客,故标志位置1

events(5,1) = 1

%其进入系统后,系统内已有成员序号为 1

member = [1]

for i = 2:arr_num

%如果第 i个顾客的到达时间超过了仿真时间,则跳出循环

if events(1,i)>Total_time

break

else

number = sum(events(4,member) >events(1,i))

%如果系统已满,则系统拒绝第 i个顾客,其标志位置 0

if number >= N+1

events(5,i) = 0

%如果系统为空,则第 i个顾客直接接受服务

else

if number == 0

%其等待时间为 0

2009.1516

%PROGRAMLANGUAGEPROGRAMLANGUAGE

events(3,i) = 0

%其离开时刻等于到达时刻与服务时间之和

events(4,i) = events(1,i)+events(2,i)

%其标志位置 1

events(5,i) = 1

member = [member,i]

%如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统

else len_mem = length(member)

%其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻

events(3,i)=events(4,member(len_mem))-events(1,i)

%其离开时刻等于队列中前一个顾客的离开时刻加上其服

%务时间

events(4,i)=events(4,member(len_mem))+events(2,i)

%标识位表示其进入系统后,系统内共有的顾客数

events(5,i) = number+1

member = [member,i]

end

end

end

end

%仿真结束时,进入系统的总顾客数

len_mem = length(member)

%*****************************************

%输出结果

%*****************************************

%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离

%开时刻曲线图(stairs:绘制二维阶梯图)

stairs([0 events(1,member)],0:len_mem)

hold on

stairs([0 events(4,member)],0:len_mem,'.-r')

legend('到达时间 ','离开时间 ')

hold off

grid on

%绘制在仿真时间内,进入系统的所有顾客的停留时间和等

%待时间曲线图(plot:绘制二维线性图)

figure

plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-')

legend('等待时间 ','停留时间 ')

grid on

当 s 个服务台被占用后,顾客自动离去。

这里我们着重介绍如何使用 LINGO 软件中的相关函数。

对于损失制排队模型,其模型的基本参数与等待制排队模型有些不同,我们关心如下指标。

(1)系统损失的概率

其中rho是系统到达负荷 ,s是服务台或服务员的个数。

(2)单位时间内平均进入系统的顾客数( )

(3)系统的相对通过能力( )与绝对通过能力( )

(4)系统在单位时间内占用服务台(或服务员)的均值(即 )

注意:在损失制排队系统中, ,即等待时间为0。

在上述公式,引入 是十分重要的,因为尽管顾客以平均 的速率到达服务系统,但当系统被占满后,有一部分顾客会自动离去,因此,真正进入系统的顾客输入率是 ,它小于

其参数为 。编写LINGO程序如下:

求得系统的顾客损失率为43%,即43%的电话没有接通,有57%的电话得到了服务,通话率为平均每分钟有0.195次,系统的服务效率为43%。对于一个服务台的损失制系统,系统的服务效率等于系统的顾客损失率,这一点在理论上也是正确的。

(1)电话交换台的服务分为两类,第一类内线打外线,其强度为:

第二类时外线打内线,其强度为:

因此,总强度为:

(2)这是损失制服务系统,按题目要求,系统损失率不能超过5%,即:

(3)外线是整数,在满足条件下,条数越小越好。

由上述三条,编写相应的Lingo程序如下:

求得需要15条外线。在此条件下,交换台的顾客损失率为3.65 %,有96.35%的电话得到了服务,通话率为平均每小时185.67次,交换台每条外线的服务效率为64.23%。

求解时,尽量选用简单的模型让LINGO软件求解,而上述程序是解非线性整数规划(尽管是一维的),但计算时间可能会较长,因此,我们选用下面的处理方法,分两步处理。

编写LINGO程序:

求得

第二步,注意到@pel(rho,s)是s的单调递减函数,因此,对s取整数(采用只入不舍原则)就是满足条件的最小服务台数,然后再计算出其它的参数指标。

编写LINGO程序如下:

比较上面两种方法的计算结果,其答案是相同的,但第二种方法比第一种方法在计算时间上要少许多。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11154599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存