NetLogo 실험 설정


9

Netlogo에서 모델을 작업 중이며 "실험"설정 방법을 이해하는 데 문제가 있습니다. 내 모델에는 관심있는 모든 값 (총 6 개)이있는 행렬이 있으며 조건이 충족 될 때마다 (X 거북이가 죽을 때마다) 기본적으로 스냅 샷을 캡처합니다. 그 시점에서 모델. 매트릭스의 이전 값이 지워 지므로 매트릭스는 1x6이며 10000x6 매트릭스가 아니라 각 스냅 샷에 대해 한 줄만 업데이트됩니다.

내가하고 싶은 것은 첫 번째 X 스냅 샷 수 또는 Y 틱이 발생할 때 까지이 행렬을 수집하여 모델을 수백 번 실행하는 실험을 설정하는 것입니다. 그러나 실험 설정에서 그렇게하는 방법을 볼 수 없습니까?

이것이 가능합니까, 아니면 100x6 (100 스냅 샷)을 만든 다음 해당 매트릭스를 어떻게 든 CSV로 내 보내야합니까?

Netlogo에서 실험을 한 적이 없었으므로이 작업을 수행하기가 쉽지 않거나 완전히 불가능할 수도 있습니다.


나는 그것이 가장 쉬운 것이라고 생각하면서 BehaviorSpace를 사용하여 답변을했습니다. 그러나 csv 파일을 만들고 각 스냅 샷을 만들 때 추가하는 데 아무런 문제가 없습니다. 즉, 100x6 매트릭스가 없어도 내보낼 수 있습니다. 이 방법을 권장하지 않는 이유는 수백 개의 개별 실행을 원한다고 말하고 각 실행마다 별도의 csv 파일을 제공하기 때문입니다.
JenB

답변:


3

귀하의 질문을 올바르게 이해하면 실행 중에 특정 틱으로 6 개의 값을보고 싶습니다. 이러한 진드기는 특정 진드기 수가 아닌 조건을 충족시킴으로써 선택됩니다. NetLogo에는 BehaviorSpace라는 실험 관리 도구가 있습니다. 수백 개의 런을 설정하는 것은 간단합니다 (슬라이더 등의 입력에 대해 다른 값으로 잠재적으로). 특정 진드기에서만 출력하는 것은 그렇게 간단하지 않습니다.

BehaviorSpace 대화 상자에는 모든 눈금 또는 끝에 만 확인 표시가 있습니다. 모든 눈금으로 설정 한 경우 모든 눈금마다 6 개의 숫자를 자동으로 내보낼 수 있습니다. 귀하의 경우 때때로 시도하고 출력하는 것보다 그렇게하는 것이 더 쉽습니다. 매트릭스가이 틱을 재설정하는지 여부에 대해 true / false 인 일곱 번째 리포터를 추가 할 수 있습니다. 그런 다음 사후 처리에서해야 할 일은 일곱 번째 리포터가 참인 행을 선택하는 것입니다.

정확히 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.