1、分别有1、2、3、4、5共计5个开关点,暂且定义为I0.0--I0.4,分别对应输出点Q0.0--Q0.4。
2、当这5个开关点无顺序依次接通时,相对应的输出点按照先来后到,排队的形式进行输出,同时输出不超过两个。
3、等这两个输出保持30秒以后断开,重新再检测这5个开关点的闭合状态,再按照排队的形式输出先接通开关点对应的输出点。
#include<stdio.h>#include<malloc.h>
#define N 10
int main(void)
{
int i,j,x,m,flag=1
char ch
m=N
char (*p)[10]=(char (*)[10])calloc(N,10*sizeof(char))
for(i=0i<10i++)
for(j=0j<10j++)
p[i][j]='\0'
printf("输入ID时不超过10位,第一位不能为'*'\n")
i=0
while(1)
{
while(i<m)
{
printf("请输入第%d名的ID:",i+1)
ch=getchar()
for(j=0j<10j++)
{
if(j==0&&ch=='*')
{
flag=0
break
}
if(ch=='\n')
break
p[i][j]=ch
ch=getchar()
}
if(flag==0)
break
i=i+1
}
if(flag==0)
break
m=m+N
p=(char (*)[10])realloc(p,m*10*sizeof(char))
for(x=ix<mx++)
for(j=0j<10j++)
p[x][j]='\0'
}
for(j=0j<ij++)
{
printf("第%d名:",j+1)
printf("%s\n",p[j])
}
free(p)
return 0
}
1.问题分析:本实验采用蒙特卡洛(Monte Carlo)模拟方法,蒙特卡洛是一种应用随机数来进行计算机模拟的方法.此方法对研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数.在MATLAB中发生指数分布的随机数命令为exprnd(),产生均匀分布随机数命令为unifrnd()。符号说明:
:第i个顾客到来的时刻
:第i个顾个接受服务后离开的时间
:第i个顾客和第i-1个顾客到来的间隔时间
:第i个顾客需要服务的时间
:第i个顾客的等待时间
考察第i个顾客和第i-1个顾客排队并将接受服务的情形,有以下两种情况:
(1)图这里只能省略)
(2)作出程序流程图
顾客到来的时间间隔和所需服务时间可分别由MATLAB随机数发生器exprnd()和unifrnd()产生,根据第一步的分析,通过迭代即可模拟每个工作日的该服务员接待顾客和顾客排队的情形,时间以分钟为单位,程序流程图为:
模拟100个工作日(for i=1:100)
构造单个工作日的排队系列while (sTj<=480)
通过指数分布随机数发生器
构造顾客间隔时间序列(TjM)
通过均匀分布随机数发生器构造顾客所需服务时间序列(TfM)
模拟该工作日内服务员接待顾客(for i=1:n-1)
计算第i个顾客离开时的时刻t
计算第i+1个顾客的等待时间s
如果s<0则令s=0
如果时刻t>480,记录i值,跳出循环
记录第i+1个顾客等待时间s值,和第i个顾客离开时刻t
记算该工作日顾客平均等待时间sMean值
记录每个工作日顾客平均等待时间序列sMeanM,和服务员接待顾客数目序列sIM
记算平均每日完成服务的个数和每日顾客的平均等待时间
(3)编写MATLAB程序
clear,clc
sMeanM=[]sIM=[]
for i=1:100
TjM=[]TfM=[]sTj=0
while (sTj<=480)
Tjp=exprnd(10)
Tfp=unifrnd(4,15)
TjM=[TjMTjp]
TfM=[TfMTfp]
sTj=sTj+Tjp
end
n=length(TjM)
s=0sM=[]T=[]
for i=1:n-1
t=sum(TjM(1:i,1))+s+TfM(i)
s=(t-sum(TjM(1:(i+1),1)))*((t-sum(TjM(1:(i+1),1)))>0)
if t>480
sI=ibreak
else
T=[Tt]
sM=[sMs]
end
end
sMean=mean([0sM])
sMeanM=[sMeanMsMean]
sIM=[sIMsI]
end
MrecH=mean(sIM)
MwaiH=mean(sMeanM)
(4)结果分析
将以上程序运行十次,100个工作日平均每日完成服务的个数(MrecH)及每日顾客的平均等待时间(MwaiH)(分钟)如下表
次数
1
2
3
4
5
6
7
8
9
10
MrecH
43.54
44.36
43.79
44.28
44.38
44.09
43.62
44.68
44.45
43.95
MwaiH
25.286
24.514
25.349
26.857
23.487
24.589
23.428
23.620
25.618
27.318
100个工作日的模拟情况告诉我们,该服务员平均每天需要接待顾客44人左右,顾客平均需要等待25分钟左右。
应该是这样!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)