资源描述
1第二讲 仿真实例手算仿真与Excel仿真2主要内容本讲讲介绍一些可以通过仿真表格执行仿真的贴近生产生活实际的仿真实例。在不借助计算机的情况下,手工绘制仿真表格,并逐步计算,可对一些简单的系统问题进行“粗糙的”仿真。学习手算仿真,有助于了解和理解计算机仿真的方法和原理。借助电子表格工具Excel制作仿真表格,并执行仿真运算,可大大提高仿真效率和精度。使用Excel设计仿真表格是本讲的难点和重点。31、了解手算仿真为什么要用手算仿真?手算仿真是求解简单系统问题的“原始”方法。虽然手算仿真效率及精度远不及计算机仿真,但它计算机仿真的基础,也是系统研究者的必备技能。41、了解手算仿真手算仿真的核心:仿真表格 仿真表格是一种指引、规范、记录手算仿真过程的辅助工具。一般来说,不同的仿真问题对应不同的仿真表格。表1是一个仿真表格示例。序序号号输入输入响应响应123n表1 仿真表格一般形式52、了解Excel仿真 一般来说,凡是能够手算仿真的问题,都可使用微软的电子表格工具加以解决。Excel具有复杂数据运算、统计分析和图表输出等功能。用Excel代替手算仿真,可方便、高效、精确地解决简单仿真问题。学习Excel仿真,应掌握Excel一些高阶操作和必要VBA编程基础知识。63、排队系统的仿真 一个排队系统由拟到达总体、到达种类、服务机制、系统容量和排队规则来描述。图1描述了一个简单的单通道排队系统。顾客排队队列服务台图1 排队系统【到达总体】总体无穷大。【到达种类】到达时间间隔服从某一概率分布的随机数。【服务机制】服务时间是服从某一概率分布的随机数;总有效达到速率小于总服务速率,即不会出现队列无限增长的情况。【排队规则】先到先服务。73、排队系统仿真单通道排队系统中的系统状态与事件【系统状态】指系统中的顾客数量和服务台的忙闲状态。【事件】顾客进入系统(到达事件)、对顾客服务完毕(离开事件)。83、排队系统仿真服务结束时系统状态变化过程离开事件服务台空闲时间开始从队列中清除一个等待顾客开始服务顾客有另外一个顾客在等待吗?是否图2 服务刚刚结束的流程图93、排队系统仿真顾客进入系统时的系统状态变化过程到达事件顾客进入服务顾客进入等待服务队列服务台忙吗?是否图3 顾客进入系统的流程图103、排队系统仿真顾客顾客服务时间服务时间122133425164表2 到达时间间隔和时钟时刻 顾客顾客到达时到达时间间隔间间隔到达时到达时钟时刻钟时刻1-02223464175296615表3 服务时间113、排队系统仿真表4 利用仿真表格手算仿真顾客顾客到达时间到达时间服务开始服务开始时间时间服务持续服务持续时间时间服务结束服务结束时间时间100222221336639479211591111261515419123、排队系统仿真例1 单通道排队系统 一个拥有一个出纳台的小杂货铺。顾客相隔1-8分钟随机到达出纳台,每个到达时间间隔可能取值具有相同的发生概率,如表5所示。服务时间在1-6分钟间变化,其概率见表6。试通过仿真100个顾客到达和接受服务来分析该系统。133、排队系统仿真到达间隔时到达间隔时间(分钟)间(分钟)概率概率累积概率累积概率随机数字分配随机数字分配10.1250.125001-12520.1250.250126-25030.1250.375251-37540.1250.500376-50050.1250.625501-62560.1250.750626-75070.1250.875751-87580.1251876-000表5 到达间隔时间分布143、排队系统仿真服务时间(分钟)服务时间(分钟)概率概率累积概率累积概率随机数字分配随机数字分配10.100.1001-1020.200.3011-3030.300.6031-6040.250.8561-8550.100.9586-9560.05195-00表6 服务时间分布153、排队系统仿真【随机数字】用于模拟现实生活的不确定性。随机数字是在 集合0,1,2,9上均匀分布。例如:94737 08225 35614 24826 88319 05595 58701 57365 74759 87259 85982 13296 89326 74863 99986 68558 06391 50248 63856 14016 18527 11634 96908 52146 16顾客顾客随机随机数字数字到达时到达时间间隔间间隔顾客顾客随机随机数字数字到达时到达时间间隔间间隔1-11413420641124264311211384374678614738652893153593687171688887583517902881392182122942341003911005385表7 到达时间间隔的确定18顾客顾客随机随机数字数字服务服务时间时间顾客顾客随机随机数字数字服务服务时间时间184411945218212323387513794481414925506115463691516212779417734809118553964410383100262表8 服务时间的生成19顾客顾客到达间到达间隔时间隔时间到达到达时间时间服务服务时间时间服务开服务开始时间始时间排队排队时间时间服务结服务结束时间束时间顾客花顾客花费时间费时间空闲空闲时间时间1-040044021124365031256411904684113157053111154165067185180235275234230274010054152416141830合计合计415317174491101表9 单通道排队系统的仿真表格20排队系统仿真根据表9的仿真可得到如下一些结果:(1)顾客的平均等待时间是1.74分钟。(2)顾客必须在队列等待的概率是0.46。21排队系统仿真根据表9的仿真可得到如下一些结果:(3)服务台空闲的概率是0.24。(4)平均服务时间3.17分钟。22排队系统仿真根据表根据表9的仿真可得到如下一些结果:的仿真可得到如下一些结果:(5)有等待的顾客平均等待时间)有等待的顾客平均等待时间3.78分钟。分钟。(6)顾客在系统中花费的平均时间是)顾客在系统中花费的平均时间是4.91分钟。分钟。23排队系统仿真仿真结论仿真结论 大约半数的顾客必须等待,但平均等待时间并大约半数的顾客必须等待,但平均等待时间并不太长。服务台没有不适当的空闲时间。不太长。服务台没有不适当的空闲时间。243、排队系统仿真使用使用Excel电子表格的必要性。电子表格的必要性。手算进行的仿真次数有限,准确度较低。一手算进行的仿真次数有限,准确度较低。一般来说,此类问题须仿真上万次,才能获得可靠般来说,此类问题须仿真上万次,才能获得可靠的准确度。本例中仿真的准确度。本例中仿真100100个顾客,手算大约花个顾客,手算大约花费费2 2个小时左右。个小时左右。手算容易出错。手算容易出错。上述工作适合计算机来完成。上述工作适合计算机来完成。253、排队系统仿真Excel仿真步骤仿真步骤 第一步:新建一第一步:新建一Excel工作簿。在工作表工作簿。在工作表sheet1中输入中输入等待时间间隔概率分布、服务时间概率分布等信息。见等待时间间隔概率分布、服务时间概率分布等信息。见图图4。图图4263、排队系统仿真Excel仿真步骤仿真步骤 第二步:设计仿真表格。见图第二步:设计仿真表格。见图5图图5273、排队系统仿真Excel仿真步骤仿真步骤 第三步:用第三步:用VBA编写随机数产生函数。编写随机数产生函数。DiscreteUniform(1,8)/产生产生18之间的随机数(到达之间的随机数(到达时间间隔)。时间间隔)。Discrete(数组数组1,数组数组2)/产生服务时间随机数。产生服务时间随机数。数组数组1:累积概率:累积概率,数组数组2:服务时间:服务时间283、排队系统仿真Excel仿真步骤仿真步骤 按按ALT+F11,打开,打开VBA设计器,插入模块,将两个函数设计器,插入模块,将两个函数的代码复制到模块的代码区中。的代码复制到模块的代码区中。Function DiscreteUniform(low As Long,high As Long)As Long Application.Volatile(True)DiscreteUniform=low+Int(high-low+1)*Rnd()End Function293、排队系统仿真Excel仿真步骤仿真步骤 Function Discrete(Prob As Range,Fuwu As Range)Dim Row As Long Dim U As Double U=Rnd()Application.Volatile(True)For Row=1 To Prob.Rows.Count If U=Prob.Cells(Row,1).Value Then Discrete=Fuwu.Cells(Row,1).Value Exit Function End If Next row Discrete=0End Function303、排队系统仿真Excel仿真步骤仿真步骤 第四步:编辑仿真表格中各单元格的计算公式。第四步:编辑仿真表格中各单元格的计算公式。(1)到达时间间隔:)到达时间间隔:(2)服务时间:)服务时间:(3)到达时间:上一顾客到达时刻到达时间:上一顾客到达时刻+到达时间间隔到达时间间隔 (4)服务开始时间:上一顾客服务结束时间和当前顾客到达间中服务开始时间:上一顾客服务结束时间和当前顾客到达间中的最大值。的最大值。Max(a,b)。(5)排队时间:服务开始时间)排队时间:服务开始时间-到达时间到达时间 (6)服务结束时间:服务开始时间)服务结束时间:服务开始时间+服务时间服务时间 (7)服务台空闲时间:服务开始时间服务台空闲时间:服务开始时间-上一服务结束时间。上一服务结束时间。313、排队系统仿真323、排队系统仿真Excel仿真步骤仿真步骤 第五步:数据分析。对排队时间、服务台空闲时间等求第五步:数据分析。对排队时间、服务台空闲时间等求和。和。第六步:执行多次仿真。以上设计的仿真表格,只能做第六步:执行多次仿真。以上设计的仿真表格,只能做一次仿真。每当保存时,数据刷新一次。要实现多次仿一次仿真。每当保存时,数据刷新一次。要实现多次仿真,须在工作表真,须在工作表sheet1中添加一按钮,双击编写响应的中添加一按钮,双击编写响应的代码。代码。333、排队系统仿真Private Sub CommandButton1_Click()Sheet1.CalculateDim i As IntegerFor i=1 To 50Sheet1.CalculateSheet2.Range(A&i).Value=iSheet2.Range(B&i).Value=Sheet1.Range(F112).ValueNext iSheet2.CalculateEnd Sub34排队系统仿真
展开阅读全文