Налаштування експерименту NetLogo


9

Я працюю над моделлю в Netlogo, і у мене виникають проблеми з розумінням, як встановити "експеримент". У моїй моделі у мене є матриця, яка має всі значення, які мене цікавлять (всього 6), і матриця оновлюється щоразу, коли виконується умова (щоразу, коли X черепахи гинуть), в основному фіксуючи знімок модель на той момент. Попередні значення в матриці очищаються, тому матриця є матрицею 1x6, а не матрицею 10000x6, оновлюється лише один рядок для кожного знімка.

Що я хотів би зробити, це створити експеримент, щоб запустити свою модель кілька сотень разів, збираючи цю матрицю кожен раз для першого X числа знімків або до тих пір, поки Y тиків не відбулося. Але я не бачу способу зробити це в налаштуваннях експерименту?

Чи можливо це зробити, чи мені доведеться створити 100x6 (100 знімків), а потім якось експортувати цю матрицю в CSV?

Я ніколи не ставив експеримент в Netlogo, тому це може бути дуже просто зробити або просто бути абсолютно неможливим.


Я відповів, використовуючи BehaviorSpace, оскільки думаю, що це було б найпростіше. Але немає проблеми зі створенням файлу csv та додаванням кожного знімка під час його створення. Тобто вам не потрібно мати матрицю 100x6 та експортувати це. Причиною, що я не рекомендую такий підхід, є те, що ви також заявляєте, що хочете кілька сотень окремих прогонів, і це дасть вам окремий файл CSV для кожного запуску.
ДженБ

Відповіді:


3

Якщо я правильно розумію ваше запитання, то вам потрібно 6 значень, повідомлених під час конкретного тику під час пробігу. Ці кліщі вибираються, якщо вони відповідають умові, а не певній кількості кліщів. У NetLogo є інструмент управління експериментом під назвою BehaviorSpace. Налаштувати кілька сотень прогонів (можливо, з різними значеннями для будь-яких входів на повзунках тощо). Не так просто виводити лише певні кліщі.

Діалогове вікно BehaviorSpace містить галочку для кожної галочки або лише в кінці. Якщо ви встановили його на кожну галочку, ви можете експортувати свої шість номерів кожну галочку автоматично. У вашому випадку, ймовірно, це буде простіше зробити, ніж намагатися і виводити лише зрідка. Ви можете додати сьомого репортера, що відповідає дійсності / помилковості, чи матриця скидає цю галочку. Тоді все, що вам потрібно зробити в процесі обробки - це вибрати рядки, де справжній сьомий репортер є правдою.

Якщо ви хочете запустити модель для рівно N знімків, вам також знадобиться встановити глобальну змінну, що збільшує кожну точку знімка. Тоді ваші параметри поведінки будуть використовувати цей лічильник для умови зупинки.


2

Я не впевнений, що розумію ваше запитання, але зазвичай у вас буде функція настройки та функція запуску, правильно? Тому я здогадуюсь, що структура коду нижче повинна бути такою, яку ви шукаєте. Я не використовував 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.