location - 将代理位置保存在“占用”块中,并在“移动到”块中使用位置
问题描述
我的模型是一个基本的仓库情况模型。卡车进入模型,被空的装卸平台资源占用,然后被叉车卸载。卡车的位置(装载区 1、装载区 2 等)由占用的可用资源确定。我的“移动到”块然后勾选了“移动到被占用资源的位置”选项。在这种情况下,模型的卡车一半按预期工作。
叉车的一半有点硬。有人建议我将托盘代理注入模型中,而不是将它们从进货卡车中分离出来。问题是我无法将代理的位置指定到特定资源。
如何将新停放的卡车的位置(装载区 1、装载区 2 等)保存在变量中,然后调用同一个变量将代理注入该位置?充当装载区的节点是特定资源(装载区)的归属位置。
当我保存位置 (varAgentLocation = getNetworkNode();) 时,我必须将变量类型设置为键入“自定义”(INode) 以避免错误。如果我在源的位置框中键入“varAgentLocation”,我会收到一条错误消息,指出类型不同(INode 和 InitialLocationType)
解决方案
没有必要为您的(非移动的)装载区资源使用家庭位置。
只需将它们作为自定义资源代理类型(例如,代理类型LoadingBay
,而不是 vanilla Agent
),并在模型启动时设置类型Node
参数作为相关的空间标记节点。(您需要让资源池将资源代理添加到LoadingBay
您事先创建的自定义(最初为空)群体中;这允许您在模型启动时循环通过资源代理为它们设置任何参数等.)
那么可能最连贯的方式是
通过块的 on-seize 操作将此值复制到
Truck
代理中的变量中Seize
。让您的代理使用对它们来自
Pallet
的代理的引用(在变量或参数中)创建。Truck
对于托盘是否预先存在(您可以使用Unbatch
块来“释放”它们)或是否动态创建它们,有多种设计替代方案。当您将托盘代理注入到一个
Source
块中时,将其设置为让到达节点(可以是动态表达式)从“父”卡车代理(例如,类似的东西)获取相关节点agent.arrivalTruck.loadingBayNode
。