这是一个排队论,你看下能不能帮到你——
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))