全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3905 1
2009-03-04

敢问各位大侠能不能提供排队论M/M/K的模拟代码啊~ 我编不出来...希望能得到每个客户的等待时间和每个时刻的队伍长度,恳请大家帮忙·

[此贴子已经被作者于2009-3-5 13:03:40编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-1-24 17:13:49
这是一个排队论,你看下能不能帮到你——

n<-300    ###假设病人到达总数
###病人需要排三次队
a<-matrix(0,n,3)   ###病人到达时间
g<-matrix(0,n,3)   ###病人到达时间间隔
ar<-matrix(0,n,3)     ###开始服务时间
s<-matrix(0,n,3)      ###服务时间
f<-matrix(0,n,3)      ###服务结束时间
w<-matrix(0,n,3)      ###等待时间
###病人到药房划价
g[,1]<-rpois(n,0.4)     ###病人到达时间间隔服从泊松分布
s[,1]<-rexp(n,10)     ###对病人服务时间服从指数分布
a[1,1]=0;ar[1,1]=0;f[1,1]<-ar[1,1]+s[1,1];w[1,1]=0
for(i in 2:n){
a[i,1]<-a[i-1]+g[i-1,1]
ar[i,1]<-max(a[i,1],f[i-1,1])
f[i,1]<-ar[i,1]+s[i,1]
w[i,1]<-ar[i,1]-a[i,1]}
g[n,1]<-0
###病人到会计处交钱
s[,2]<-rexp(n,10)     ###对病人服务时间服从指数分布
a[1,2]<-f[1,1];ar[1,2]<-a[1,2];f[1,2]<-ar[1,2]+s[1,2];w[1,2]<-0
for(i in 2:n){
a[i,2]<-f[i,1]
ar[i,2]<-max(a[i,2],f[i-1,2])
f[i,2]<-ar[i,2]+s[i,2]
w[i,2]<-ar[i,2]-a[i,2]
g[i,2]<-a[i,2]-a[i-1,2]}
g[n,2]<-0

###病人到药房拿药
s[,3]<-rexp(n,8)      ###对病人服务时间服从指数分布
a[1,3]<-f[1,2];ar[1,3]<-a[1,3];f[1,3]<-ar[1,3]+s[1,3];w[1,3]<-0
for(i in 2:n){
a[i,3]<-f[i,2]
ar[i,3]<-max(a[i,3],f[i-1,3])
f[i,3]<-ar[i,3]+s[i,3]
w[i,3]<-ar[i,3]-a[i,3]
g[i,3]<-a[i,3]-a[i-1,3]}
g[n,3]<-0

###计算性能指标
dd1<-1/mean(g[,1])     ###划价平均到达率
se1<-1/mean(s[,1])   ###划价平均服务率
dd2<-1/mean(g[,2])     ###会计处平均到达率
se2<-1/mean(s[,2])   ###会计处平均服务率
dd3<-1/mean(g[,3])     ###药房平均到达率
se3<-1/mean(s[,3])   ###药房平均服务率
ls<-dd1/(se1-dd1)+dd2/(se2-dd2)+dd3/(se3-dd3)  ###整个系统的平均队列长
lq<-dd1*dd1/(se1*(se1-dd1))+dd2*dd2/(se2*(se2-dd2))+dd3*dd3/(se3*(se3-dd3))  ###整个系统的平均队长
wq<-mean(w[,1]+w[,2]+w[,3])   ###平均等待时间
ws<-wq+mean(s[,1]+s[,2]+s[,3]) ###平均逗留时间
print(c(ls,lq,ws,wq))

###合并服务环节
y<-matrix(0,n,6)   ###到达时间,到达时间间隔,开始服务时间,服务时间,服务结束时间,等待时间
y[,2]<-rpois(n,0.4)
y[,4]<-rexp(n,10)+rexp(n,10)+rexp(n,8)
y[,1]<-cumsum(y[,2])
y[1,3]<-0;y[1,5]<-y[1,4];y[1,6]<-0
for(i in 2:n){
y[i,3]<-max(y[i,1],y[i-1,5])
y[i,5]<-y[i,3]+y[i,4]
y[i,6]<-y[i,3]-y[i,1]}
yd<-1/mean(y[,2])   ###平均到达率
ys<-1/mean(y[,4])   ###平均服务率
ls_y<-yd/(ys-yd)              ###整个系统的平均队列长
lq_y<-yd*yd/(ys-yd)/ys        ###平均队长
wq_y<-mean(y[,6])             ###平均等待时间
ws_y<-wq_y+1/ys               ###平均逗留时间
print(c(ls_y,lq_y,ws_y,wq_y))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群