Я работаю над моделью в Netlogo, и у меня возникают проблемы с пониманием того, как настроить «эксперимент». В моей модели у меня есть матрица, в которой есть все значения, которые меня интересуют (всего 6), и матрица обновляется всякий раз, когда выполняется условие (каждый раз, когда убивают X черепах), в основном снимая снимок модель на тот момент. Предыдущие значения в матрице очищаются, поэтому матрица представляет собой матрицу 1x6, а не 10000x6, причем для каждого снимка обновляется только одна строка.
То, что я хотел бы сделать, - это установить эксперимент, чтобы запустить мою модель несколько сотен раз, собирая эту матрицу каждый раз для первого числа снимков Х или до появления тиков Y. Но я не вижу способа сделать это в настройке эксперимента?
Можно ли это сделать, или мне нужно создать 100x6 (100 снимков), а затем просто как-то экспортировать эту матрицу в CSV?
Я никогда не проводил эксперимент в Netlogo, так что это может быть очень легко сделать или просто невозможно.
Ответы:
Если я правильно понимаю ваш вопрос, то вы хотите, чтобы во время пробега сообщалось о 6 значениях на определенных тиках. Эти галочки выбираются по условию, а не по определенному количеству галочек. NetLogo имеет инструмент управления экспериментом под названием BehaviorSpace. Настроить несколько сотен прогонов очень просто (возможно, с разными значениями для любых входов на ползунках и т. Д.). Это не так просто, чтобы выводить только на определенных тиках.
Диалоговое окно BehaviorSpace имеет галочку для каждого тика или только в конце. Если он установлен на каждый тик, то вы можете экспортировать свои шесть чисел каждый тик автоматически. В вашем случае это будет легче сделать, чем пытаться, и выводить только изредка. Вы можете добавить седьмой репортер, который имеет значение true / false для того, будет ли матрица сбрасываться в этом тике. Тогда все, что вам нужно сделать в постобработке, это выбрать строки, в которых этот седьмой репортер верен.
Если вы хотите запустить модель для ровно N снимков, вам также необходимо установить глобальную переменную, которая будет увеличивать каждую точку снимка. Тогда ваши настройки BehaviorSpace будут использовать этот счетчик для условия остановки.
источник
Я не уверен, что понимаю ваш вопрос, но обычно у вас есть функция Setup и функция Run, правильно? Поэтому я предполагаю, что приведенная ниже структура кода должна соответствовать тому, что вы ищете. Я давно не использовал netlogo, поэтому точный матричный код вам придется выяснить самостоятельно.
источник