当前位置:文档之家› 运筹学实验报告

运筹学实验报告

成都理工大学管理科学学院教学实验报告(半期考试) 2014~2015学年第二学期一、实验过程与步骤:步骤1:新建Excel表,根据表二和表三分别绘制轿车到达间隔时间和洗车服务时间,如图1。

图1统计顾客到达速率步骤2:模拟从A21开始,模拟数据区域为A21:K1120 。

在A21:A1120列,依次编号为1到1100。

分别选中24-117、123-1118行,点击鼠标右键将其“隐藏”,便于之后运算,否则表太大不好操作。

共模拟1100辆轿车,假设从第101辆轿车开始系统进入稳态,则前面100辆轿车的数据不作为计算范围。

步骤3:在B21:B1120列每一格,分别表示1100辆轿车两两之间到达的间隔时间。

在单元格B21中输入公式:=Vlookup(rand(),A$7:C$13,6),完毕按回车键。

这个公式的意思是:由rand()产生一个[0,1]之间的随机数,将它与A$7:C$20区域第一列(即A7:A20)各单元格数据相比较,如果它大于或等于某单元格数据而小于同列下一行的数据,excel就会记录下某单元格所在的行数,然后返回同行第3列的数据。

步骤4:在F21:F1120列,比照(3)进行类似操作。

在单元格F21中输入公式:=Vlookup(rand(),E$7:G$14,4),按回车键。

输入完毕,将F21单元格数据拖至1120行。

这就得到了1100辆轿车每一辆服务时间的随机数据。

泊位数在B19输入,等于3。

以上两步的操作结果见图2所示。

图2每辆车服务时间随机数的生成步骤5:在C21单元格,输入:=0+B21,在C21单元格,输入:=C21+B22(注:从上一辆轿车到达的时刻开始计时,则第二辆轿车到达的时刻就是C21+B22小时末。

以后以此推类)。

将C21单元格拖动到C1120。

结果见图3所示。

图 3 1100辆轿车到点时刻的计算步骤6:在D21单元格,输入:=C21;在E21单元格,输入:= D21 -C21。

在G21单元格,输入:=D25+F25。

在H25单元格,输入:=G21-C21。

分别将E21、G21、H21的数据拖动至E1120、G1120、H1120。

结果见图4所示。

图 4 1100辆车等待时间、完成时刻、在车行逗留时间的计算步骤7:在I21单元格,输入:=IF(RAND()>1/$B$19,0,G21);在J21单元格,输入:=IF(SUM($I21:I21)<>0,0,IF(AND(RAND()>1/$B$19,COLUMN(J21)-8<$B$19),0,$G21)) 。

这表示在三个洗车位都空闲时,随机抽取洗车位,第一辆车到车行时,就属于这种情形。

这里的“开始空闲时刻”是指该车服务完毕后的空闲时刻,而不是该车到达之前三个洗车位都空闲的状况。

因为1/$B$19=1/2,RAND()>1/2的概率即该洗车位被弃用概率为50%,所以I21中公式的含义是:以50%的概率选择洗车位1进行服务。

一旦选择了洗车位1,则第一辆车的完工时刻就是它的空闲时刻(也即该洗车位可为下一辆车进行洗车的时刻,这就必然不为0),否则它就一直从0时刻开始一直空闲着(这就必然为0);J21单元格中公式的含义是:如果J21对应的编号小于该洗车位的洗车位已经有一个被占用,则必有SUM($I21:I21)<>0,此时该单元格对应的洗车位就不能被用来服务,因为一辆车洗车只能且必须占用一个洗车位,这样未占用的该洗车位的空闲时刻将一直为0;否则SUM($I21:I21)=0,表示该小于该洗车位编号的洗车位都未被选中,那么如果该洗车位是最后一个洗车位(即COLUMN(J21)-8=$B$19),或者该洗车位不是最后一个洗车位(即COLUMN(J21)-8<$B$19)但被概率选中(即RAND()<1/$B$19 ),那么该洗车位就一定会被该车选中用于洗车服务,它的空闲时刻将是该车完成服务时刻G21,否则该洗车位未选中则其开始空闲时刻仍为0。

本题输入的公式不限于3个洗车位,可将J21在该行继续往后拖。

