【问题标题】:How do I seize a subset of seized resources?我如何夺取一部分被夺取的资源?
【发布时间】:2020-01-07 15:46:12
【问题描述】:

我有 25 个代理(操作员)。生成订单时,我会抓住几个 Operator,并将它们移动到由 Order 中的参数确定的许多不同 ProductionSuite 之一。

在 ProductionSuite 中,我有一个 ResourcePool 类型的变量,我想用它让这些 Operator 执行任务。

在主窗口中,我将这段代码放在“On capture unit:”代码框中:

agent.assignedSuite.suiteOperatorPool.addAgentToContents(unit);

但这会触发 NullPointerException 错误。我是否错误地使用了 addAgentToContents 方法?

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    您还没有初始化您的suiteOperatorPool 变量,它的“初始值”字段为空。因此,这只是一个 ResourcePool 类型的空外壳,它不能做任何事情,包括向其中添加代理。

    您需要使用 ResourcePool API 正确初始化它,但我认为这是不可能的。

    此外,您不能像您尝试的那样让资源成为 2 个资源池的一部分。你应该想一个不同的方法来解决你的问题。也许重新表述这个问题,以便我们可以考虑替代方案。您可能根本不需要 RP,只需使用纯代理功能...?

    【讨论】:

    • 好吧,这是有道理的。我可以将它们移动到 ProductionSuite 节点,而无需在主流程图中占用它们。进入节点后,是否有一种动态方式将 Operator 代理添加到空资源池中?
    • 并非如此。不幸的是,RP在这里有点有限。要么在模型开始时以正确的数量创建它们,要么使用计划。但没有手动添加。但是您可以自己使用代理行为来做到这一点。
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多