netlogo - Произвольно выбрать соседний патч с большей высотой, какой-нибудь? команда

Мне задали вопрос о «случайном выборе соседнего участка с большей высотой». Мой код находится ниже.

Я считаю, что я обязан использовать "любой?" Команда, чтобы предотвратить получение проблемы «никто».

to move-up
let myelevPatch [elevation] of patch-here
let higherpatches neighbors with [elevation > myelevPatch] 
move-to one-of higherpatches
end

Я не могу обойти эту проблему, если вы можете помочь мне решить ее, это очень ценится


person Itsyaboi    schedule 19.12.2015    source источник
comment
Вы можете заменить [elevation] of patch-here просто на elevation. Черепаха имеет прямой доступ к переменным патча, на котором она стоит.   -  person Seth Tisue    schedule 19.12.2015
comment
Вы получаете сообщение об ошибке, неправильное поведение или что? Вы предоставили нам код и сказали, что у вас с ним проблема. Что это за проблема? Каковы ваши доказательства того, что ваш код неверен?   -  person Seth Tisue    schedule 19.12.2015


Ответы (1)


Ваш код кажется правильным, кроме случая none. Любой? потребляет набор агентов. соседи с возвращает набор агентов.

to move-up
    let myelev [elevation] of patch-here
    let higherpatches neighbors with [elevation > myelev] 
    if any? higherpatches
    [move-to one-of higherpatches]
end

Обратите внимание, что следующее эквивалентно:

if count higherpatches > 0
person mattsap    schedule 19.12.2015
comment
Обратите внимание, что я изменил имя вашей переменной myelevPatch на myelev, поскольку тип не является патчем. - person mattsap; 19.12.2015