#netlogo
#netlogo
Вопрос:
Я создаю модель, в которой черепахи «ищут» подмножество исправлений для ресурса в соответствии с разными критериями поиска.
Я пытаюсь создавать отчеты, которые возвращают отсортированный список или набор агентов исправлений, которые черепаха может затем использовать в качестве маршрута для своего поиска.
По какой-то причине у меня возникли проблемы с сохранением маршрута в переменной, принадлежащей черепахе.
примером репортера является:
to-report availability
let sorted-patches sort-on [ ( (space - occupants) / space ) ] patches with [space > 0]
report sorted-patches
end
когда я делаю show availability
это в консоли, он выводит то, что я ожидаю, упорядоченный список исправлений.
Но если я это сделаю
let test-variable availability
show test-variable
он возвращает
ERROR: Nothing named TEST-VARIABLE has been defined.
является ли это проблемой области видимости, я не могу использовать let
в качестве наблюдателя?
Это проблема типа? Могу ли я не хранить набор агентов как именованную переменную, принадлежащую черепахе?
Есть ли способ сделать то же самое со списком вместо набора агентов?
Спасибо
Комментарии:
1. Я только что попробовал
let test 3
иshow test
в консоли и получил ту же ошибку, похоже, это вероятная проблема, каков обходной путь?2. Я добавил
test-variable
globals
и использовалset
, и это сработало, поэтому я добавлю это в качестве ответа завтра, если не будет лучшей работы или способа создать переменную в качестве наблюдателя, используяlet
размещенную консоль.
Ответ №1:
Судя по вашему описанию, это проблема с областью действия. Но проблема не в том, что вы пытаетесь использовать let
с наблюдателем, это область действия let
. NetLogo на самом деле не является интерактивным в том смысле, который вы пытаетесь сделать — переменная, созданная с помощью let
, выбрасывается в конце строки.
Если вы введете let test 3
, нажмите enter, затем введите show test
, вы получите ту же ошибку. Однако, если вы введете let test 3 show test
, он вернет 3.
Зачем вам это нужно из консоли? Если это для тестирования, то вы можете посмотреть на это так, как вы уже нашли — просто show availability
. Если вы используете его для черепах во время работы модели, то он не является интерактивным, и проблем нет.
Комментарии:
1. да, я привык пробовать вещи, в которых я не уверен, в терминале с помощью R или python, прежде чем добавлять их в файл. Спасибо