【问题标题】:Seize resource if another resource is located in a specific node如果另一个资源位于特定节点中,则获取资源
【发布时间】:2021-05-20 09:59:08
【问题描述】:

我是 AnyLogic 的新手。如果另一个资源单元位于特定注释中,我如何使用 Seize Block 中的动态资源池字段来获取特定资源单元?

示例:
如果 ResourcePool1 中的一个单元位于 node1 内,则从 ResourcePool2 中获取资源单元。否则不要抓住。这可能吗?

【问题讨论】:

  • 如果我理解正确,您要设置的条件是资源的位置,而不是代理的位置。棘手的是,根据您的计划,资源池 1 中可能有多个单元,所以我们需要检查所有单元吗?如果资源池 1 中有两个单元,其中一个在 node1 中,另一个不在?
  • 我只需要检查node1中的ResourcePool1中是否有任何单元(不管是多少或多少),或者是否没有。
  • 只检查node1的资源

标签: java simulation anylogic


【解决方案1】:

这个问题的答案不是很简单。我将逐步描述它。不幸的是,AnyLogic 不允许您单独访问单独的资源单元(有一些功能,例如访问被占用的特定单元,但这不是您所需要的)。所以请按照以下步骤操作:

  1. 转到代理面板,然后拖放第一个名为代理的元素

  2. 选择“代理数量”,然后选择“我想创建一个新的代理类型”。

  3. 根据需要命名并填写如下所示的属性,然后单击完成。

  4. 单击资源池并指定突出显示的属性,如下所示:

  5. 创建一个函数(通过从代理面板拖放它)

  6. 如下图所示设计函数。该函数的作用是检查资源池的任何单元是否位于 node1 中。如果至少 1 位于 node1 中,则返回 true,否则返回 false

  7. 最后,转到服务并编写以下内容。这意味着每次代理进入服务时,都会检查功能。如果返回true,则占用一个resourcePool,否则占用一个resourcePool1。

当然,这些步骤是相当通用的,您需要调整以匹配资源池、节点等的数量。但我能回答的就这么详细了。

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多