【问题标题】:Keep resource seized after Rack Pick in AnyLogic在 AnyLogic 中选择 Rack Pick 后保持资源占用
【发布时间】:2021-03-30 03:52:47
【问题描述】:

我似乎找不到在“rackPick”之后保持资源被占用的方法。在“rackPick”块中,我选择“使用资源移动”。所以我想要一个资源来将代理从托盘架移动到某个节点。到达节点时,我希望相同的资源留在那里以从事其他活动(例如提货块)。但是,没有选择在挑选后不释放资源。我也不想在货架拣选之前使用抓住块,因为我希望代理在拣选期间以资源的速度移动。有什么建议吗?

谢谢。

其他细节: 具体流程如下:

货架拣货 --> 取货 --> 货架店

我需要相同的资源来完成这三个步骤。

【问题讨论】:

  • 我知道我可以在块之后使用抓住并选择选择最近的资源,但我不知道这是否可以保证在所有情况下我正在尝试做......
  • 所以您希望该资源继续与它选择的同一个代理或附近的另一个代理进行其他活动?
  • 同一个代理。相当于抓住、延迟、延迟、延迟、释放。字节而不是延迟,rackpick,pickup,rackstore。

标签: anylogic


【解决方案1】:

你要做的是保留资源。您可以在名为 agentLink 的资源中拥有一个到代理的链接...如果保留,它将连接,如果未保留,它将断开连接。

在资源池中的抢占单元动作中,您可以通过 agentLink (unit.agentLink.connectTo(agent)) 连接代理和资源

您还可以在 rackpick 块中根据条件 !unit.agentLink.isConnected() 自定义选择资源

然后在 rackstore 中使用资源的条件为 unit.agent.equals(agent.resourceLink.getConnectedAgent())

就是这样:)

【讨论】:

  • 听起来不错,唯一的问题是我找不到允许使用“单位”的 Java 操作字段 - 我使用灯泡进行了检查。或者,我使用了以下内容: ((ResourceName)agent.resourceUnits().get(0)).agent = agent;那有意义吗? (假设只占用了 1 个资源)- 我写了“资源到达时”
  • 在资源池中你有 onSeize 动作......在那里做
  • 我稍微改变了答案...我自己没有测试,但至少是这样的想法...
  • 优秀,始终如一。在您以我正在考虑使用 agentLink 的方式编辑答案之前。它比创建代理变量非常有用且更有效。再次感谢您一如既往的出色回答。
猜你喜欢
  • 2020-11-09
  • 2019-10-27
  • 2017-05-17
  • 2021-09-04
  • 2020-02-20
  • 1970-01-01
  • 2020-12-15
  • 2021-09-06
  • 2020-09-22
相关资源
最近更新 更多