Как я могу обратиться к атрибутам других черепах в радиусе «вызывающей процедуру» черепахи и как долго они там остаются? В Netlogo
Я строю модель в Netlogo, в которой моделирую распространение вируса. Я просмотрел другие модели вирусов, но пока не нашел решения своей проблемы.
Я хотел бы, чтобы каждое взаимодействие с агентом имело определенную вероятность передачи, основанную на восприимчивости восприимчивого агента (атрибут агента), вероятности зараженного агента (может быть более одной) передачи вируса (атрибут агента), а также времени провел в непосредственной близости. Обычно P (заражение) = инфекционность * время нахождения в непосредственной близости * восприимчивость. Таким образом, для каждого клеща, которому восприимчивая черепаха приближается к инфицированному, вероятность заражения должна увеличиваться. До сих пор мне удавалось использовать восприимчивость только при создании процедуры с уязвимыми агентами в качестве вызывающих.
Вот мой код для этой процедуры:
to transmit; procedure for transmitting the disease to nearby people, inspired by epiDEM
let caller self ; adress the susceptible turtle by the name caller
if susceptible? = TRUE
[
let nearby-infected turtles in-radius 2 with [infected? = TRUE]
if nearby-infected != nobody
[
let transmission-risk age-susceptibility ;here I want to include protective-measures (attribute of the possibly several infected turtles) and time-exposed
if random-float 1 < transmission-risk[
set infected? TRUE set susceptible? FALSE]
]
]
end
Мне действительно сложно, как это сделать, я не уверен, как исправить атрибуты черепах в пределах радиуса и как я могу измерить время воздействия. Я думал о создании ссылок, которые имеют время воздействия в качестве атрибута, который умрет, когда зараженный больше не будет в радиусе. Но я не уверен, как заставить ссылки умереть, когда черепахи находятся дальше друг от друга, чем радиус 2 патча. Также я бы предпочел не использовать ссылки, чтобы модель работала быстрее, поэтому, если есть другое решение, я был бы очень рад его услышать :)
Для варианта со ссылками я хотел попробовать что-то вроде этого:
to transmit; procedure for transmitting the disease to nearby people
ifelse link-neighbors (in-radius 2 = FALSE)
[ask link [die]]
[set link-age link-age + 1]
let caller self ; adress the susceptible turtle by the name caller
if susceptible? = TRUE
[
let nearby-infected turtles in-radius 2 with [infected? = TRUE]
if nearby-infected != nobody
[create-links-with nearby-infected
let transmission-risk age-susceptibility ;include protective-measures and time-exposed using links to address the turtles
if random-float 1 < transmission-risk[
set infected? TRUE set susceptible? FALSE]
]
]
Однако я для начала просто не понимаю, как адресовать ссылки черепах дальше, чтобы попросить их умереть, я изменил его после сообщений об ошибках, которые я получил, но просто не могу заставить его работать.
Можно ли вообще делать то, что я хочу в Netlogo?
Очень благодарен за любые подсказки!