网淘巴来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Tutorial Task 1.3 - 流程仿真进阶指南:利用列表优化任务排序与优先级管理

2026-03-12 新闻来源:网淘巴 围观:497
电脑广告
手机广告
购买adidas上京东官方旗舰店。

任务概述

在本任务中,您将学习如何在流程流中使用列表来构建任务。列表的优势在于允许您使用自定义标准对任务进行排序或优先级排序。本教程还将讨论使用列表构建任务的优缺点。

完成后,您的仿真模型将类似于以下模型运行:

步骤 1复制并修改 3D 模型

在此步骤中,您将复制用于构建基本流程流逻辑的系统。完成后,您的 3D 模型应类似于下图:

  1. 点击BasicProcessFlowLogic平面以选中它。(它是橙色的那个。)
  2. 按 Ctrl+C 复制该平面及其上的所有对象。点击模型中的空白处以取消选择原始平面。按 Ctrl+V 粘贴复制的平面。
  3. 选中复制的平面,在属性中,将平面名称改为ListLogic
  4. 点击颜色框旁边的箭头打开颜色选择器菜单。选择最浅的红色。
  5. 重命名复制平面上的每个 3D 对象,将名称中的任何2数字替换为3,例如Queue3Operator3AProcessor3A等。
  6. 现在移除从 Queue3 到 Processors 3A 和 3B 的端口连接。(按住Q 键的同时点击两个已连接的对象以移除此连接。)
  7. 右键点击Processor3A打开菜单。指向对象组并选择添加到新组
  8. 在组属性窗口中,将组名称更改为ListProcessors。(您可以通过转到工具箱选项卡(库选项卡旁边),在您的组部分下找到该组,并双击该组来重新导航到此属性窗口。)
  9. 点击采样器按钮进入采样模式。
  10. 在 3D 模型中,点击Processor3B对其进行采样并将其添加到组中。
  11. 关闭组属性窗口。

检查以确保您的 3D 模型看起来类似于本步骤开头显示的图像。

步骤 2使用列表创建任务

在此步骤中,您将向通用流程流添加活动,以构建一个使用列表创建运输任务逻辑的流程流。

完成后,您的流程流应类似于下图:

目前,您只需将这些活动添加到流程流并进行连接。您将在后续步骤中编辑属性以添加功能。

要添加和连接这些活动:

  1. 在主工具栏上,点击流程流按钮打开菜单。选择添加通用流程流
  2. 点击流程流中的空白处以使没有任何内容被选中。在快速属性中,将流程流的名称更改为ListLogic
  3. 在流程流打开并处于活动状态的情况下,从库中(在显示下)拖入两个容器形状。
  4. 在属性中,将第一个形状的名称更改为队列将项目推送到列表
  5. 点击颜色框旁边的箭头将其更改为红色。您将使用红色,因为它与 ListLogic 平面的颜色相匹配。
  6. 将第二个形状的名称更改为处理器从列表拉取项目。重复上一步,也将第二个形状的颜色更改为红色。
  7. 队列将项目推送到列表形状中,添加以下活动以创建堆叠块:
    • 一个事件触发源(在令牌创建下)
    • 一个推送到列表(在共享资产下)
    • 一个吸收器(在基础下)
  8. 在堆叠块右侧添加一个列表共享资产。
  9. 将活动和共享资产重命名如下:
  10. 活动 新名称
    列表 列表:待运输项目
    源(事件触发) 源:项目进入队列
    推送到列表 推送到列表:待运输项目
    吸收器 吸收器:项目已推送
  11. 处理器从列表拉取项目形状中,创建一个计划源(在令牌创建下)
  12. 在新创建的堆叠块下方,创建第二个包含以下活动的堆叠块:
    • 一个从列表拉取(在共享资产下)
    • 一个创建任务序列(在任务序列下)
    • 一个装载(在任务序列下)
    • 一个行进(在任务序列下)
    • 一个延迟(在任务序列下)
    • 一个卸载(在任务序列下)
    • 一个结束任务序列(在任务序列下)
  13. 将活动和共享资产重命名如下:
  14. 活动 新名称
    源(计划) 源:初始化处理器组
    从列表拉取 从列表拉取:待运输项目
    创建任务序列 创建任务序列
    装载 从队列装载项目
    行进 行进到扫描站
    延迟 延迟:扫描项目
    卸载 在处理器处卸载项目
    结束任务序列 结束任务序列
  15. 创建一个从源:初始化处理器组从列表拉取:待运输项目的连接器。
  16. 创建一个从结束任务序列出发,循环回到从列表拉取:待运输项目的连接器。

