Pengaturan Eksperimen NetLogo

9

Saya sedang mengerjakan model di Netlogo dan saya mengalami masalah dalam memahami cara mengatur "percobaan". Dalam model saya, saya memiliki matriks yang memiliki semua nilai yang saya tertarik (total 6) dan matriks diperbarui setiap kali kondisi terpenuhi (setiap kali X turtles dimatikan) pada dasarnya menangkap snapshot dari model pada saat itu. Nilai-nilai sebelumnya dalam matriks dihapus, sehingga matriks adalah 1x6, bukan matriks 10.000x6 dengan hanya satu baris yang diperbarui untuk setiap foto.

Apa yang ingin saya lakukan adalah membuat percobaan untuk menjalankan model saya beberapa ratus kali, mengumpulkan matriks ini setiap kali untuk jumlah snapshot X pertama atau sampai kutu Y terjadi. Tetapi saya tidak dapat melihat cara untuk melakukan itu di pengaturan percobaan?

Apakah ini mungkin dilakukan, atau haruskah saya membuat 100x6 (100 foto) dan kemudian mengekspor matriks itu ke CSV?

Saya tidak pernah membuat percobaan di Netlogo, jadi ini mungkin sangat mudah dilakukan atau sama sekali tidak mungkin.

Diesel
sumber
Saya melakukan jawaban menggunakan BehaviorSpace karena saya pikir itu akan menjadi yang paling mudah. Tetapi tidak ada masalah dengan membuat file csv dan menambahkan setiap snapshot saat dibuat. Artinya, Anda tidak perlu memiliki matriks 100x6 dan mengekspornya. Alasan saya tidak merekomendasikan pendekatan ini adalah karena Anda juga mengatakan Anda ingin beberapa ratus menjalankan secara terpisah, dan ini akan memberi Anda file csv terpisah untuk setiap proses.
JenB

Jawaban:

3

Jika saya memahami pertanyaan Anda dengan benar, maka Anda ingin 6 nilai dilaporkan pada kutu tertentu selama proses. Kutu-kutu itu dipilih dengan memenuhi suatu kondisi daripada sejumlah kutu tertentu. NetLogo memiliki alat manajemen eksperimen yang disebut BehaviorSpace. Sangat mudah untuk mengatur beberapa ratus proses Anda (berpotensi dengan nilai yang berbeda untuk setiap input pada slider dll). Tidak mudah untuk hanya menampilkan kutu tertentu.

Kotak dialog BehaviorSpace memiliki tanda centang untuk setiap centang atau hanya pada akhir. Jika Anda mengaturnya ke setiap tick, maka Anda dapat mengekspor enam angka Anda setiap tick secara otomatis. Dalam kasus Anda, mungkin akan lebih mudah untuk melakukan itu daripada mencoba dan hanya menghasilkan sesekali. Anda bisa menambahkan reporter ketujuh yang benar / salah untuk apakah matriks sedang disetel ulang centang ini. Maka yang harus Anda lakukan dalam post-processing adalah memilih baris di mana reporter ketujuh itu benar.

Jika Anda ingin menjalankan model untuk snapshot N persis, maka Anda juga perlu mengatur variabel global yang bertambah setiap titik snapshot. Pengaturan BehaviorSpace Anda kemudian akan menggunakan penghitung itu untuk kondisi berhenti.

JenB
sumber
2

Saya tidak yakin saya mengerti pertanyaan Anda, tetapi biasanya Anda akan memiliki fungsi Pengaturan dan fungsi Jalankan, benar? Jadi saya menduga struktur kode di bawah ini harus jenis apa yang Anda cari. Saya belum menggunakan netlogo dalam beberapa saat jadi kode matriks yang tepat Anda harus mencari tahu sendiri.

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
sumber