การตั้งค่าการทดสอบ NetLogo


9

ฉันกำลังทำงานกับโมเดลใน Netlogo และฉันมีปัญหาในการทำความเข้าใจวิธีตั้งค่า "การทดลอง" ในแบบจำลองของฉันฉันมีเมทริกซ์ที่มีค่าทั้งหมดที่ฉันสนใจ (ทั้งหมด 6 ตัว) และเมทริกซ์จะได้รับการอัปเดตทุกครั้งที่พบเงื่อนไข (ทุกครั้งที่เต่า X ถูกฆ่า) โดยทั่วไปจะจับภาพของ แบบจำลองที่จุดนั้น ค่าก่อนหน้าในเมทริกซ์จะถูกล้างดังนั้นเมทริกซ์คือ 1x6 ไม่ใช่เมทริกซ์ 10000x6 ที่มีการอัพเดตเพียงหนึ่งบรรทัดสำหรับแต่ละสแน็ปช็อต

สิ่งที่ฉันต้องการจะทำคือการตั้งค่าการทดสอบเพื่อเรียกใช้แบบจำลองของฉันหลายร้อยครั้งโดยรวบรวมเมทริกซ์นี้ในแต่ละครั้งสำหรับสแน็ปช็อต X จำนวนแรกหรือจนกว่าจะเกิดเห็บ Y แต่ฉันไม่เห็นวิธีในการตั้งค่าการทดสอบ

เป็นไปได้ที่จะทำหรือฉันจะต้องสร้าง 100x6 (100 ภาพรวม) แล้วส่งออกเมทริกซ์นั้นไปยัง CSV อย่างใด?

ฉันไม่เคยตั้งค่าการทดสอบใน Netlogo ดังนั้นนี่อาจเป็นเรื่องง่ายมากที่จะทำหรือเป็นไปไม่ได้เลย


ฉันได้คำตอบโดยใช้ BehaviorSpace เพราะฉันคิดว่ามันจะง่ายที่สุด แต่ไม่มีปัญหากับการสร้างไฟล์ csv และต่อท้ายแต่ละสแน็ปช็อตขณะที่สร้าง นั่นคือคุณไม่จำเป็นต้องมีเมทริกซ์ 100x6 และส่งออก เหตุผลที่ฉันไม่แนะนำวิธีการนี้ก็คือคุณบอกว่าคุณต้องการการวิ่งหลายร้อยครั้งและสิ่งนี้จะให้ไฟล์ csv แยกต่างหากสำหรับการวิ่งแต่ละครั้ง
JenB

คำตอบ:


3

หากฉันเข้าใจคำถามของคุณถูกต้องคุณต้องรายงาน 6 ค่าที่เห็บเฉพาะในระหว่างการดำเนินการ เห็บเหล่านั้นได้รับเลือกจากการประชุมตามเงื่อนไขมากกว่าเห็บจำนวนหนึ่ง NetLogo มีเครื่องมือจัดการการทดลองที่เรียกว่า BehaviorSpace เป็นเรื่องง่ายที่จะตั้งค่าการวิ่งหลายร้อยครั้ง (อาจมีค่าแตกต่างกันสำหรับอินพุตใด ๆ บนตัวเลื่อน ฯลฯ ) มันไม่ได้ตรงไปตรงมาที่จะส่งออกเฉพาะในเห็บบางอย่าง

กล่องโต้ตอบ BehaviorSpace มีเครื่องหมายถูกสำหรับทุกเห็บหรือท้ายที่สุดเท่านั้น หากคุณตั้งให้ทุกเห็บคุณสามารถส่งออกหมายเลขหกของคุณโดยอัตโนมัติ ในกรณีของคุณมีแนวโน้มที่จะทำเช่นนั้นง่ายกว่าการลองและส่งออกเป็นครั้งคราวเท่านั้น คุณสามารถเพิ่มนักข่าวคนที่เจ็ดที่เป็นจริง / เท็จได้ว่าเมทริกซ์จะถูกรีเซ็ตเห็บนี้หรือไม่ จากนั้นสิ่งที่คุณต้องทำในการโพสต์โพรเซสซิงคือเลือกบรรทัดที่นักข่าวคนที่เจ็ดเป็นจริง

หากคุณต้องการรันโมเดลสำหรับสแนปชอต N ทั้งหมดแน่นอนคุณจะต้องตั้งค่าตัวแปรส่วนกลางที่เพิ่มค่าแต่ละจุดสแนปชอต การตั้งค่า BehaviorSpace ของคุณจะใช้ตัวนับนั้นสำหรับเงื่อนไขหยุด


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.