检查以确保您的流程流看起来类似于本步骤开头显示的图像。

步骤 3创建推送到列表的逻辑

使用列表时需要注意的一点是,它们稍微复杂一些,因为您通常要处理多个流。这里的术语指的是将在流程流中移动的两个不同的令牌流。一个令牌流将管理 3D 模型中的项目流,在它们准备好运输时将其推送到任务列表。另一个令牌流将管理 3D 模型中的操作员流,指示他们从列表中拉取项目并完成一系列任务。

在此步骤中,您将编辑“队列推送任务到列表”流程流中活动的属性。这些活动将基本控制需要运输的项目的流。简单来说,当流项目进入队列时,它将被推送到一个列表中,并在那里无限期等待,直到可以被运输。

以下是每个活动和共享资产功能的概述:

活动 说明
列表:待运输项目 此列表将存储对 Queue3 中所有准备好运输到处理器的流项目的引用。
源:项目进入队列 事件触发源是一个事件监听活动,它将监听 3D 模型中的事件。当流项目进入 Queue3 时,此活动将创建一个令牌并将其释放到下一个下游活动。您将为该令牌分配一个名为FlowItem的标签,该标签将包含对触发事件的特定流项目的引用。
推送到列表:待运输项目 此活动将把所有在队列中的流项目推送到“待运输项目”列表。当项目被推送到列表时,它们将使用FlowItem标签保留对特定流项目的引用。
吸收器:项目已推送 此活动从流程流中移除令牌。您将使用其默认设置。

要创建此功能:

  1. 点击源:项目进入队列活动以选中它。点击感叹号按钮进入采样模式。
  2. 在 3D 模型中,点击Queue3打开菜单。选择Queue3:进入时
  3. 在属性中,在标签分配表中,点击进入项目行下标签名称或值列中的单元格。输入FlowItem
  4. 点击进入项目行下操作列中的单元格以打开菜单。选择分配
  5. 点击推送到列表:待运输项目活动以选中它。点击感叹号按钮进入采样模式。
  6. 点击列表:待运输项目共享资产以选中它。现在一条蓝线将此活动连接到共享资产。
  7. 在属性中,点击推送值框旁边的箭头打开菜单。指向令牌标签,然后选择FlowItem

在下一步中,您将设置逻辑,使操作员从列表中拉取项目并开始运输任务。

步骤 4创建从列表拉取的逻辑

在此步骤中,您将编辑“处理器从列表拉取任务”流程流中活动的属性。在上一步中,您了解到使用列表的流程流通常有多个令牌流。在此流程流中,一个令牌流将控制流项目,另一个将控制处理器和操作员。

在此步骤中,您将设计控制处理器和操作员的逻辑。这组活动将从列表中拉取一个项目,并告诉操作员运输该项目。请注意,在上一个流程流中,令牌代表流项目。在此流程流中,令牌将代表请求项目的处理器。

以下是每个活动和共享资产功能的概述:

活动 说明
源:初始化处理器组 仿真开始时,此活动将为ListProcessors组中的每个处理器创建一个令牌。它将把处理器组的一个成员分配给每个令牌上的一个标签。
从列表拉取:待运输项目 此活动将从“待运输项目”列表中拉取一个流项目。您将为令牌分配一个名为TransportedItem的标签,该标签将包含从列表中拉取的流项目的引用。
创建任务序列 这将初始化要分配给调度员然后操作员的一系列任务。
从队列装载项目 此活动告诉操作员需要拾取哪个流项目以及它位于何处。
行进到扫描站 此活动将告诉操作员行进到 ScanStation3 对象。
延迟:扫描项目 此活动将模拟在计算机中扫描流项目所需的时间。您将延迟设置为 1 秒。
在处理器处卸载项目 此活动告诉操作员在哪里卸载流项目。当此任务完成时,令牌将循环回到“从列表拉取”活动,过程将重复。
结束任务序列 此活动将一系列任务标记为已完成,以便可以为操作员分配新的任务序列。

