#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;
}
}