数学建模——理发店问题的蒙特卡洛仿真.docVIP

数学建模——理发店问题的蒙特卡洛仿真.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数学建模——理发店问题的蒙特卡洛仿真

数学建模课程设计 题目:理发店问题 学生: 一、课程设计题目 一个理发店有两位服务员 A 和 B,顾客们随机到达店内,其中 60% 的顾客仅剪发,每位花 5 分钟时 间;40% 的顾客既剪发又洗发,每位花 8 分钟时间。设计算法,利用计算机对理发店的服务情况进行模拟。并统计以下量: 1. 最大队列长度 2. 顾客平均等待 3. 顾客总等待时间 4. 平均队列长度 二、设计思路 利用蒙特卡洛模拟原理,利用计算机对以上排队问题进行模拟。蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。 蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。 对于本题,我们假定顾客到达时间间隔服从均值为3min的指数分布,模拟一定数量顾客情况下理发店的排队状况。 三、设计代码 arrive_t=exprnd(3,10,1); %顾客到达时间 q=zeros(10,1); t=zeros(10,1); t0=zeros(10,1); rannum=unifrnd(0,1,10,1);%产生均匀分布随机数 customer=zeros(10,1);%设定顾客 wait_time1=0; wait_time2=0; flag=0;%确定是否有人等待 for i=1:10%分出第一种和第二种状况 if(rannum(i,1)=0.6) customer(i,1)=5;%只剪 else customer(i,1)=8;%剪和洗 end end tf=0; t(1,1)=tf+arrive_t(1,1);%到达时间 wait_time=0;%等待时间 t0(1,1)=t(1,1)+customer(1,1);%服务时间 q(1,1)=0;%队列长度 t(2,1)=t(1,1)+arrive_t(2,1); t0(2,1)=t(2,1)+customer(2,1); t(3,1)=t(2,1)+arrive_t(3,1); if (t(3,1)t0(2,1)||t(3,1)t0(2,1)) t0(3,1)=t(3,1)+customer(3,1); else wait_time1=t0(1,1)-t(3,1); wait_time2=t0(2,1)-t(3,1); if (wait_time1wait_time2) t0(3,1)=t(3,1)+wait_time2+customer(3,1); wait_time=wait_time2; else t0(3,1)=t(3,1)+wait_time1+customer(3,1); wait_time=wait_time1; end end i=4; while(i=10) t(i,1)=t(i-1,1)+arrive_t(i,1); q(i,1)=q(i-1,1)+1; wait_time1=t0(i-1,1)-t(i,1); wait_time2=t0(i-2,1)-t(i,1); if (flag==0) if (wait_time10)(wait_time20) if wait_time1wait_time2 flag=1; t0(i,1)=t(i,1)+wait_time2+customer(i,1); wait_time=wait_time+wait_time2; else flag=1; t0(i,1)=t(i,1)+wait_time1+customer(i,1); wait_time=wait_time+wait_time1; end i=i+1; el

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档