要创建此逻辑:

  1. 点击源:初始化处理器组活动以选中它。在属性的到达表中,点击数量列下的单元格。选中该单元格后,点击到达 1:数量框旁边的箭头并输入Group(“ListProcessors”).length
  2. 在此属性窗口中,点击加号为创建的令牌添加新标签。在名称框中,输入Processor。现在在框中输入Group(“ListProcessors”)[tokenIndex]
  3. 点击从列表拉取:待运输项目活动以选中它。点击感叹号按钮点击
  4. 列表:待运输物品共享资产以选中它。现在会有一条蓝线将此活动链接到该共享资产。在属性面板中,在
  5. 分配给按钮下,删除当前文本并输入token.TransportedItem。点击
  6. 创建装卸任务活动以选中它。在属性面板中,在任务执行器/调度器框旁边,点击采样器按钮进入采样模式。在3D模型中,点击
  7. Dispatcher3打开菜单。选择ListLogic/Dispatcher3创建装卸任务活动中的其余选项保留为默认设置。
  8. 点击从队列装载物品活动以选中它。在属性面板中,确保执行器/任务序列的默认值为token.taskSequence
  9. 点击物品框旁边的箭头打开菜单。指向令牌标签并选择TransportedItem
  10. 点击前往扫描站活动以选中它。在属性面板中,确保执行器/任务序列的默认值为token.taskSequence
  11. 目的地框旁边,点击采样器按钮进入采样模式。
  12. 在3D模型中,点击ScanStation3打开菜单。选择ListLogic/ScanStation3
  13. 点击延迟活动以选中它。在快速属性中,确保执行器/任务序列的默认值为token.taskSequence
  14. 点击在处理器处卸载物品活动以选中它。在属性面板中,确保执行器/任务序列的默认值为token.taskSequence
  15. 点击物品框旁边的箭头打开菜单。指向令牌标签并选择TransportedItem
  16. 点击站点框旁边的箭头打开菜单。指向令牌标签并选择Processor
  17. 我们可以保留完成任务序列的默认设置。

重置并运行模型:

如您所见,使用列表的流程流可以完成仅使用资源的流程流所能做的一切。两个模型运行方式完全相同。使用列表逻辑的唯一缺点是初始设置稍微复杂一些。列表要求您更彻底地思考逻辑。

但是使用列表有哪些优势呢?使用列表的一个主要优点是您可以在其中构建一些相当复杂的逻辑。您可以使用列表来优先处理某些任务,根据列表字段将任务分配给操作员,对任务进行排序等等。下一步将演示如何使用列表按优先级对运输任务进行排序。

步骤 5使用标签为任务设置优先级

在此步骤中,您将使用列表为流动物品添加优先级。操作员将优先运输高优先级的流动物品,然后再运输没有高优先级的物品。为了创建此逻辑,您将为所有流动物品添加一个名为RushOrder的标签。此标签将具有真或假值(其中1为真,0为假),以指示该流动物品是否为紧急订单。您将设置30%的物品为紧急订单。您还将紧急订单物品的颜色更改为红色,以便更直观地看到逻辑。

最后,您将编辑从列表拉取:待运输物品活动的属性,以便操作员首先运输紧急订单物品。您将通过向此活动添加查询来创建此逻辑,其中具有较高 RushOrder 值的物品将首先从列表中拉取。

要创建此逻辑:

  1. 在3D模型中,点击Source3以在右侧显示其属性。
  2. 触发器部分下,点击添加按钮打开菜单。选择创建时选项以添加此触发器。
  3. OnCreation框旁边,点击添加按钮打开菜单。指向数据,然后选择设置标签。将出现一个选项选择窗口。
  4. 标签框中,删除当前文本并输入"RushOrder"。
  5. 框中,删除当前文本并输入bernoulli(30, 1, 0)。
  6. 再次在触发器部分下,点击添加按钮打开菜单。选择离开时选项以添加此触发器。
  7. OnExit框旁边,点击添加按钮打开菜单。指向视觉,然后选择按情况设置颜色。将出现一个选项选择窗口。
  8. 在值框中输入item.RushOrder。确保对象框显示为item
  9. 点击添加按钮框两次以创建两个新条目。
  10. 在显示为默认的框正下方,写入数字0。在紧接着下面的框中写入1
  11. 。现在,在数字0旁边的框中,点击黑色箭头,并选择选项Color.brown
  12. 在下面的底部框中,点击黑色箭头并选择选项Color.red
  13. 。窗口应如下所示。返回到列表共享资产的属性,点击高级
  14. 按钮打开列表属性。字段选项卡上,点击添加按钮打开菜单。选择标签
  15. 以向列表添加标签字段。标签字段框中,删除当前文本并输入RushOrder
  16. 积压订单选项卡上,勾选推送时重新评估所有值
  17. 复选框。点击确定
  18. 按钮保存更改并关闭窗口。ListLogic流程流中,点击从列表拉取:待运输物品活动以选中它。在属性面板中,点击查询/对象框旁边的箭头打开菜单。指向ORDER BY (排序)并选择RushOrder。在现在显示在此框中的查询里,将ASC更改为DESC
  19. 在运行模型之前,打开列表条目以便在仿真运行时查看可能会有所帮助。点击列表:待运输物品共享资产以选中它。在属性面板中,点击查看条目

