arena中文教程第4章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第四章建立基本操作及输入模型上两章介绍了一种简单加工系统(模型3-1),其中第二章介绍了一个手工完成的仿真,第三章检验了这一Arena模型。本章将开始介绍如何建立与实际系统更加接近的Arena模型,包括如何在简单模型的基础上,通过增加复杂度和引入一些新概念,来建立几种不同版本的模型。本章还讨论了怎样为实际系统确定合理的输入概率分布。4.1节对电子器件装配与测试系统进行了描述,在此基础上介绍了如何对简单模型进行扩展,引入了一些新的Arena概念,建立了新模型,并展示了如何运行所建立的模型以及观察输出结果。现在,读者应该开始着重留意建模技巧了。4.2节对上述模型进行了扩展:在模型中增加了调度、故障、资源状态等要素,并且介绍了不同的结果分析方法。4.3节讲解了如何进一步完善动画效果。4.4节概述了实体如何运动,并介绍了“站”(Stations)、非零传送时间的实现以及传送过程的动画表示。最后,4.5节介绍了如何确定输入数据,包括如何选择驱动仿真的随机数概率分布模型。完成本章学习之后,读者应能自己建立具有一定细致程度的模型,并能合理确定与符合实际的随机数作为模型输入。4.1模型4-1:电子装配与测试系统这里描述的电子装配与测试系统(如图4-1所示),表示的是两种需要封装的电子产品的最后一道工序。到达产品需进行预处理,然后再装配。第一种产品(即PartA)是由模型之外的另一临近部门生产的,它按照均值为5的指数分布时间间隔到达(所有时间单位为分钟)。产品达到后,它们被立即送往产品A的预处理区域,并在这一区域内完成保证封装作业的匹配及产品清理工作,产品A的预处理操作时间满足三角分布TRIA(1,4,8)。之后,产品被立即送往封装台。第二种产品(即PartB)是由本模型外的另一工厂生产,它以每批4件的方式成批输送进入模型。批量的到达间隔时间服从均值为30的指数分布。产品到达产品B的的预处理区域时,被分解为四个单件产品后分别进行处理。在产品B的预处理区域的操作与产品A类似,处理时间服从三角分布TRIA(3,5,10)。之后,产品被送往封装台。2原书P104图4-1电子装配与测试系统在封装操作中,首先将电子产品插入箱盒,再进行箱体组装与封装,然后对封装后产品进行检测。所有这些操作的处理时间因产品不同而异:对产品A的操作服从三角分布TRIA(1,3,4),而对产品B的操作服从威布尔分布WEIB(2.5,5.3)的(其中,比例参数2.5,形状参数5.3,其含义参见附录D)。91%的产品能顺利通过检测,并被立即运送;产品能否通过检测与其他产品通过与否无关。未通过检测产品被送往返工区域进行拆卸、修理、清理、组装及重新检测。80%的返工产品能通过检测,并作为返工合格产品发运,其余不合格产品则被送往废品区。无论返工产品最终合格与否,每件产品返工花费的时间服从均值为45的指数分布。我们希望通过仿真获得每个工作区域的资源利用率、队长、排队时间,以及产品的系统逗留时间等统计数据。仿真开始时,设置模型的终止运行条件为连续运行8小时(即1920分钟)。4.1.1建模方法的扩展搭建仿真模型仅仅是一个完整仿真项目的一个组成部分,仿真项目的两个首要问题为设定研究目标及系统定义,本书将在第13章专门讲述仿真项目整体方面的内容。本书将教你学会如何使用Arena来建立自己的仿真模型。尽管上面已经给出了系统定义,但在实际问题中,需要扩展这种定义,并且还需要收集和分析那些与指定输入参数及其分布(参见4.5节)相关的数据。下面将介绍模型扩展的方法。对于实际问题,首先需要定义数据结构,系统的模型分解,或者控制逻辑的扩展。这里我们仅需选择哪个Arena模块能够提供我们所需要的功能,并确定系统的细致程度。此外,我们还需要确定不同零件封装操作的不同操作时间。为简化这一操作,可以将模型分解为如下几部分:到达部分,预处理区域,封装操作,返工,离开及动画部分。并且,我们可以假设所有系统中的实体代表了正在被加工的产品。因为模型中存在两类到达实体,每种产品的到达服从不同时间分布,所以分别采用两个独立的Create模块来生成到达的产品。各类产品的封装操作时间因产品不同而异,因此我们使用两个“赋值”模块来定义“封装时间”(SealerTime)属性,这一属性在Create模块生成零件的同时给封装操作时间赋以3相应的值。当产品接受封装操作时,就可以使用与SealerTime属性关联的时间值,而不像模型3-1中那样在操作时刻才生成这个时间值。与模型3-1类似,两个预处理区域和封装操作都有各自的Process模块。封装操作完成后要实施检查,通过“投币”选择来决定产品下一步进入哪个区域。这里使用一个基于投币原理的“决策”(Decide)模块,因此返工区域拥有Process和Decide两个模块,以及“通过”和“未通过”等选项。模型中使用三个单独的“记录”(Record)和“处理”模块(装运、返工合格、废料处理),这样就可以按照装运、返工合格以及废品处理等几部分进行分类统计。所有这些模块都包含在“基本操作”面板中。4.1.2建立模型建立模型时,首先打开一个新的模型窗口,将需要建立的模块放置于屏幕上:两个Create模块、两个Assign模块、四个Process模块、两个Decide模块、三个Record模块以及三个Dispose模块。当你将这些模块按照一定顺序放置好之后,如果你建立了连接或选择了“自动连接”(Object菜单中),则建立的模型窗口应与图4-2相似。不同模块的内部编号根据你放置模块的先后顺序不同而异,因为这时所有模块的连接关系是“空白”,因此不影响模型的最终连接关系。完成之后,点击FileSave将模型保存到你选择的目录下。完成上述工作后,分别打开每个模块,输入模型所需的信息。首先是产品A的实体到达模块Create1。输入界面4-1提供了完成这一模块需要的信息(关于“输入界面”的介绍详见3.4.4节的描述)。这一步骤与模型3-1的Create模块非常相似。原书P106图4-2建立模块的视图我们给这个模块命名,并指定实体类型为PartA。设置到达间隔时间为均值5的随机数(即服从指数分布),单位设置为分钟(Minutes),其余项采用默认值,完成后点击OK键接受模块设定。4原书P106输入界面4-1完成后的产品ACreate模块对话框原书P106输入界面4-2完成后的产品BCreate模块对话框产品B到达的Create模块设置与产品A类似,如输入界面4-2(由于步骤几乎相同,因此不再敖述)。由于产品B是以每4个为单位成批到达,因此需要填充一个附加字段(每批到达的实体)来体现批量数为4,这一项将使得每次到达的是4个单独实体而非1个实体。原书P107输入界面4-3指定产品A的封装时间和到达时间创建了到达产品之后,紧接着给它定义一个SealerTime属性,并给封装操作时间赋值,操作时间因产品类型不同而异。我们在先前放置的Assign1和Assign2模块中进行赋值。产品A的赋值如输入界面4-3所示,我们定义一个新的属性并给它赋值为TRIA(1,3,4)的三角分布函数。我们还需定义ArriveTime属性,这个属性用来记录实体的到达时间。Arena的TNOW变量用来提供仿真时钟当前值,这个时间就是产品到达的时间。(TNOW又称当前仿真时钟,观察TNOW值的方法是:鼠标右键点击Assign模块Assignment对话框中的NewValue域,选择BuildExpression,点击DateandTimeFunctions,它在列表中被描述为CurrentSimulationTime。)为产品B的SealerTime和ArriveTime属性赋值的过程如输入界面4-4所示。尽管前述模块为产品到达创建了四个实体,但每个实体都在赋值模块中的SealerTime分布属性中分别赋予不同(相互独立)的值。5原书P107输入界面4-4确定产品B的封装时间和到达时间创建了两种产品到达模块并给封装时间赋值之后,接下来可以利用先前放置的两个Process模块来建立两个预处理区域的模型了。PrepAProcess区域的完成对话框如输入界面4-5所示。Process模块有四个可能的活动类型选项:Delay,SeizeDelay,SeizeDelayRelease以及DelayRelease。Delay会产生一个经历指定时间延迟的活动,这个活动不需要占用资源。由于预处理区域需要占用机器或资源,因此需要一个活动来实现排队等待,直到获得预处理区的资源,然后延迟至操作时间完成为止。SeizeDelay活动提供了等待和延迟功能,但它在操作完成后并不释放资源给下一实体使用,使用这个活动的前提是,资源必须在下游的某一个模块中能得到释放。SeizeDelayRelease选项提供了准确建立预处理区域的各种活动的组合。DelayRelease活动假设实体先前占用了一种资源,在此处经历一段延迟后,释放了这种资源。原书P109输入界面4-5产品A的预处理操作对话框当选择最后三个选项之一时,会在活动(Action)选择框下面的空白处出现一个列表框。单击Add按扭来输入资源信息。在输入数据时,希望尽可能使用下拉式列表功能。因为当你输入一个名称时,必须与先前输入的名称完全一致。Arena中的名称不区分大小写,而是根据名称拼写或插入空格来区分的。因此从下拉式列表中选取名称可以保证你所使用的名称和先前输入名称的一致性。如果在输入名称中稍微出错,则Arena会在首次运行模型时给出错误信息(更糟糕的情况是,6尽管模型可以运行,但结果却是错误的)。当新建一个模块时,Arena会自动为这个模块赋上默认名和默认值。这些默认名是带有附加序号的对象名称(如模块、资源等)。同一对象名称的附加序号是依次递增的,如Progress1,Progress2,…。这样做是基于以下两个原因:其一是方便起见你既可以接受默认资源名称,也可以修改它;其二是因为Arena中无论对象类型一致与否,所有的对象名称都必须是确定唯一的。为帮助使用,Arena做了许多自动命名工作,而其中的大多数读者都不必理会。例如,当你单击查看队列数据模块就会发现,Arena将零件A预处理区域的队列命名为PrepAPrecess.Queue。大多数情况下,你可以自己命名,而不必使用默认的名称。当你选择两个包含Seize活动中的任意一个,并确认接受时,Arena会在相关Process模块附近自动弹出一个动画队列(一个在右端带有小竖线的水平线)。这种功能可以使你在仿真运行时动画显示队列中等待的实体。如果单击此队列,就可以显示出该队列的名称。第二个Process模块除了名称(PrepBProcess)、资源名(PrepB)和操作时间参数(3,5,10)外,建立过程都与前一模块一样。因此没有给出其输入界面。下一步工作是给封装操作输入数据,这是我们放置的第三个模块。输入的对话框如输入界面4-6所示。由于我们在上游的赋值模块中创建到达产品时,给它定义了SealerTime属性,因此当实体占用(Seizes)资源时,就会产生一个数值上等于SealerTime属性值的时间延迟。输入界面4-6.封装对话框我们利用第一个Decide模块实现封装操作之后的检测。由于只有“通过”或“未通过”两个选择,因此我们选用默认的类型—2-waybyChance。这里需要在对话框中输入一个逻辑为“真”(True)值的百分比,通过它来决定离开模块实体的去向。这个例子中,我们将真值百分比输入为9,这样就会有9%的实体流向真值对应的分枝(这里的“真”值对应的是未通过检测的产品),其余的91%流向逻辑“假”(False)值对应的分支(即通过检查的7产品)1。通过检查的产品直接送去装运,而未通过的产品则被送去返工。Decide模块的数据输入如输入界面4-7所示。原书P111输入界面4-7.封装检查对话框接下来是建立返工活动的Process模块,Process模块的数据输入如输入界面4-8所示。这个模块除名称、资源名和表达式外,其余部分都与产品A

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功