计算机模拟仿真——中文系统仿真课件.pptx
2022-4-20Management System Simulation1基于ARENA的模拟(3)卫强清华大学经济管理学院管理科学与工程系Management System Simulation22022-4-20内容简介n主要模块说明nARENA示例n示例4:电子设备组装/检测系统n示例5:A Production-Inventory Simulation ExampleManagement System Simulation32022-4-20主要模块说明Management System Simulation42022-4-20ARENA 7.0的功能n应用ARENA进行模拟的基本操作:创建基本模型:创建基本模型:Arena提供了一个所见即所得的流程图形式的环境来进行建模。 只需将相应的模块拖拉至模型窗口并按照逻辑连接起来就可以构造出处理流程。细化模型:细化模型:可以通过双击相应模块并进行参数调整就可以将实际问题的数据(如,处理时间,资源要求,服务人员水平,等)添加到模型中。也可以根据需要来定制动画图标以更好地显示问题的流程。对模型进行模拟:对模型进行模拟:通过对构造好的模型进行运行就可以得到模拟结果。ARENA提供了一个动态的可视化图形环境使得对模型的分析更加直观和简单。分析模拟结果:分析模拟结果:Arena提供了自动报告功能,直接就能根据常规决策条件,例如资源使用率,等候时间,等,来提交分析报告。 也可以通过定制特定的统计量。选择最佳方案:选择最佳方案:由于整个模拟过程都封装在软件中,所以重点就可以放在建模和分析上。这样就可以通过多次建模和修改参数来选择最佳解决方案。Management System Simulation52022-4-20ARENA 工作环境说明n菜单/模型窗口/工具栏/PanelnBasic Process Panel/模型窗口nModule(模块)流程图模块(Flowchart Module):放置在模型窗口中数据模块(Data Module) :不放在模型窗口中,而是通过表格来进行表示和编辑Management System Simulation62022-4-20流程图模块nCreate Create 模块模块该模块是用于模拟模型中产生实体(Entity)。通过调度或者基于某个达到时间间隔可以产生一个个实体。产生实体后,实体就离开Create模块进入系统。因此实体类型是在此模块中进行定义。nProcess Process 模块模块 该模块是用于模拟中的主要处理过程。在此模块中可以进行对资源(Resource)的获取(Seize)和释放(Release)。此外,还可以使用“submodel”选项来指定是否配置子模型。若处理时间要分配给实体,则可以选定为value added, non-value added, transfer, wait或 other。 nDisposeDispose模块模块 该模块用于标识模拟模型中的实体运动结束的终点。对于实体的统计必须在该实体被dispose之前进行统计。Management System Simulation72022-4-20流程图模块(Continued)nDecide模块模块该模块允许在系统中进行决策选择处理。它根据一个或多个条件进行判断决策 (如,若实体为Gold Card)或者基于一个或多个概率 (如, 75% 是; 25%否)进行判断。所设条件可以是基于属性值 (如, 优先级),变量值(如, Number Denied),实体类型,或表达式 (e.g., NQ (ProcessA.Queue)。nRecord模块模块 该模块用来收集模拟模型中的统计值。不同类型的观测统计值都可以在此设定,包括从此模块退出的时间,实体统计值 (time, costing, etc.),一般观测值,间隔统计值 (从一个时间点到当前模拟时间点)。计数类型的统计值也有效。nAssign模块模块 该模块用于为变量,实体属性,实体类型,实体图片或者其它系统变量进行赋值。在一个Assign模块中可以进行多个赋值。Management System Simulation82022-4-20流程图模块(Continued)nBatchBatch模块模块该模块是在模拟模型中作为分组机制来应用的。实体的Batches可以是永久性也可以是暂时进行分组。临时batches必须随后使用 Separate模块进行分割。 nSeparateSeparate模块模块 该模块用于将一个导入实体复制到多个实体中或者可以将已经分组的实体进行分割。Management System Simulation92022-4-20数据模块nEntity Entity 模块模块该数据模块用来定义不同的实体类型以及初始的图片。同样,初始成本信息和持有成本(holding costs)也可以在此定义。nQueue Queue 模块模块 该数据模块可以用来改变特定队列的排序规则。缺省的排序规则是FIFO。如要不同排序规则,请在此模块中设定。在此还有一个额外的字段用于指定该队列是否可以为其它实体分享。nResource Resource 模块模块该数据模块定义了模拟系统中的资源,包括成本信息和资源可用性。资源可以具有一个固定的容量,在整个模拟过程中不发生变化,也可根据安排改变。Resource failures和states用来说明该模块中的Advanced Process and Advanced Transfer Panel。Management System Simulation102022-4-20数据模块nSchedule Schedule 模块模块数据模块可用于与Resource module进行连接以定义资源容量变化的安排,或者可与Create module 连接以定义到达安排。nSet Set 模块模块 该模块定义了不同类型的集合,包括资源,计数器,累加器,实体类型和实体图片。资源集合可以用于 Process (and Seize, Release, Enter and Leave of the Advanced Process and Advanced Transfer panels)模块。计数器和累加器集合可以用于 Record模块。队列集合可以用于Seize, Hold, Access, Request, Leave以及Allocate modules of the Advanced Process and Advanced Transfer panels。nVariable Variable 模块模块该数据模块可用于定义变量和初始值。变量可以在其它模块中调用 (如, Decide module),可以通过Assign module来赋值,也可以用于其它任何表达式。Management System Simulation112022-4-20ARENA中的关键概念nEntities and AttributesnQueues nAttributes Resources nStatistics nSets nStations and Activity Areas nStorages nSequences nConveyors nTransporters Management System Simulation122022-4-20Entities and Attributesn在每个模拟模型中,entities代表在系统中移动的对象。每个实体都具有自己的特征,以attributes表示。可以根据需要定义足够多的属性。每个独立的实体都具有自己的属性值;这些值可以在处理过程中赋予。n例如,对于某个实体,可以定义“Length”作为实体大小,定义“Priority”来定义实体在某些行动中的重要性。当该实体进行某些处理时,可以根据Priority来进行处理。Management System Simulation132022-4-20QueuesnQueue的基本目的是为还无法分配到资源的实体提供排队的空间。Queues是被动的,只有在实体进入队列和相关资源可以进行分配时,Queue才会发生变化。nARENA提供两种类型的队列:Individual queues具有一个symbolic name,一个ranking rule以及一个指定的capacity。队列中的实体可以在动画中显示出来;可以对之进行统计;可以根据灵活的排序机制进行排序;Internal queues提供了基本的FIFO的功能,但是没有动画效果,也没有统计和排序机制。Management System Simulation142022-4-20ResourcesnResources是系统中静止的元素,并可以分配给实体。它具有给定的capacity (在某个时点) 以及states 集合(如: busy, idle, inactive或failed),这些在模拟运行过程中进行转换。 Resources可以表示服务人员,机器或者仅仅是存储空间。n与Resources相关的术语包括:当实体需要一个资源时,它seize该资源;当一个实体不在需要一个资源时,该实体release该资源,使得该资源可以被其它实体获取。当该实体需要使用该资源时,则它Delay该资源一定的时间(满足一定分布)。一个资源具有一个相关的队列,用来存放那些无法获取资源的实体。Management System Simulation152022-4-20StatisticsnArena可以是用户来指定是否需要对特定对象(如,队列,资源,等)的模拟统计值进行统计。这些统计值可以在模拟运行过程中得到记录并在最终报告中显示。nARENA进行的统计值收集分为以下5类: Time-persistent 记录了和时间相关的统计值 (如, 队长和资源使用率); Tallies 记录了观测数据 (如,系统中花费的时间实体等); Counters 计数了某个事件的观测发生次数 (如,离开系统的对象个数); Frequencies 收集了系统变量的基于其不同状态类别的统计值(如,资源在每个可能状态下的时间消耗比率); outputs 给出了某个系统最终值或最终统计值 (如,模拟运行最后的库存水平)。Management System Simulation162022-4-20Statistics - ReportsnCategory Overview nCategory by Replication nActivity Areas nEntitiesnProcesses nQueues nResourcesnTransfersnUser SpecifiednFrequencies Management System Simulation172022-4-20其它概念nSets nStations and Activity Areas nStorages nSequences nConveyors nTransporters Management System Simulation182022-4-20ARENA示例Management System Simulation192022-4-20示例 1n一个M/M/1的服务系统,到达间隔时间满足均值为8分钟的指数分布,服务台的服务时间满足均值为5.5分钟的指数分布。请模拟20分钟的系统运行。Replication 5次。Create 1Process 1Dispose 10 00 Management System Simulation202022-4-20示例 2 (排队问题)n顾客带着购买卷随机到达电器商店买电器。顾客到达的间隔时间服从均值为0.125小时的指数分布。有两个一模一样的收银台可以为顾客服务,处理时间服从均值为0.083小时的指数分布。去这两个收银台交钱的顾客排一个队。付款后,顾客就拿着盖章的收据来到提货窗口来提货。提货窗口的的处理时间满足均值为0.1429小时的指数分布。提货窗口只有一个服务台。请模拟60分钟的过程,重复20次模拟过程。给出每个事件发生时候的时间以及系统状态。计算所有已经完成的顾客的平均周转时间,以及每个服务台的利用率。Create 1CheckoutPickup WindowDispose 10 0 00 12:00:00Management System Simulation212022-4-20示例3 Movie Rental Shopn顾客进入音像店后,先判断要租借的电影类型。在拿定主意后,顾客就直趋所对应的电影区,并进一步进行选择。选定电影后,顾客就要接着考虑是否购买爆米花。如果购买爆米花,则就到爆米花柜台拿上一包。如果选择不购买爆米花,则就直接到出口交费。下例给出了一个演示。Video Rental ShopWaiting for CashierComedyOtherActionDramaPopcornNo PopcornGo HomePay for Item sSelect PopcornBuy Popcorn ?Tr ueFal seSelect ComedySelect ActionSelect Dram aAction or Dram a ?Tr ueFal seTr ueFal seComedy or Other ?Enter Video Shop0 0 00 0 0 0 00 00 00 Management System Simulation222022-4-20示例4电子设备组装/检测系统Management System Simulation232022-4-20电子设备组装/检测系统n流程:分别制造两个电子元件A,B;每个电子元件的制造都是通过基本原材料进行;生产完A,B后,进行Sealer步骤进行组装和检测,然后根据检测结果来判断是Rework还是Shipping;Rework过程包括Salvage且Shipping或者是Scrapped。Management System Simulation242022-4-20Run条件以及输出设置n开始启动为Empty&Idle,运行4天8小时/天n对于每个工作区,选择Resource UtilizationNumber in QueueTime in Queuen对于每个退出点(Shipped, Salvaged, Scrapped),统计系统中总停留时间(cycle time)。Management System Simulation252022-4-20模拟模型建立的基本信息nEntity包括两类;n因此有两个相互独立的Create模块;n对于不同的两类Entity,有独立的Process模块;nSealer和Rework都是Process模块,之后分别跟着一个Decide模块(2 way by chance);nDepart模块有三个,分别是Shipped,Salvaged和Scrapped;n通过Assign模块在Create模块后对Sealer Time属性进行赋值,因为我们要统计Sealer Time;n在Depart模块之间添加Record模块。Management System Simulation262022-4-20Part A Create模块nName: Part A ArrivenEntity Type: Part AnTime Between ArrivalsType: Random (Expo)Value: 5Units: Minutesn其余为缺省值Management System Simulation272022-4-20Part B Create模块nName: Part B ArrivenEntity Type: Part BnTime Between ArrivalsType: Random (Expo)Value: 30Units: MinutesnEntities per Arrivals: 4Management System Simulation282022-4-20Part A Attributes Assign模块nName: Assign Part A Sealer and Arrive timenAdd 按钮(由于使用同一个设备进行Seal,但是处理时间不同,因此只能在这里进行赋值):Type: AttributeAttribute Name: Sealer TimeNew Value: TRIA(1, 3, 4)nAdd 按钮Type: AttributeAttribute Name: Arrive TimeNew Value: TNOW(to compute time in system on exit)TNOW是Arena内部变量名,代表模拟时钟,参见Help Arena Help Contents Variables, Functions, and Distributions Date and Time VariablesManagement System Simulation292022-4-20Part B Attributes Assign模块nName: Assign Part B Sealer and Arrive TimenAdd按钮:Type: AttributeAttribute Name: Sealer TimeNew Value: WEIB(2.5, 5.3)nAdd按钮:Type: AttributeAttribute Name: Arrive TimeNew Value: TNOW Arena建模中的命名习惯 尽量用直观的名称 命名必须唯一Management System Simulation302022-4-20Prep Part A的Process模块nName: Prep A ProcessnAction: Seize Delay ReleasenResources 子对话框(Add按钮):Type: ResourceResource Name: Prep AQuantity: 1(缺省值)nDelay类型:TriangularnUnits: MinutesnMinimum: 1nValue (Most likely): 4nMaximum: 8如果在一个Process里设定了多个资源,则一旦Entity进入,则同时Seize所有这些资源。Management System Simulation312022-4-20Prep Part B的Process模块nName: Prep B ProcessnAction: Seize Delay ReleasenResources 子对话框(Add按钮):Type: ResourceResource Name: Prep BQuantity: 1(缺省值)nDelay类型:TriangularnUnits: MinutesnMinimum: 3nValue (Most likely): 5nMaximum: 10Management System Simulation322022-4-20Sealer Process模块nName: Sealer ProcessnAction: Seize Delay ReleasenResources子对话框(Add按钮):Type: ResourceResource Name: SealerQuantity: 1nDelay Type: ExpressionnUnits: MinutesnExpression: Sealer Time注意: Sealer Time属性前面已经定义了。现在只是调用。Management System Simulation332022-4-20Sealer Inspection-Result Decide模块nDecide模块用来进行分支By Condition(根据实体属性,全局变量)By Chance(根据概率分配)nName: Failed Sealer InspectionnType: 2-way by ChancenPercent True: 9n根据不同的概率来进行以下的流程,本例中True代表Failed,即没通过检测。Management System Simulation342022-4-20Rework Process 模块nName: Rework ProcessnAction: Seize Delay ReleasenResources子对话框Type: ResourceResource Name: ReworkQuantity: 1nDelay Type: ExpressionnUnits: MinutesnExpression: EXPO(45)此处必须先选定Expression,然后才能选定 (EXPO)。Management System Simulation352022-4-20Rework Inspection-Result Decide模块nName: Failed Rework InspectionnType: 2-way by ChancenPercent: 20本例中,将 “true”定义为返工后仍未通过检测。Management System Simulation362022-4-20Record模块nArena缺省就会统计相当多的统计信息,但很多时候并不一定是用户需要的。n本例中,我们需要的是零件的time in system (average, max),按照退出点(Shipped, Salvaged, Scrapped)分别进行统计。而系统自动生成的是实体类型来进行统计的结果。因此,我们需要自己来设置Record来收集统计值。nRecord模块可以放置在流程上,用来统计经过它的实体的各种统计量。Management System Simulation372022-4-20Shipped Parts Record模块nName: Record Shipped PartsnType: Time Interval该选项记录了一个实体的属性开始进行赋值时到当前所经过的时间。nAttribute Name: Arrive Time即前面所定义的Arrive Time属性。nTally Name: Record Shipped Parts最后在报告中的名称Management System Simulation382022-4-20Dispose模块n对于本例一共有三个退出点(Shipped, Salvaged和Scrapped)n可以将三个退出点都指向单个Dispose模块n也可以对于三个退出点分别设定三个Dispose模块来分别收集退出时三类不同的实体的统计结果(在Dispose模块设定时可选定复选框)。Management System Simulation392022-4-20在RunSetup中设置运行参数n在本例中,必须进行设定,因为模型本身并没有终止规则。nProject Parameters:添上项目名称,分析人员姓名其他的都按缺省设定,只是将Entities前的复选框取消复选,因为我们不需要额外的统计结果,只需要在Record设定的即可。这也会提高执行速度。nReplication Parameters:Replication Length: 32,Units:HoursBase Time Units:MinutesManagement System Simulation402022-4-20运行并查看结果n对于每个模块在运行时都会有一个计数器在显示与当前模块相关的实体个数:Create, Dispose, Decide随着实体离开不断增加Process当前在模块中的实体个数n运行结束时,系统提示是否查看报告n一般需要多次运行来看结果是否合适Management System Simulation412022-4-20Enhanced电子设备组装/检测系统n问题缘由,当将给模型提交生产经理,经理指出:现在的模型只反应了一天生产的第一个班次(8小时)阶段,在第二个班次(8小时)中在Rework模块有两名工人,即总共一天工作16小时;Sealer模块有时会发生故障n出故障的时间间隔指数分布,均值为2小时n检修时间长度指数分布,均值为4分钟计划购买架子来摆放在Rework模块中排队的零件n一个架子(rack)可以放10个零件n则需要购买多少个架子?需要运行10天!n要解决以上问题,在建模过程中需要:Resource Schedules, Resource States, Resource FailuresManagement System Simulation422022-4-20改变RunSetup设置n在Replication Parameters中将“Day”定义为16 hours。n将Replication Lengths改为10天。Management System Simulation432022-4-20Schedules (1)n用来设定Resource随时间变化的Capacity (资源单位个数)n在Resource数据模块中在Rework Resource,将类型从Fixed Capacity改为Based on Schedule;则多了两列Schedule Name和Schedule Rule;键入Schedule Name (Rework Schedule);选定Schedule Rule当资源正在被实体占用时,资源容量将在何时改变nIgnore容量立即改变,但只在统计中收集数据,并不影响当前正在进行的工作中所占用的资源容量;nWait直到实体释放资源后,才改变容量;nPreempt(先占有)立刻停止当前工作,改变容量且停止当前处理。接着,如果容量还够,则继续分配给刚才停止的实体继续工作。Management System Simulation442022-4-20Schedules (2)n定义资源的具体ScheduleSchedule数据模块已经存在,因为我们已经定义了Rework Schedule;Format Type为Duration,即为从模拟一开始到现在所持续的时间;Type为Capacity,用于Resource Schedule;单击Durations列,可以打开Graphical Schedule EditornX轴为时间,Y轴为Resource Capacity;n可以通过拖拉来画图;n通过Options按钮来控制座标大小;n只有时间持续为整数时才能使用此Editor,而且也不能采用变量和表达式。Management System Simulation452022-4-20Schedules (3)n同样,也可以通过单击右键在对话框中进行编辑;nCapacity和Duration要成对设定如果所有duration都设定,则Schedule不断重复;如果有某个duration为空,则代表Infinite;n也可以通过单击右键选择Edit via Spreadsheet来进行编辑。Management System Simulation462022-4-20Resource Failures (1)n通常用来对未计划的,随机产生的机器故障;n可以在Resource或Failure模块(Advanced Process模板)中进行定义,本例通过Failure模块来进行定义;n可以通过Attach Advanced Process模板,单击Failure模块,就可以通过spreadsheet视图来进行设定;n通过双击可以新建一个Failure;n可以对Failure进行命名,命名为Sealer Failure;nType 有基于Time(代表经过多少时间后出故障)的,也有基于Count(代表处理了过少个实体后出故障)的,本例中采用基于Time的;n指定Up Time(每隔多长时间出现一次故障,可以是一个随机变量), Down Time (故障持续时间,可以是一个随机变量),以及相应的时间单位;n如果是基于Count,则Count number代表该对于该资源多少个实体通过后出现一次故障,可以是一个随机变量。Management System Simulation472022-4-20Resource Failures (2)n在本例中,Up time为满足均值为2小时的EXPO分布的随机变量,Down time为满足均值为4分钟的EXPO分布的随机变量。n将此Failure与相应的Resource连接上根据前面生产经理的说明,在Resource模块的对应的Spreadsheet的Failures列的Sealer行单击;弹出一个Failures窗口,下拉选定Name为Sealer Failure;选择Failure Rule (Wait, Ignore, Preempt,类似于前面的Schedule中的设定)n一个资源可以有多个不同的Failures;n可以在不同的Resources中应用该定义的Failure。Management System Simulation482022-4-20Frequencies (1)n记录与时间相关的变量、表达式或者资源状态的发生频度这里我们想要记录Rework队列长度为0, (0, 10, (10, 20, ,这样可以得到对架子的基本需求情况;nStatistics数据模块(Advanced Process模板)有5类的Statistics,其中Frequencies为其中之一;设定Name为Rework Queue Stats,Type为Frequency,Frequency Type为Value;通过设定Expression来进行跟踪和统计;n通过点击右键来进入Expression BuilderReport Label为Rework Queue Stats;单击Categories弹出Spreadsheet可进行编辑。Management System Simulation492022-4-20Frequencies (2)n还可以在Statistics数据模块中添加另一个用来描述Sealer状态的Frequency。nFrequencies在缺省状态下并不是Category Overview报告的内容,因此需要在Project Bar中选中。Management System Simulation502022-4-20Enhanced模型的运行结果n与上一次的模拟模型环境有所不同;nPrep A/B变化不大(这很正常,因为A/B的产生和制造和后面的变化无关);nRework的工作不是那么“瓶颈”了;nSealer的工作相对繁忙起来;nFrequencies报告显示在90以上时间内,Rework的排队的零件在10个之内,即只需要一个架子就行了。nFrequencies报告显示在将近90的时间内,Sealer Stats的状态为busy。Management System Simulation512022-4-20关于Utilization的报告n对于两个Resource的Utilization的报告Instantaneous Utilization是当时Scheduled的资源单元数中忙的单元数的比例的时间平均值。Scheduled Utilization是平均可用资源单元数中忙的单元数的比例。n这两个值对于fixed-capacity Resource是相等的。n而对于变化的Schedule可能是不同的。Management System Simulation522022-4-20Animation-Enhanced模型n系统已经自动给出了一些动画效果,用来表示整个系统的一些变化。n但是往往还是不够的,尤其是对于复杂模型而言。n也可将动画完全取消。n也可以自己设计动画图案。Management System Simulation532022-4-20更改Queues的动画n首先可以加长排队线,这样在运行过程中可以显示更多的排队实体。n也可根据需要将排队线旋转。n可以将排队线从“线”变为“点”Management System Simulation542022-4-20更改Entity的动画n缺省的,系统会设定一个Initial Pictures。n现在,我们可以定制:在EditEntity Pictures中进行编辑;左栏当前已有的图片的列表;右栏图片库;添加一个手绘图片n注意,添加的图片不会出现在Initial Pictures下拉列表中,只能输入。Management System Simulation552022-4-20添加Resource图片nResource缺省是没有动画的,但是可以添加,在Animate工具栏上单击Resource按钮就可以进行设定。n左栏是不同的资源状态的缺省图片Seize Area选定此复选框,则在运行中,一旦哪个实体获取资源,则再次显示该实体图片。Management System Simulation562022-4-20添加Variables和PlotsnVariable动画在运行中显示变量的值的变化n动画显示Plotsn其他的一些动画对象Clock (TNOW)Level (类似于温度计或者量杯)Management System Simulation572022-4-20Animation-Enhanced模型with Part Transfersn可以进一步对模型进行改进,使之更贴近实际情况;n假设:所有的实体在各个设备之间的传送需要2分钟(即不是立即就衔接上)其中具体包括:n生成的实体传送到Prep处理区域(A, B);n从退出点传送到释放(3个);n系统内部的各个处理区域之间的传送;Prep A/B传送到Sealer Process;Sealer Inspection Decide传送到Rework Process;现在,我们还不考虑传送距离的问题Management System Simulation582022-4-20新的ARENA模块nStation用来表示处理进行的地点如,Arrivals,Manufacturing cells,Dispose;每个Station都有一个唯一的名字,可以表示实际的地点;可以视为一个小模型的输入点;Station Marker用来在模型流程图上表示具体的地点。nStation Transfer用来表示没有直接连接的Stations之间的实体移动有不同类型的transfer方式本例使用Routes;Route paths表示Routes在模型流程图上的具体路径。Management System Simulation592022-4-20在实体到达(创建)上添加Route模块n需要同时使用Stations和Station Transfer (Routes);n在A和B的Assign模块和Prep模块之间加上Part B Arrive StationRoute BPart B Prep Station;在Advanced Transfer模板中;在Route中设定Route Time和Destination Station (Part B Prep Station);nRoute模块没有出来的连线,是因为在Destination Station中已经设定。nProcess模块Prep A和Prep B不变;n在Prep A/B之后,直接连上一个Route模块(B Route to Sealer)可直达下一个Station (Sealer Station);不需要单独为Prep A/B连出一个Station,因为Part B Prep Station就代表了Prep B Process模块的地点了;Man