【问题标题】:Anylogic, seize resource from pool based on certain conditionsAnylogic,根据特定条件从池中抢资源
【发布时间】:2021-04-04 18:07:03
【问题描述】:

问题已经被问过和回答过,请参阅Anylogic - dynamic specification of resources to seize。但是stackoverflow上的多个巨魔要求我再次问同样的问题,不管.. - 因为问它被视为“答案”而不是“问题”。

Anylogic 8.7.2.
我创建了一个资源池myworkers
代理类型workers.
打开workers代理,添加变量offloadBay(或参数,无所谓),INT, default value 0。 在 main 中,我使用seize 块从该池中获取 4 个资源,但它们需要满足条件offloadBay == 0。 在抓住块中,我选择Customise resource choice == true ; Recource choice condition = (unit.offloadBay == 0)。 在运行项目时,我收到错误 - “offloadBay 无法解析或不是字段”。

似乎对关键字 unit 的引用实际上并未引用资源单元 - 在引用 unit. 时,没有一个 unit's 参数、变量、函数等可供调用

请指教我做错了什么?或者,如何根据资源的特定条件或属性从 ResourcePool 中选择资源? (可根据要求提供演示项目,请告知发送到哪里

【问题讨论】:

    标签: process resources anylogic discrete


    【解决方案1】:

    尝试强制执行资源类型。发生这种情况是因为您在占用块中,并且当您使用“单元”时,您可能指的是不同的资源代理类型。并非所有人都可能具有“offloadBay”变量。所以,使用:

    ((工人)单位).offloadBay == 0

    【讨论】:

    • 埃米尔,这行不通。 Anylogic 现在响应两个错误:offloadBay cannot be resolved or is not a fieldIncompatible operand type Workers and int
    • “==”两边的类型不同时出现“Workers and int操作数类型不兼容”的错误。这告诉你 0 是 int 类型,而另一边的任何东西都是 Workers 类型。您可以复制并粘贴您在资源选择条件中所写的内容吗?
    • 我认为你写的是“Workers”而不是“Worker”。
    • 请稍等一下-您对我有点快...不过,非常感谢您的响应速度!我有(Workers)unit.offloadBay - 似乎需要一组额外的括号?正在测试
    • 就是这样!!需要额外的括号((Workers)unit).offloadBay - 多层次测试,完美运行!!谢谢你,埃米尔,你是明星!!
    猜你喜欢
    • 2021-09-04
    • 2021-06-20
    • 2020-12-02
    • 2020-11-09
    • 1970-01-01
    • 2019-10-27
    • 2020-09-22
    • 2020-02-20
    • 2021-10-18
    相关资源
    最近更新 更多