- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二一个修理厂的模拟
第二周 一个修理厂的模拟
一、实验项目名称
一个修理厂的模拟
二、实验仪器设备及软件
装有Matlab的PC机
三、实验案例与分析
某修理厂设有3个停车位置,其中一个位置供正在修理的汽车停放。现以一天为一个时段,每天最多修好一辆车,每天到达修理站的汽车数有如下概率分布:
到达数 0 1 2 概率 0.6 0.2 0.2 假定在一个时段内一辆汽车能够修好的概率为0.7,本时段内未能完成修理的汽车于正在等待修理的汽车一起进入下一时段。
试问:该停车厂有无必要增加停车位置,并说明理由。
四、模型建立与求解
这种排队论方面的问题采用固定时间增量法模拟。模拟以一天为一个时段,模拟总时间最好在1000天以上。
模拟汽车到达数量,根据概率分布:产生在[0,1]上均匀分布的随机数t,如果,则认为当天到达的车辆数为0辆;如果,则认为当天到达的车辆数为1辆,如果,则认为当天到达的车辆数为2辆。
模拟修理情况:由于一天最多修好一辆,而一个时段内一辆汽车修好的概率为0.7,则模拟每辆车的修理情况,如果这些车所能修好数目大于等于1辆,则以当天修好1辆计。
五、程序及运行结果
1、模拟程序
本模拟程序编写了一个主函数queue,另外在函数queue中编写了2个子函数:
getcome:模拟车辆到来情况,返回当天到来的车辆数目
getrepaired:模拟修理情况,返回修好的车辆数目
整个模拟程序如下:
function queue
%排队模拟主程序
%排队问题模拟
numdays=input(请输入模拟天数:)
numstay=0;%假定最初修理站还没有待修理的汽车
LEN=6;%定义常量
matfrequence=zeros(1,LEN);%第i个元素表示当天末还有i-1辆车在没有修好的时段频数
leave_norepair=0;%存储,来到,但没有停车位置而离开的车辆数
for days=1:numdays%主循环,模拟numdays个时段
temp= getcome;
if numstay + temp3 ,
leave_norepair = leave_norepair + (numstay + temp - 3);
end
%numcome=numstay+getcome;%这里有问题,受限制与停车位置数量
numcome=min(3,numstay + temp);%
%头一天还没有修好的车辆数+当天新到来的车辆数
%numstay表示当天末还没有修理好的车辆数目
numstay=max(0,numcome - getrepaired(numcome));%
matfrequence(numstay+1)=matfrequence(numstay+1) + 1 ;
end
matfrequence
prob=matfrequence/numdays
disp(sprintf(平均每天夜里停放在修理站的车辆数=%4.2f,...
sum(matfrequence/numdays.*[0:LEN-1])))
%sprintf(=%.4f,sum(matfrequence/numdays.*[0:LEN-1]))
disp(sprintf(平均每天因位置而未修理而离开修理站的车辆数=%4.2f,...
leave_norepair/numdays))
%sprintf(=%.4f,leave_norepair/numdays)
leave_norepair
function num=getcome
%模拟车辆到来情况,返回当天到来的车辆数目
t=rand;
if t=0 t0.6
num= 0;%当天到来车俩数为0辆
elseif t=0.6 t0.8
num=1;%当天到来车俩数为1辆
else
num=2;%当天到来车俩数为2辆
end
function r=getrepaired(num_cur)
%模拟修理情况,返回修好的车辆数目
%n为需要修理的车辆数目
%r为n辆车修好了r辆
%num_cur 当前(天)车辆数
r=0;
if num_cur=0,%如果根本没有车,当然就没有修好车
return
end
%只考虑当前正在修的这辆车是否能够修好
if rand0.7,%(0,0.7) 认为修好,[0.7,1)认为没有修好
r=1;
end
2、模拟结果
程序运行结果如下:
请输入模拟天数: (100): 10000
numdays =
10000
matfrequence =
4230 2729 2375 666
文档评论(0)