Прежде всего, вы, вероятно, не должны думать с точки зрения циклов.NetLogo имеет множество примитивов, которые работают с наборами агентов (например, ask
и of
) и со списками (например, foreach
и map
), но вам почти никогда не нужно писать явный цикл с индексом, который вы увеличиваете.
Еще одно замечание о вашем коде: вы перевернули множественное число и имя единственного числа при объявлении своих пород.Множественное число должно стоять на первом месте, поэтому оно должно быть breed [ xs x ]
вместо breed [ x xs ]
.
Теперь, что касается вашей конкретной проблемы: вам не нужен patch-here
, поскольку NetLogo также предоставляет <breeds>-here
примитив, который делает то, что вам нужно, немного более напрямую.
Что касается получения максимальной энергии всех xs
на пути, вы можете просто использовать max
примитив:
breed [ xs x ]
breed [ ys y ]
xs-own [ energy]
ys-own [ energy ]
to move-y
ask ys [
if count xs-here > 2 [
set energy max [ energy ] of xs-here
set breed xs
]
]
end
Обратите внимание, что результаты могут отличаться в зависимости от того, изменяете ли вы породу текущего y
на xs
до или после установки energy
.Я дам вам попытаться выяснить, почему.