Давайте посмотрим на первую строку в блоке ask
вашего первого сегмента кода.
let potential-target1 patches with [value < buymiddle and any? turtles-here = false]
совпадает с
let potential-target1 patches with [value < buymiddle and not any? turtles-here]
, так что ваш potential-target1
набор патчей не будет черепах. Это сделает последующие строки неактуальными. Но допустим, что мы делаем эту строку
let potential-target1 patches with [value < buymiddle and any? turtles-here]
В следующей строке
set target potential-target1 with [length remove-duplicates [any? turtles-here with [income = "low"]] of neighbors = 2]
[any? turtles-here with [income = "low"]] of neighbors
выдает список из восьми значений true / false, true если соседний патч имеет какие-либо черепахи с income = low
и ложью, если это не так. Затем вы уменьшаете количество дубликатов в этом списке и в итоге получаете либо один [true]
(если все верно), либо один [false]
(если все ложно), либо true и false [true false]
или [false true]
если некоторые верны, а некоторые ложны. Затем вы смотрите на число записей в этом сокращенном списке и сравниваете его с 2. Это произойдет, когда хотя бы у одного соседа есть такие черепахи, а у одного - нет. Я подозреваю, что это не то, что вы хотите. Если вы хотите, чтобы ровно в двух соседних заплатах была хотя бы одна черепаха с income = low
, то что-то вроде
count neighbors with [any? turtles-here with [income = low]] = 2
должно сделать это. Если, с другой стороны, вы хотите, чтобы у соседей было ровно две черепахи с income = low
, то вы бы хотели
neighbors with [count turtles-here with [income = low] = 2]
Мне не понятно, за кем вы находитесь.
Увидев вопрос ниже я понимаю, что Дуди ищет первую интерпретацию. Если это так, то поиск среди всех кандидатов патча с наименьшим value
будет (как они сделали в своем исходном коде)
let potential-targets patches with [count neighbors with [any? turtles-here with [income = low]] = 2]
let target min-one-of potential-targets [value]
Надеюсь, это поможет вам начать, Чарльз