繁体   English   中英

将代理位置保存在“seize”块中并在“move-to”块中使用位置

[英]Save agent location in a “seize” block and use location in a “move-to” block

我的模型是一个基本的仓库情况模型。 卡车进入模型,被空的装卸码头资源占用,然后由叉车卸载。 卡车位置(装货区 1、装货区 2 等)由被占用的可用资源决定。 我的“移动到”块然后勾选了“移动到占用资源的位置”选项。 在这种情况下,模型的卡车一半按预期工作。

叉车的一半有点硬。 有人建议我将托盘代理注入模型中,而不是将它们从进来的卡车中分离出来。 问题是我无法为特定资源指定代理的位置。

如何将新停放的卡车(装货区 1、装货区 2 等)的位置保存在变量中,然后调用相同的变量将代理注入该位置? 充当装载区的节点是特定资源(装载区)的归属位置。

当我保存位置 (varAgentLocation = getNetworkNode();) 时,我必须将变量类型设置为键入“custom”(INode)以消除错误。 如果我在源的位置框中键入“varAgentLocation”,我会收到一个错误,指出类型不相同(INode 和 InitialLocationType)

不需要为您的(非移动)装载区资源使用家庭位置。

只需将它们作为自定义资源代理类型(例如,代理类型LoadingBay ,而不是 vanilla Agent )与您在模型启动时设置为相关空间标记节点的类型Node参数。 (您需要让资源池将资源代理添加到您预先创建的LoadingBay的自定义(最初为空)群体中;这允许您在模型启动时循环访问资源代理以设置任何参数等。他们。)

那么可能最连贯的方法是

  • 通过Seize块的 on-seize 操作将此值复制到Truck代理中的变量中。

  • 使用对它们来自的Truck代理的引用(在变量或参数中)创建您的Pallet代理。 对于托盘是否预先存在(您可以使用Unbatch块来“释放”它们)或是否即时创建托盘,有多种设计替代方案。

  • 例如,当您将托盘代理注入Source块时,将其设置为让到达节点(可以是动态表达式)从“父”卡车代理(例如, agent.arrivalTruck.loadingBayNode东西)获取相关节点.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM