Я работаю с довольно большим количеством прогонов, и большинство из них будут прерваны. Могу ли я написать Final Command, которая удаляет прерванные прогоны, чтобы ускорить процесс и/или уменьшить мои файлы csv?Netlogo BehaviorSpace Optmization - Удалить отмененные прогоны - Заключительная команда
ответ
Нет ничего, что позволило бы вам сделать это прямолинейно. И все равно это не сильно ускорит ситуацию.
Если размер ваших файлов csv действительно является проблемой, то проще всего отфильтровать прерванные прогоны в той программе анализа данных, которую вы используете.
Единственная альтернатива, о которой я могу думать, это написать собственный код эксперимента. Предполагая, что у вас есть stop-condition?
репортер и вы set aborted? true
, когда бег прерывается, вы могли бы сделать что-то вдоль линий:
extensions [ csv ]
globals [ aborted? ]
to experiment
let run-number 1
let file-name "experiment.csv"
if file-exists? file-name [ file-delete file-name ]
file-open file-name
foreach [ 1 2 3 ] [ ; vary x
set x ?
foreach [ "a" "b" "c" ] [ ; vary y
set y ?
set run-number run-number + 1
setup
while [ not stop-condition? ] [ go ]
if not aborted? [
file-print csv:to-row (list
run-number
x
y
(count turtles)
; whatever else you want to measure...
)
]
if run-number mod 10 = 0 [ file-flush ]
]
]
file-close-all
end
Это предполагает, что x
и y
, соответственно, слайдер и Chooser виджет. Если вы хотите изменить глобальные переменные, вы должны быть осторожны, чтобы не переопределять их при вызове clear-all
в настройках.
Как вы можете видеть, все это далеко не идеально и, вероятно, подвержено ошибкам.