【问题标题】:Removing agent with specific parameter value in AnyLogic在 AnyLogic 中删除具有特定参数值的代理
【发布时间】:2021-03-09 04:47:35
【问题描述】:

在一个模型中,我有两个代理群体:OriginalAgentCopiedAgent。它们是不同的代理类型。每个CopiedAgent 都是从OrginalAgent 复制而来,它们共享p_id 的相同值。

我想要实现的是在OriginalAgent 在其状态图中进入最终状态时删除CopiedAgent 的实例。

我创建了一个函数myfunction,它在OriginalAgent 状态图中最终状态的Action 字段中调用。调用时函数出错,但它显示了我尝试过的内容:

int agent_index = 99999;
for(int i=0; i<main.CopiedAgent.size();i++){
    if(p_id == main.CopiedAgent(i).p_id){
        agent_index = main.CopiedAgent(i).p_id;
    }
}

if(my_biopsy_index != 99999)
main.remove_CopiedAgent(agent_index);

我相信错误源于循环,因为如果我硬编码特定的索引值并注释掉循环,if 语句会按预期工作。

【问题讨论】:

  • 你能具体说明你得到的错误吗?

标签: anylogic


【解决方案1】:

试试这个可以吗?

for(int i=0; i<main.CopiedAgent.size();i++){
    if(p_id == main.CopiedAgent(i).p_id){
        main.remove_CopiedAgent(i);
        break;
    }
}

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 2014-12-13
    • 2021-09-06
    • 2021-10-24
    • 1970-01-01
    • 2021-02-13
    • 2021-12-14
    • 2020-04-26
    相关资源
    最近更新 更多