按钮。

重置并运行模型。不仅要关注3D模型,还要注意列表条目上发生的情况。

请注意,操作员总是优先运输红色紧急订单物品,然后再运输其他物品。如果他们不是立即拾取紧急订单物品,通常是因为紧急订单物品在操作员的令牌到达"从列表拉取"活动后才到达队列。

列表使您能够构建这种复杂的任务逻辑。对于任务执行器需要对任务进行排序、筛选或优先处理的系统来说,列表可能是理想的选择。步骤 6

添加额外任务

正如您在上一个任务中注意到的,偶尔任务执行器不会拾取队列中的紧急订单流动物品。这个问题是由细微的时序问题引起的,即紧急订单物品在任务执行器已经开始装载任务后才到达队列。您可以通过简单地在"从列表拉取"活动之前添加一个"行进"活动来解决这个问题。这样,任务执行器将在从列表中拉取物品之前返回到队列,这将确保总是首先拾取高优先级物品。

完成后,您的流程流将类似于下图:

  1. 要进行这些更改:在流程流打开并激活的情况下,将行进活动拖放到卸载完成任务序列
  2. 活动之间。将此活动重命名为前往队列
  3. 在属性面板中,检查确保执行器/任务序列
  4. 框显示为 token.taskSequence。目的地框旁边,点击采样器按钮
  5. 进入采样模式。在3D模型中,点击Queue3打开菜单。选择ListLogic/Queue3

进行采样。

重置并运行模型:

现在,每当队列中有紧急订单物品时,操作员总是会拾取它们。此步骤的关键要点是记住任务顺序和排序很重要。它可能会以微妙但重要的方式影响操作员的行为。

结论

  • 现在您已经使用流程流中的列表构建了运输任务,您可以看到有几个重要事项需要注意:您可以对任务进行排序和优先处理
    • - 列表使您能够创建更复杂的任务逻辑,例如确定哪些任务应首先完成。更复杂
    • - 列表有时设置起来可能稍微复杂一些,因为您必须更深入地思考逻辑将如何工作。在设置列表逻辑时,需要考虑更多元素或令牌流。例如,您必须仔细思考仿真模型中的哪些事件会导致某些内容被推送到列表,以及哪些事件会导致从该列表中拉取某些内容。您还必须更仔细地考虑流程流中的令牌将链接到3D模型中的什么内容。(例如,它们代表流动物品还是任务执行器等)。可能不会总是按预期运行

    - 有时事件的时序或任务的顺序可能会以您意想不到的方式影响操作员的行为。然而,幸运的是,当出现意外行为时,流程流相对容易进行故障排除和修复。到目前为止,您已经学习了如何使用本地列表创建任务逻辑。在下一个教程中,您将学习如何使用全局列表来探索构建不同类型任务逻辑的更多可能性。继续学习教程任务 1.4 - 使用全局列表的任务

    返回任务逻辑教程:Tutorial 1-任务逻辑工具目录

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

Luminar Neo 是一款先进的 AI 照片编辑工具,专为摄影师、设计师和创意工作者设计, 以灵活、注重效能的引擎为核心,提供更快的编辑速度、无缝的基于图层的工作流程以及对每个细节的精确控制。

文章底部电脑广告
手机广告位-内容正文底部

相关文章

马年
奔腾

您是本站第149672名访客 今日有0篇新文章/评论