在excel表中选择crtl+`(注:数字1键左边和tab键之上),可在公式和数值之间来回切换。

公式输入结果见图5所示。

图 5 第一辆车对应的洗车位1、洗车位2、洗车位3空闲时刻计算步骤8:在D22单元格,输入:=IF(C22<=MIN(I21:J21),MIN(I21:J21),C22),并将其拖动到D1120单元格。

C22<=MIN(I21:J21)表示:如果第二辆车舶到港的时刻不迟于车位1、车位2的新近空闲时刻,那么该车就必须等到所有车位其中一个完成服务的时刻(即MIN(I21:J21))才能开始进行洗车;否则,C22>MIN(I21:J21)表示第二辆车来时,第一辆车已经服务完毕因而至少有一个车位处于空闲,那么此时第二辆车的到达时刻就是它开始洗车的时刻(即等于C22)。

操作结果如图6所示:图 6 第2-1100辆车开始洗车时刻的计算步骤9:在I22单元格,输入:=IF(I17=MIN(I17:J17),IF(RAND()<=1/COUNTIF(I17:J17,MIN(I17:J17)),G22,I17),I17)。

解释:如果第二辆车到达时,无论车位全都被占用或是有多个空闲,将锁定最先服务完的那个车位进行服务(即MIN(I17:J17))如果最先服务完即空闲时刻相等的洗车位不止一个而有COUNTIF(I17:J17,MIN(I17:J17))个,那么洗车位1被选中来为该车服务的概率为1/COUNTIF(I17:J17,MIN(I17:J17)),该概率可用表达式RAND()<1/ 1/COUNTIF(I17:J17,MIN(I17:J17))成立的概率来表示。

如果洗车位1 被第2辆车选中,则它的空闲时刻就是该车完成服务时刻G26;如果洗车位1没有被选中,则洗车位1的空闲时刻仍与I17相同。

计算结果见图7:图7某车服务完毕后洗车位1被占用情况、开始空闲时刻的计算步骤10:在J22单元格,输入:=IF(SUMXMY2($I17:I17,$I22:I22)<>0,J17,IF(OR(AND(RAND()<1/COUNTIF($I17:$J17,MIN($I17:$J17)),J17=MIN($I17:$J17)),COUNTIF($I17: J17,MIN($I17:$J17))=COUNTIF($I17:$J17,MIN($I17:$J17))),$G22,J17))。

解释:如果第二辆车到达时,无论洗车位全都被占用或是有多个空闲,只要编号小于洗车位2的洗车位有一个被该车占用来服务(即SUMXMY2($I17:I17,$I22:I22)<>0),则洗车位2一定会从J17时刻开始就空闲着而不被第二辆车占用(因为它不可能同时占用洗车位1和洗车位2的吧?);否则,编号小于洗车位2的洗车位都没有被该车占用来服务(即SUMXMY2($I17:I17,$I22:I22)=0,SUMXMY2( )函数求$I17:I17和$I22:I22两个向量对应元素之差的平方和)。

操作结果如图8:图8某车服务完毕后洗车位2被占用情况、开始空闲时刻的计算步骤11:在K22单元格中,输入:=IF(SUMXMY3($I17:I17,$I22:I22)<>0,K17,IF(OR(AND(RAND()<1/COUNTIF($I17:$K17,MIN($I17:$K17)),K17=MIN($I17:$K17)),COUNTIF($I 17:K17,MIN($I17:$K17))=COUNTIF($I17:$K17,MIN($I17:$K17))),$G22,K17))。

比如:第二辆车到达时洗车位1已占则它必然不会再选洗车位1,因而必有I17=I22从而SUMXMY2(I17,I22 )=0),那么编号非最后的洗车位3(假如洗车位多于2个)可能以概1/COUNTIF($I17:$K17,MIN($I17:$K17))被占用,表达式RAND()<1/COUNTIF($I17:$K17,MIN($I17:$K17))可表示该概率COUNTIF($I17:$K17,MIN($I17:$K17)统计在区域I17:K17的单元格中,其最小值MIN($I17:$K17)出现的次数,即有多个洗车位同时都是最快完成服务时,该车须按照上述概率随机选择一个洗车位来服务。

另一种情况,如果洗车位3就是最后一个最快完成服务的洗车位(即COUNTIF($I17:K17,MIN($I17:$K17))=COUNTIF($I17:$K17,MIN($I17:$K17)),图10中简称①式,本题即是)且之前的洗车位没有用来为该车服务(SUMXMY2($I17:I17,$I22:I22)=0),那么洗车位3无论如何(无论RAND()和1/COUNTIF($I17:$K17,MIN($I17:$K17))孰大孰小)都必须用来为该车服务。

因此,表达式OR(AND(RAND()<1/COUNTIF($I17:$K17,MIN($I17:$K17)),K17=MIN($I17:$K17)),COUNTIF($I17: K17,MIN($I17:$K17))=COUNTIF($I17:$K17,MIN($I17:$K17)))表达的就是这些情况,此时洗车位3必然被占用,所以洗车位3的开始空闲时刻就是该车完成服务的时刻$G22。

当然如果编号小于该洗车位的洗车位都未被该车占用的条件下,洗车位3非最后一个(即COUNTIF($I17:K17,MIN($I17:$K17))<COUNTIF($I17:$K17,MIN($I17:$K17)),假如是三个或更多的洗车位时),而且洗车位3对应的随机数rand()如果超过1/COUNTIF($I17:$K17,MIN($I17: $K17)) ,则洗车位3就没有被选中用于为该车服务,则洗车位3的开始空闲时刻仍维持着K17单元格对应的时刻。

将单元格K22拖动到K1124,表明今后洗车行1的空闲时刻计算原理都类似于此。

本题输入的公式不限于3个洗车位,如果有多个就可以将单元格K17在该行继续往后拖至后续洗车位,操作结果如图9:图9 某车服务完毕后洗车位3被占用情况、开始空闲时刻的计算步骤12:在B1126:E1134区域填写仿真模拟结论。

假设前100辆车的服务过程不是洗车位洗车服务系统的稳态时间,因此求各项模拟指标的稳态值须将其去掉。

在E1127中输入公式:=COUNTIF(E117:E1124,“>0”),即只要统计第101~1100辆车的等待时间即可:某车等待时间只要大于0,就计数1次,其中有2辆车等待时间超过2小时,计算公式见分图(b)E1133单元格。

相关主题