Как я могу обратиться к атрибутам других черепах в радиусе «вызывающей процедуру» черепахи и как долго они там остаются? В 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?

Очень благодарен за любые подсказки!

0 ответов

Другие вопросы по тегам