Tutorial Task 2.2 - 仿真建模教程:如何创建协同装载任务的流程与逻辑
购买adidas上京东官方旗舰店。
任务概述
在本教程任务中,您将学习如何创建协调的装载任务。协调任务是指需要两个或更多操作员才能完成给定任务的情况。
回顾一下,到目前为止,您已经创建了一个系统仿真模型,其中两名操作员将标准尺寸的箱子从一个队列运输到两个处理器。但假设您需要为一个业务系统创建仿真模型,其中:
- 需要运输的箱子具有不同的重量
- 当箱子的重量超过 40 时,工作场所规定要求由两名操作员共同运输
您将在本教程中模拟这类系统。通常情况下,两名操作员将独立运输标准尺寸的箱子。但偶尔会出现一个大箱子,需要他们协同工作来运输,这意味着您需要设计协调任务逻辑来处理这些特殊任务。
您将首先编辑流程逻辑,使其偶尔创建一个重量超过 40 的箱子。当箱子重量大于 40 时,您将设计逻辑来改变箱子的视觉效果,使其看起来比标准箱子更大,并显示为红色。这些更改将有助于在视觉上区分重型箱子和标准箱子。然后,您将设计逻辑,将重型箱子放入 3D 模型中的 LargeQueue。
之后,您将在流程中添加两个轨道来处理协调任务。一个轨道将控制负责装载和运输重型箱子的主操作员。第二个轨道将控制协助运输任务的辅助操作员。您将使用流程协调活动来确保两名操作员同时处理这些任务。有关构建协调任务所涉及的流程和活动的更详细说明,请参阅协调任务和流程协调。
完成后,您的仿真模型将类似于下图运行:
步骤 1添加活动以改变箱子重量
在此步骤中,您将通过添加新的活动来修改流程,这些活动将创建重型箱子并将其放入 LargeQueue。完成后,流程将如下所示:
目前,您只需将这些活动添加到流程中并进行连接。您将在下一步中编辑属性以添加逻辑。
要添加和连接这些活动:
-
在流程打开并处于活动状态的情况下,将以下活动添加到创建箱子形状的堆叠块末尾:
- 一个分配标签活动(位于基础下)
- 一个判断活动(位于基础下)
- 按如下方式重命名这些活动:
- 向流程添加另一个容器形状(位于显示下)。
- 在属性中,将此流程形状重命名为创建重型箱子。
- 单击颜色框,将形状的颜色更改为红色。
-
在创建重型箱子形状内部,添加以下活动以创建一个堆叠块:
- 2 个更改视觉活动(位于视觉下)
- 一个移动对象活动(位于对象下)
- 按如下方式重命名这些活动:
- 创建第二个连接器,从判断:标准还是重型?活动连接到更改视觉:调整大箱子尺寸活动。
| 活动 | 新名称 |
|---|---|
| 分配标签 | 分配标签:重量 |
| 判断 | 判断:标准还是重型? |
| 活动 | 新名称 |
|---|---|
| 更改视觉(第一个) | 更改视觉:调整大箱子尺寸 |
| 更改视觉(第二个) | 更改视觉:设为红色 |
| 移动对象 | 移动对象:到 LargeQueue |
考虑保存您的仿真模型。
步骤 2添加重型箱子逻辑
在此步骤中,您将通过添加活动来修改流程,这些活动将创建重型箱子并将其放入 LargeQueue。您将调整这些箱子的尺寸,使其更大并显示为红色。您还将更改箱子的到达率,使其稍微减慢。
以下是新增和修改后的活动功能概述:
| 活动 | 说明 |
|---|---|
| 来源:物品到达 | 您将修改此活动,使箱子每 10 秒到达一次。 |
| 分配标签:重量 | 您将向令牌添加一个名为重量的标签,该标签会为箱子随机分配一个 1 到 50 之间的重量值。您将使用均匀分布统计分布来分配此值。此分布意味着大多数情况下会创建标准箱子(重量低于 40 的箱子)。但偶尔会创建一个大箱子(重量高于 40 的箱子)。 |
| 判断:标准还是重型? | 此活动将检查分配给重量标签的值。如果此标签的值高于 40,令牌将被发送到"创建重型箱子"形状中的活动。如果该值低于 40,它将继续执行"标准运输任务"形状中的活动。 |
| 更改视觉:调整大箱子尺寸 | 此活动将接收与重型箱子相关联的令牌,这些箱子因其重量标签大于 40 而被分类为重型。它将调整这些箱子的尺寸,使其在 3D 模型中显得更大。标准箱子尺寸为 0.61 x 0.61 x 0.3。您将把大箱子尺寸设置为 1 x 1 x 0.8。 |
| 更改视觉:设为红色 | 此活动将更改重型箱子,使其在 3D 模型中显示为红色。 |
| 移动对象:到 LargeQueue | 此活动将把重型箱子放入 3D 模型中的 LargeQueue。 |
要创建此逻辑:
- 单击来源:物品到达活动以选中它。在属性中,勾选在时间 0 到达复选框。
- 在到达间隔时间框中,键入10.00。
- 单击分配标签:重量活动以选中它。在属性中,单击分配标签至框旁边的箭头以打开菜单。指向令牌标签,然后选择箱子。
-
单击添加按钮以添加新标签。
在
- 名称框中,键入重量。单击
- 值框旁边的箭头以打开菜单。指向统计分布,然后选择均匀分布以打开分布选择器。在
- 最小值框中,键入1.00。在
- 最大值框中,键入50.00。单击
- 判断:标准还是重型?活动以选中它。在属性中,单击发送令牌至框旁边的箭头以打开菜单。选择条件判断。在
- 条件框中,键入token.Box.Weight < 40。单击
-
更改视觉:调整大箱子尺寸活动以选中它。在属性中,单击更改视觉框旁边的添加按钮以打开菜单。选择设置旋转、尺寸或位置
。单击设置
- 菜单并选择尺寸。在对象
- 框中,键入token.Box。在Z
- 框中,键入0.8。单击更改视觉:设为红色
-
活动以选中它。在属性中,单击更改视觉框旁边的添加按钮以打开菜单。选择设置对象颜色。
在对象框中,键入
- token.Box。单击颜色框旁边的箭头以打开菜单。选择
- 红色。单击移动对象:到 LargeQueue活动以选中它。在属性中,单击
- 对象框旁边的箭头以打开菜单。指向令牌标签,然后选择箱子。在目的地框旁边,单击
-
采样器按钮以进入采样模式。在 3D 模型中,单击LargeQueue以打开菜单。选择
LargeQueue
- 。尝试运行仿真模型:在观看过程中,您最终会看到一些大的红色箱子出现在 LargeQueue 中。目前,这些大箱子只会停留在队列中,因为您尚未创建逻辑将它们移出队列。您将在本教程的其余步骤中完成此操作。步骤 3添加协调任务活动
在此步骤中,您将向流程添加活动,这些活动将控制 3D 模型的逻辑。完成此步骤后,您的流程将类似于下图:
目前,您只需将这些活动添加到流程中。您将在后续步骤中编辑属性以添加功能。
要添加这些活动:向流程添加两个
容器
形状(位于
显示
- 下)。将这两个形状重命名为重型运输任务和辅助运输任务
- 。在两个形状的属性中,更改颜色框,将每个形状的颜色更改为红色。在
- 重型运输任务形状中,使用以下活动创建一个堆叠块:一个
-
获取资源活动(位于共享资产
- 下)一个拆分活动(位于协调
- 下)按如下方式重命名这些活动:活动新名称获取
- 获取:处理器
-
获取资源活动(位于共享资产
- 下)一个行进活动(位于任务序列
- 下)一个创建任务序列活动(位于任务序列
- 下)按如下方式重命名这些活动:活动新名称获取
- 获取:主操作员
-
同步活动(位于协调
- 下)一个装载活动(位于任务序列
- 下)一个同步活动(位于协调
- 下)一个行进活动(位于任务序列
- 下)一个同步活动(位于协调
- 下)Synchronize(underCoordination)
- 一个卸载(位于任务序列下)
- 一个同步(位于协调下)
- 一个结束任务序列(位于任务序列下)
- 一个释放资源(位于共享资产下)与"结束任务序列"堆叠在一起。
- 调整四个同步活动的大小,使其横跨重型运输任务和辅助运输任务形状。
- 将这些活动重命名如下:
- 点击包含获取:主操作员活动的堆叠块以选中它。按Ctrl+C复制堆叠块。按Ctrl+V粘贴堆叠块。将其放置在辅助运输任务形状内,使其与原始堆叠块平行。
- 将复制的活动重命名如下:
- 添加一个行进活动(位于任务序列下)到辅助运输任务形状。将其放置在重型运输任务形状中的行进:主操作员前往处理器活动平行的位置。
- 将此活动重命名为行进:辅助操作员前往处理器。
-
在辅助运输任务形状的底部,创建一个包含以下活动的堆叠块:
- 一个结束任务序列(位于任务序列下)
- 一个释放资源(位于共享资产下)
- 一个吸收器(位于基础下)
- 将这些活动重命名如下:
| 拆分 | 拆分:创建协调任务 |
|---|---|
| 在 | 重型运输任务 |
| 形状中,使用以下活动创建一个堆叠块: | 一个 |
| 行进 | 行进:主操作员到 LargeQueue |
|---|---|
| 创建任务序列 | 创建主任务序列 |
| 按此顺序将以下活动添加到 | 重型运输任务 |
| 形状中,但让它们保持浮动且未连接状态: | 一个 |
| 活动 | 新名称 |
|---|---|
| 同步(第一个) | 同步:两操作员在大型队列处 |
| 装载 | 在大型队列处装载箱子 |
| 同步(第二个) | 同步:两操作员已装载箱子 |
| 行进 | 行进:主操作员前往处理器 |
| 同步(第三个) | 同步:两操作员在处理器处 |
| 卸载 | 在处理器处卸载箱子 |
| 同步(第四个) | 同步:两操作员准备释放 |
| 结束任务序列 | 结束主任务序列 |
| 释放 | 释放:主操作员 |
| 活动 | 新名称 |
|---|---|
| 获取:主操作员(复制) | 获取:辅助操作员 |
| 创建主任务序列 | 创建辅助任务序列 |
| 行进:主操作员前往大型队列(复制) | 行进:辅助操作员前往大型队列 |
| 活动 | 新名称 |
|---|---|
| 结束任务序列 | 结束辅助任务序列 |
| 释放 | 释放:辅助操作员 |
| 吸收器 | 吸收器:协调任务完成 |
检查以确保你的流程流与本步骤开头的图像类似。
步骤 4连接活动
你会注意到,在上一步中你添加了一些协调活动(拆分和同步活动)。这些活动的逻辑取决于是否正确设置了活动之间的连接器。(有关更多信息,请参阅流程流协调。)因此,你将在本步骤中致力于正确连接所有活动。需要注意的重要事项是确保按正确顺序连接活动,以便连接器排名正确。请尽力确保严格按照此顺序执行这些步骤。
完成后,你的流程流应类似于下图:
要连接这些活动:
- 创建一个从移动对象:至大型队列活动到获取:处理器活动的连接器。
- 创建一个从拆分:创建协调任务活动到获取:主操作员活动的连接器。
- 创建第二个从拆分:创建协调任务活动到获取:辅助操作员活动的连接器。
-
在重型运输任务形状内的活动之间创建连接器:
- 从行进:主操作员前往大型队列活动到同步:两操作员在大型队列处活动
- 从同步:两操作员在大型队列处活动到在大型队列处装载箱子
- 从在大型队列处装载箱子到同步:两操作员已装载箱子活动。
- 从同步:两操作员已装载箱子活动到行进:主操作员前往处理器活动
- 从行进:主操作员前往处理器活动到同步:两操作员在处理器处活动
- 从同步:两操作员在处理器处活动到在处理器处卸载箱子活动
- 从在处理器处卸载箱子活动到同步:两操作员准备释放活动
- 从同步:两操作员准备释放活动到结束主任务序列活动
-
在辅助运输任务形状内的活动之间创建连接器:
- 从行进:辅助操作员前往大型队列活动到同步:两操作员在大型队列处活动
- 从同步:两操作员在大型队列处活动到同步:两操作员已装载箱子活动
- 从同步:两操作员已装载箱子活动到行进:辅助操作员前往处理器活动
- 从行进:辅助操作员前往处理器活动到同步:两操作员在处理器处活动
- 从同步:两操作员在处理器处活动到同步:两操作员准备释放活动
- 从同步:两操作员准备释放活动到结束辅助任务序列活动
- 创建一个从释放:主操作员到等待事件:处理完成时堆叠块(在处理箱子形状内)的连接器。
- 点击新创建的连接器以选中它。在属性面板的线条样式组中,打开类型菜单并选择拆分。
考虑保存你的仿真模型。
步骤 5编辑重型运输任务逻辑
在此步骤中,你将创建控制重型运输任务轨道上操作员任务的逻辑。以下是这些活动将如何运行的概述:
| 活动 | 说明 |
|---|---|
| 获取:处理器 | 此活动将尝试为箱子获取一个处理器。如果处理器无法接收流项目,令牌将在此活动处等待,直到处理器可用。如果处理器可用,令牌将获取该资源并将令牌释放到下一个下游对象。获取资源时,你将为令牌分配一个名为处理器的标签,该标签将包含对所获取特定处理器的引用。 |
| 拆分:创建协调任务 | 拆分活动将传入的令牌拆分为两个相同的令牌,并通过每个传出连接器释放它们。你将使用这两个令牌来同步两个操作员,以便他们可以协调任务。一个令牌将控制主操作员,另一个将控制辅助操作员。你将创建第二个令牌作为独立令牌,并复制原始令牌的标签。 |
| 获取:主操作员 | 此活动将尝试获取一个操作员来处理运输任务。如果操作员无法处理该任务,令牌将在此活动处等待,直到操作员可用。如果操作员可以处理该任务,令牌将获取该资源并将令牌释放到下一个下游对象。获取资源时,你将为令牌分配一个名为主操作员的标签,该标签将包含对所获取特定操作员的引用,你将使用此标签将剩余任务分配给该操作员。 |
| 创建主任务序列 | 此活动将一系列任务(装载和卸载)设置为主操作员要执行的任务序列。 |
| 行进:主操作员前往大型队列 | 此活动将告诉主操作员前往3D模型中的大型队列。它将使用主操作员标签将任务分配给先前活动中获取的同一操作员。 |
| 同步:两操作员在大型队列处 | 此活动将确保主操作员等待,直到辅助操作员也已行进到队列处并准备好帮助装载大型箱子。控制主操作员的令牌将等待,直到控制辅助操作员的令牌到达此活动。你将使用此活动的默认设置。 |
| 在大型队列处装载箱子 | 此活动将告诉主操作员在大型队列处装载箱子。它将使用主操作员标签将任务分配给先前活动中获取的同一操作员,并使用箱子标签告诉操作员应运输哪个物品。 |
| 同步:两操作员已装载箱子 | 此活动将确保辅助操作员等待,直到主操作员已装载大型箱子。控制辅助操作员的令牌将等待,直到控制主操作员的令牌到达此活动。你将使用此活动的默认设置。 |
| 行进:主操作员前往处理器 | 此活动将告诉主操作员前往先前获取的处理器。它将使用主操作员标签将任务分配给先前活动中获取的同一操作员,并使用处理器标签告诉主操作员应前往哪个处理器。 |
| 同步:两操作员在处理器处 | 此活动将确保主操作员和辅助操作员在卸载箱子前都到达处理器。控制辅助操作员的令牌将等待,直到控制主操作员的令牌到达此活动。你将使用此活动的默认设置。 |
| 在处理器处卸载箱子 | 此活动告诉主操作员在处理器处卸载箱子。它将使用主操作员标签将任务分配给先前活动中获取的同一操作员,并使用箱子标签告诉操作员应运输哪个物品。你将使用处理器标签告诉操作员哪个处理器应接收流项目。 |
| 同步:两操作员准备释放 | 此活动将确保辅助操作员等待,直到主操作员已卸载大型箱子。控制辅助操作员的令牌将等待,直到控制主操作员的令牌到达此活动。你将使用此活动的默认设置。 |
| 结束主任务序列 | 此活动指定主操作员的任务序列已结束。 |
| 释放:主操作员 | 此活动释放主操作员,以便其可以处理其他任务。它将使用主操作员标签释放该操作员。 |
要创建此逻辑:
-
点击获取:处理器活动以选中它。点击此活动旁边的感叹号按钮
进入采样模式。
- 点击资源:处理器共享资产以对其进行采样。
- 在属性面板中,点击分配给标签框旁边的箭头以打开菜单。指向令牌标签,然后选择处理器。
-
点击获取:主操作员活动以选中它。点击此活动旁边的感叹号按钮
进入采样模式。
- 点击资源:操作员共享资产以对其进行采样。
- 在属性面板的分配给标签box,输入token.MainOperator。
- 点击创建主任务序列活动以选中它。 在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择MainOperator。
- 在分配给单选按钮下方的框中,将文本更改为token.MainTaskSequence
- 点击移动:主操作员到大型队列活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择MainTaskSequence。
-
在目的地框旁边,点击采样器按钮
进入采样模式。
- 在3D模型中,点击LargeQueue以打开菜单。选择LargeQueue。
- 点击在大型队列装载箱子活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择MainTaskSequence。
- 点击物品框旁边的箭头以打开菜单。指向令牌标签并选择Box。
- 点击移动:主操作员到处理器活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择MainTaskSequence。
- 点击目的地框旁边的箭头以打开菜单。指向令牌标签并选择Processor。
- 点击在处理器卸载箱子活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择MainTaskSequence。
- 点击物品框旁边的箭头以打开菜单。指向令牌标签并选择Box。
- 点击站点框旁边的箭头以打开菜单。指向令牌标签并选择Processor。
- 点击完成主任务序列活动以选中它。在属性中,点击任务序列框旁边的箭头以打开菜单。指向令牌标签并选择MainTaskSequence。
- 点击释放:主操作员活动以选中它。在属性中,点击分配给资源框旁边的箭头以打开菜单。指向令牌标签并选择MainOperator。
考虑保存您的仿真模型。
步骤 6编辑辅助运输任务逻辑
在此步骤中,您将创建控制"辅助运输任务"轨道上操作员任务的逻辑。以下是各活动功能的概述:
| 活动 | 说明 |
|---|---|
| 获取:辅助操作员 | 此活动将尝试获取一名操作员来执行运输任务。如果操作员无法执行任务,令牌将在此活动处等待,直到操作员可用。如果操作员可以执行任务,令牌将获取该资源并释放到下游对象。获取资源时,您将给令牌分配一个名为AssistingOperator的标签,该标签将包含对所获取特定操作员的引用,您将使用此标签将剩余任务分配给此操作员。 |
| 创建辅助任务序列 | 此活动将一系列任务(装载和卸载)设置为由辅助操作员执行的任务序列。 |
| 移动:辅助操作员到大型队列 | 此活动将指示辅助操作员前往3D模型中的LargeQueue。 |
| 同步:两位操作员在大型队列处 | 此活动将确保主操作员等待,直到辅助操作员也到达队列并准备好协助装载大箱子。控制主操作员的令牌将等待,直到控制辅助操作员的令牌到达此活动。您将使用此活动的默认设置。 |
| 同步:两位操作员已装载箱子 | 此活动将确保辅助操作员等待,直到主操作员已装载大箱子。控制辅助操作员的令牌将等待,直到控制主操作员的令牌到达此活动。您将使用此活动的默认设置。 |
| 移动:辅助操作员到处理器 | 此活动将指示辅助操作员前往之前获取的处理器。它将使用Processor标签来告知主操作员应前往哪个处理器。 |
| 同步:两位操作员准备释放 | 此活动将确保辅助操作员等待,直到主操作员已卸载大箱子。控制辅助操作员的令牌将等待,直到控制主操作员的令牌到达此活动。您将使用此活动的默认设置。 |
| 完成辅助任务序列 | 此活动将辅助操作员的任务序列标记为完成。 |
| 释放:辅助操作员 | 此活动释放辅助操作员,以便其可以处理其他任务。 |
| 吸收:协调任务完成 | 此活动从流程流中移除与流动物品链接的令牌。 |
要创建此逻辑:
-
点击获取:辅助操作员活动以选中它。点击此活动旁边的感叹号按钮
进入采样模式。
- 点击资源:操作员共享资产进行采样。
- 在属性的分配给标签框中,输入token.AssistingOperator。
- 点击创建辅助任务序列活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择AssistingOperator。
- 在分配给单选按钮下方的框中,将文本更改为token.AssistingTaskSequence
- 点击移动:辅助操作员到大型队列活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择AssistingTaskSequence。
-
在目的地框旁边,点击采样器按钮
进入采样模式。
- 在3D模型中,点击LargeQueue以打开菜单。选择LargeQueue。
- 点击移动:辅助操作员到处理器活动以选中它。在属性中,点击执行者/任务序列框旁边的箭头以打开菜单。指向令牌标签并选择AssistingTaskSequence。
- 点击目的地框旁边的箭头以打开菜单。指向令牌标签并选择Processor。
- 点击完成辅助任务序列活动以选中它。在属性中,点击任务序列框旁边的箭头以打开菜单。指向令牌标签并选择AssistingTaskSequence。
- 点击释放:辅助操作员活动以选中它。在属性中,点击分配给资源框旁边的箭头以打开菜单。指向令牌标签并选择AssistingOperator。
考虑保存您的仿真模型。
步骤 7运行并测试仿真模型
运行仿真模型:
观察时,您会看到当大箱子出现在LargeQueue中时,最终会有一名操作员前去装载。一旦另一名操作员也来装载箱子,两位操作员便将箱子运输到其中一个处理器。拆分和同步活动使得两位操作员能够同时执行其任务。
协调任务的唯一缺点是,两位操作员在执行协调任务时遵循完全相同的移动路径,因此他们的3D可视化效果看起来合并在一起,产生一种奇怪的视觉效果。一种可能的解决方法是应用一些"更改可视化"活动,给辅助操作员施加一个小偏移。然而,这很难做到完美,您可能会发现更容易接受这种奇怪的可视化效果。
结论
协调任务教程到此结束。现在,您应该已经了解了如何通过构建并行轨道并使用协调流程流活动来同步两位操作员之间的任务,从而构建协调任务。
返回任务逻辑教程:Tutorial 2 - FlexSim协同任务教程目录


微信扫一扫,打赏作者吧~