运筹学实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成都理工大学管理科学学院教学实验报告(半期考试) 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: