Изменение параметра основного класса для выбранных агентов в AnyLogic

У меня есть агентное моделирование эпидемии, в котором я использую стандартную модель SEIR. Я определяю параметры заражения в основном классе. Теперь я хочу иметь возможность изменять некоторые агенты во время выполнения модели.

Например: я определил «скорость контакта» как параметр в «основном» классе. Теперь я хочу иметь возможность сказать, что после того, как агент попадает в больницу, частота его контактов становится равной нулю. Я попытался написать функцию в классе «агент», которая говорила:

if (hospitalise == true) {
main.ContactsPerDay = 0.0;
}

Но это просто устанавливает общую частоту контактов на 0, как только происходит первая госпитализация, что, очевидно, неверно.

Как я мог написать функцию внутри агентов, которая изменяла бы частоту контактов только для определенных агентов?


person crabcanon    schedule 24.07.2018    source источник


Ответы (2)


Я не думаю, что вы хотите это делать ... это структурная ошибка ... количество контактов определяется частотой контактов, и вы не должны это менять (если только вы не изолируете агентов, которые были госпитализированы навсегда, поэтому они никогда не смогут больше ни с кем поговорить)

Я думаю, что вы действительно хотите сделать агент невосприимчивым к инфекции ... это означает, что в вашей диаграмме состояний пациента, когда пациент выздоравливает, он никогда не должен возвращаться в состояние восприимчивости.

Или другой способ сделать это - в открытой или зараженной диаграмме состояний, когда вы случайным образом заражаете другой агент, у вас есть действие send( "Infection", RANDOM_CONNECTED );. Вы можете заменить его на

if(!hospitalise)//same as hospitalize==false
    send( "Infection", RANDOM_CONNECTED );
person Felipe    schedule 24.07.2018

Правильность структуры или логика / рассуждения в сторону, main.ContactsPerDay относится к параметру в Main. Вот почему опубликованный вами код устанавливает общий коэффициент контактов равным нулю.

Использование this.ContactsPerDay = 0 должно привести к описанному вами результату.

person WenChun 'Annie' Wang    schedule 13.09.2018