【问题标题】:AnyLogic, custom resource choice among resource setsAnyLogic,资源集中的自定义资源选择
【发布时间】:2017-05-17 14:22:09
【问题描述】:

在 AnyLogic 项目中,在“占用”块中,我需要从资源集中自定义选择资源。 在“占用”的属性选项卡中,阻止字段“资源集”,其值为{ {ResourcePool_A, ResourcePool_B} },并选中“自定义资源选择”标志。在“资源选择条件”代码部分,我需要做出如下选择:

    if (unit isfrom ResourcePool_A)
    {
        if (unit.param_a == value) 
            do something
            ....
    }
    else if (unit isfrom ResourcePool_B)
    {
        if (unit.param_b == value) 
            do something
            ....
    }

如何检查资源单元是否来自给定池,然后根据资源的特性来区分资源?谢谢你。最好的问候。

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    从您的问题看来,您似乎不需要选择特定的资源,而是在资源被占用后对其执行一组特定的操作。 这就是为什么我添加了两个答案。

    1.
    如果你只是想做一组特定的动作。您只需将代码复制到占用对象中的“占用单元”操作即可。

    2.
    如果要选择特定资源。最简单的方法是创建一个返回布尔值的 Anylogic 函数 resource_selector()

    if(unit isfrom ResourcePool_A && unit.param_foo == agent.param_bar)
        ...
        your own code 
        ...
        return true;
    else
        return false;
    

    然后在资源选择条件下写:

    resource_selector(unit, agent);
    

    【讨论】:

    • 我感兴趣的是如何实现“isfrom”。我需要选择特定的资源并找到了解决方案,如果您愿意,请查看我的答案。感谢您的建议。
    • 太棒了 :-) 你能把你的答案标记为正确的吗?所以我们可以关闭问题
    • 嗨!我不知道该怎么做。你知道吗?谢谢。
    【解决方案2】:

    我解决了编写返回布尔值的 Anylogic 函数的问题,我在资源选择条件下使用了它。我实现了“isfrom”来区分从哪个池中获取资源,如下代码所示:

    `

    // cast pool object to the prorper type
    ResourcePool t_pool = (ResourcePool)pool;
    
    // resource selection condition
    if ( (t_pool == ResourcePool_A && ((Resource_A)unit).param == agent.param_bar) ||
         (t_pool == ResourcePool_B && ((Resource_B)unit).param == agent.param_bar) ) {
        return true;
    }
    else {
        return false;
    }
    

    `

    在 Anylogic 文档中没有解释说,在占用块的资源选择条件下,您还可以访问 pool 对象(这很糟糕......)。

    【讨论】:

    • 您能否检查一下您的计算机上安装了哪个版本的 AnyLogic?在最新版本 7.3.6 中,“池”包含在可用于参数“资源选择条件”的局部变量列表中。它也在关于“Seize”/“Service”块 (help.anylogic.com/topic/com.xj.anylogic.help/html/_ELR/…) 的最新帮助中进行了描述。注意:点击任意代码参数的编辑框时,可以在左上角看到一个小灯泡图标。将鼠标悬停在其上可查看可能的局部变量列表。
    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 2021-09-06
    • 2021-10-13
    • 2021-11-14
    • 2020-11-09
    • 2019-10-27
    • 2019-08-05
    • 2018-12-22
    相关资源
    最近更新 更多