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