在 AnyLogic 中删除具有特定参数值的代理

Removing agent with specific parameter value in AnyLogic

在一个模型中,我有两个代理群体: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 语句会按预期工作。

也许试试这个?

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