Как удалить все ссылки с одной черепахи на набор агентов в Netlogo - PullRequest
1 голос
/ 29 марта 2020

У меня есть такая проблема: у меня есть черепаха, имеющая дело с набором агентов, у всех из которых есть связь с указанной c черепахой. В конце я хочу, чтобы черепаха удалила все свои связи с агентами в агентском наборе, но я не нахожу способа. Кто-нибудь может мне помочь? Я сообщаю здесь код, который не работает. В частности, проблемной строкой c является «ask my-links [other-end = traitors] [die]»

to cooperate-with-friend
  set traitors friends with [cheater? = True]
  set loyals friends with [cheater? = False]
  ask traitors [set wealth wealth + 3]
  ask loyals [set wealth wealth + 2]
  set wealth wealth + count traitors * -3 + count loyals * 2
  ask my-links [other-end = traitors] [die]
end

NB: friends - это набор агентов, который группирует всех черепах, имеющих ссылку на выполнение черепахи. команда.

Ответы [ 3 ]

1 голос
/ 03 апреля 2020

Способ изменить подход Чарльза к вашей переменной допуска:

ask my-links with [member? other-end traitors]
[ if tolerance < random-float 1 [die]
]
0 голосов
/ 03 апреля 2020

Ммм .. Нетло go не принимает эту строку. Это говорит, что после члена? ожидает команду.

Тем временем я решил так. Немного искривлено, но, кажется, работает:

let anger random-float 1
  repeat count traitors [
    let traitor one-of traitors
    if link-with traitor != nobody and tolerance < anger [
      ask link-with traitor [die]
    ]
  ]
0 голосов
/ 30 марта 2020

Учитывая, что вы ask собираетесь traitors что-то сделать, я предполагаю, что предатели - это набор агентов. other-end, однако, является агентом, поэтому other-end = traitors сравнивает агент с набором агентов. Два никогда не могут быть равны. Что вы хотите знать, так это то, что агент на другом конце является членом группы предателей. Для этого вы можете использовать member?.

ask my-links with [member? other-end traitors] [die]

Надеюсь, это поможет, Чарльз

...