Создание «маршрутного» набора агентов исправлений

#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, прежде чем добавлять их в файл. Спасибо