Настройка эксперимента NetLogo

9

Я работаю над моделью в Netlogo, и у меня возникают проблемы с пониманием того, как настроить «эксперимент». В моей модели у меня есть матрица, в которой есть все значения, которые меня интересуют (всего 6), и матрица обновляется всякий раз, когда выполняется условие (каждый раз, когда убивают X черепах), в основном снимая снимок модель на тот момент. Предыдущие значения в матрице очищаются, поэтому матрица представляет собой матрицу 1x6, а не 10000x6, причем для каждого снимка обновляется только одна строка.

То, что я хотел бы сделать, - это установить эксперимент, чтобы запустить мою модель несколько сотен раз, собирая эту матрицу каждый раз для первого числа снимков Х или до появления тиков Y. Но я не вижу способа сделать это в настройке эксперимента?

Можно ли это сделать, или мне нужно создать 100x6 (100 снимков), а затем просто как-то экспортировать эту матрицу в CSV?

Я никогда не проводил эксперимент в Netlogo, так что это может быть очень легко сделать или просто невозможно.

дизель
источник
Я сделал ответ, используя BehaviorSpace, так как думаю, что это будет проще всего. Но нет проблем с созданием CSV-файла и добавлением каждого снимка по мере его создания. То есть вам не нужно иметь матрицу 100x6 и экспортировать ее. Причина, по которой я не рекомендую такой подход, заключается в том, что вы также говорите, что хотите несколько сотен отдельных прогонов, и это даст вам отдельный файл csv для каждого прогона.
JenB

Ответы:

3

Если я правильно понимаю ваш вопрос, то вы хотите, чтобы во время пробега сообщалось о 6 значениях на определенных тиках. Эти галочки выбираются по условию, а не по определенному количеству галочек. NetLogo имеет инструмент управления экспериментом под названием BehaviorSpace. Настроить несколько сотен прогонов очень просто (возможно, с разными значениями для любых входов на ползунках и т. Д.). Это не так просто, чтобы выводить только на определенных тиках.

Диалоговое окно BehaviorSpace имеет галочку для каждого тика или только в конце. Если он установлен на каждый тик, то вы можете экспортировать свои шесть чисел каждый тик автоматически. В вашем случае это будет легче сделать, чем пытаться, и выводить только изредка. Вы можете добавить седьмой репортер, который имеет значение true / false для того, будет ли матрица сбрасываться в этом тике. Тогда все, что вам нужно сделать в постобработке, это выбрать строки, в которых этот седьмой репортер верен.

Если вы хотите запустить модель для ровно N снимков, вам также необходимо установить глобальную переменную, которая будет увеличивать каждую точку снимка. Тогда ваши настройки BehaviorSpace будут использовать этот счетчик для условия остановки.

JenB
источник
2

Я не уверен, что понимаю ваш вопрос, но обычно у вас есть функция Setup и функция Run, правильно? Поэтому я предполагаю, что приведенная ниже структура кода должна соответствовать тому, что вы ищете. Я давно не использовал netlogo, поэтому точный матричный код вам придется выяснить самостоятельно.

globals your-1by6-matrix your-100by6-matrix

to setup
  ;reset your experiment
end

to run
  ;run your experiment
end

to run100times
  repeat 100[
    setup
    run
    ;save your 1by6matrix into your 100by6matrix
  ]
  ;use your 100by6matrix to plot or export
end
Jumboman
источник