Удаление агента с определенным значением параметра в AnyLogic

#anylogic

#anylogic

Вопрос:

В модели у меня есть две группы агентов: OriginalAgent и CopiedAgent . Это разные типы агентов. Каждый CopiedAgent из них копируется из a OrginalAgent , и они имеют одинаковые значения для p_id .

Чего я хочу добиться, так это удалить экземпляр CopiedAgent , который однажды OriginalAgent переходит в конечное состояние в его диаграмме состояний.

Я создал функцию myfunction , которая вызывается в Action поле конечного состояния в таблице состояний OriginalAgent . Функция выдает ошибки при вызове, но она показывает, что я пробовал:

 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 работает должным образом, если я жестко задаю определенное значение индекса и закомментирую цикл.

Комментарии:

1. можете ли вы указать точную ошибку, которую вы получаете?

Ответ №1:

возможно, попробуйте это?

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