Ваша проблема в том, что вы не переключаете контексты (то есть, является ли код «текущим» в перспективе черепахи или ссылки).
Вы начинаете с ask turtles
- притворяйтесьтеперь вы первая черепаха, о которой вас спрашивают.Сначала вычисляется значение, а затем сравнивается со случайным числом - предположим, что if
выполнено.Код все еще находится в контексте черепахи, поэтому код внутри []
применяется к этой первой черепахе.
Код создает переменную friend_dif и присваивает ее значение как разницу в мировоззрениях между собой и однимслучайно выбранные сетевые соседи.В вашем коде у вас есть max-one-of links [friend_dif]
.Тем не менее, это только выбирает link
с максимальным значением friend_dif, если (1) friend_dif является атрибутом links-own
и (2) значение friend_dif было set
для всех ссылок.Ни то, ни другое не правда.Кроме того, запрашивая max-one-of links [friend_dif]
, вы запрашиваете link
с самым высоким значением из всех links
в модели, а не только с turtle
, представляющими интерес на одном конце.
Таким образом, вам нужно получить turtle
, чтобы вычислить разницу для всех его link-neighbors
, а затем переключить контексты на link
, который соединяет двух черепах, перед тем, как запросить link
к die
.
Это не проверено.Предполагается, что он должен определить соседа сети, который возвращает наибольшую разницу в значениях мировоззрения, а затем использовать имя link
(которое задается двумя концами), чтобы задать его die
.
ask turtles with [ count my-links > 0 and color = blue]
[ if random-float 1 < 1 / count my-links
[ let bigdif max-one-of link-neighbours [abs ([worldview] - [worldview] of myself)
ask link self bigdif [die]
]
]
В качестве альтернативы (и удобнее для чтения) вы можете создать атрибут link
, в котором будет храниться значение различий в мировоззрениях (называемое diff ниже), а затем сделать что-то вроде:
ask links [ set dif abs ([worldview] of end1 - [worldview] of end2) ]
ask turtles with [ count my-links > 0 and color = blue]
[ if random-float 1 < 1 / count my-links
[ ask max-one-of my-links [dif] [die]
]
]