问题描述
我的模型是基本的仓库情况模型。卡车进入模型,被空的装卸码头资源占用,然后由叉车卸下。卡车的位置(装卸区1,装卸区2等)由被占用的可用资源确定。然后,我的“移至”块选中了“移至所捕获资源的位置”选项。在这种情况下,该模型的卡车一半按预期工作。
叉车的一半较硬。建议我将托盘代理注入模型中,而不要将它们从传入的卡车中分离出来。问题是我无法为特定资源指定代理的位置。
如何将新停放的卡车(装卸区1,装卸区2等)的位置保存在变量中,然后调用相同的变量将特工注入该位置?充当装载区的节点是特定资源(装载区)的原始位置。
当我保存位置时(varagentLocation = getNetworkNode();),我必须将变量类型设置为键入“ custom”(INode)以消除错误。如果在源的位置框中键入“ varagentLocation”,则会收到一条错误消息,指出类型不同(INode和InitialLocationType)
解决方法
不需要在您的(固定的)装卸区资源中使用家庭位置。
只需将它们作为自定义资源代理类型(例如,代理类型LoadingBay
,而不是普通Agent
),并将类型Node
参数设置为在模型启动时设置的相关空间标记节点。 (您需要让资源池将资源代理添加到预先创建的LoadingBay
的自定义(初始为空)填充中;这使您可以在模型启动时遍历资源代理以设置任何参数等等。)
那么可能最一致的方法是
-
通过
Truck
块的onseize操作将此值复制到Seize
代理中的变量中。 -
已创建
Pallet
代理,并引用了它们来自的Truck
代理(在变量或参数中)。对于是否预先存在托盘(可以在其中使用Unbatch
块“释放”它们)还是即时创建它们,有多种设计选择。 -
在将托盘代理注入到
Source
块中时,将其设置为使到达节点(可以是动态表达式)从“父级”卡车代理获取相关节点(例如agent.arrivalTruck.loadingBayNode
)。