Cài đặt thử nghiệm NetLogo


9

Tôi đang làm việc trên một mô hình trong Netlogo và tôi gặp vấn đề trong việc hiểu cách thiết lập "thử nghiệm". Trong mô hình của tôi, tôi có một ma trận có tất cả các giá trị mà tôi quan tâm (tổng cộng 6) và ma trận được cập nhật bất cứ khi nào một điều kiện được đáp ứng (mỗi khi rùa X bị giết) về cơ bản chụp một ảnh chụp nhanh mô hình tại điểm đó. Các giá trị trước đó trong ma trận sẽ bị xóa, vì vậy ma trận là 1x6, không phải là ma trận 10000x6 chỉ có một dòng được cập nhật cho mỗi ảnh chụp.

Những gì tôi muốn làm là thiết lập một thử nghiệm để chạy mô hình của tôi vài trăm lần, thu thập ma trận này mỗi lần cho số lần chụp X đầu tiên hoặc cho đến khi xảy ra dấu Y. Nhưng tôi không thể thấy một cách để làm điều đó trong thiết lập thử nghiệm?

Điều này có thể thực hiện được không, hoặc tôi sẽ phải tạo 100x6 (100 ảnh chụp nhanh) và sau đó chỉ cần xuất ma trận đó sang CSV bằng cách nào đó?

Tôi chưa bao giờ thiết lập một thử nghiệm trong Netlogo, vì vậy điều này có thể cực kỳ dễ thực hiện hoặc hoàn toàn không thể.


Tôi đã trả lời bằng BehaviorSpace vì tôi nghĩ đó là cách dễ nhất. Nhưng không có vấn đề gì với việc tạo tệp csv và nối thêm từng ảnh chụp khi nó được tạo. Đó là, bạn không cần phải có ma trận 100x6 và xuất nó. Lý do tôi không khuyến nghị phương pháp này là bạn cũng nói rằng bạn muốn hàng trăm lần chạy riêng biệt và điều này sẽ cung cấp cho bạn một tệp csv riêng cho mỗi lần chạy.
JenB

Câu trả lời:


3

Nếu tôi hiểu chính xác câu hỏi của bạn, thì bạn muốn 6 giá trị được báo cáo tại các tích tắc cụ thể trong quá trình chạy. Những con bọ ve này được chọn bằng cách đáp ứng một điều kiện chứ không phải là một số lượng bọ ve nhất định. NetLogo có một công cụ quản lý thử nghiệm có tên BehaviorSpace. Thật đơn giản để thiết lập hàng trăm lượt chạy của bạn (có thể có các giá trị khác nhau cho bất kỳ đầu vào nào trên thanh trượt, v.v.). Nó không đơn giản để chỉ xuất ra trên một số tích tắc.

Hộp thoại BehaviorSpace có một dấu kiểm cho mỗi đánh dấu hoặc chỉ ở cuối. Nếu bạn đặt nó ở mỗi tick, thì bạn có thể tự động xuất sáu số cho mỗi tick. Trong trường hợp của bạn, có thể dễ dàng thực hiện điều đó hơn là thử và chỉ thỉnh thoảng xuất ra. Bạn có thể thêm một phóng viên thứ bảy đúng / sai cho dù ma trận có được đặt lại đánh dấu này hay không. Sau đó, tất cả những gì bạn phải làm trong xử lý hậu kỳ là chọn các dòng trong đó phóng viên thứ bảy là đúng.

Nếu bạn muốn chạy mô hình cho chính xác N snapshot, thì bạn cũng cần phải thiết lập một biến toàn cục được tăng lên mỗi điểm chụp nhanh. Cài đặt BehaviorSpace của bạn sau đó sẽ sử dụng bộ đếm đó cho điều kiện dừng.


2

Tôi không chắc là tôi hiểu câu hỏi của bạn, nhưng thông thường bạn sẽ có chức năng Cài đặt và chức năng Chạy, đúng không? Vì vậy, tôi đoán cấu trúc mã dưới đây sẽ là loại bạn đang tìm kiếm. Tôi đã không sử dụng netlogo trong một thời gian vì vậy mã ma trận chính xác bạn sẽ phải tự mình tìm ra.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.