2014-09-02 3 views
2

NetLogo에서 모델에 대한 간단한 코드를 작성했습니다. 동시에 모델은 문헌에서 상미 분 방정식을 통해 잘 연구된다. 이제는 NetLogo와 Matlab (미분 방정식을 푸는 데 사용되는 모델)의 일부 플롯을 비교하고 싶습니다. NetLogo에서 "ticks"명령을 사용하여 Matlab이 시간을 초 단위로 사용합니다. NetLogo 및 Matlab에서 얻은 플롯을 비교하기 위해 어떤주의 사항 (변경 사항)을 명심해야합니까?시간 규모 혼동 (NetLogo)

+0

관련 항목 : http://stackoverflow.com/q/3571485/86485 –

답변

2

일반적으로 NetLogo의 플롯의 진드기 축은 MatLab 플롯의 시간 축의 일정한 스칼라이어야합니다. 스칼라는 흔히 시뮬레이션에서 dt 또는 "스텝 크기"라고 표시됩니다. 틱당 시간입니다. NetLogo를 사용하여 미분 방정식을 방금 풀었을 경우 (가능하면 은 아니지만 권장), 명시 적으로이 값을 MatLab에서 수치 적으로 해결할 때와 같이 설정해야합니다. 그러나 대부분의 NetLogo 모델에서는 단계 크기가 암시 적입니다.

모델에서 크기를 단계에 해당 일반적인 매개 변수 : 에이전트의

  • 속도로 성장 또는 쇠퇴의
  • 요금

그래서 확산

  • 요금, 예를 들어, 우리는 속도 제한이 100kph (= (100000 m)/(60 min * 60 sec) = 27.8 m/s) 인 거리에서 교통량을 모델링하고 있으며 패치 크기는 1m이고 대리인은 틱당 0.5를 여행 한 다음 우리는 다음을가집니다.

    27.8 m/s = (0.5 patches/tick) * (1 m/patches)/(step-size s/tick) = (0.5 m/tick)/(step-size s/tick) 
    
    step-size s/tick = (0.5 m/tick)/(27.8 m/s) = 0.018 s/tick 
    

    그래서이 경우 각 틱은 약 0.018 초입니다.

    기본적으로 미분 방정식의 "초당"매개 변수에 해당하는 모델의 "per tick"매개 변수를 찾아야합니다. 그런 다음이 매개 변수를 비교하여 틱당 몇 초가 있는지 확인할 수 있어야합니다.

    또는 플롯을 비교하고 어떻게 정렬되는지보고 그런 다음 단계 크기를 결정할 수 있습니다. 그런 다음 뒤로 거꾸로 작업하여 모델에서 단계 크기를 결정하는 매개 변수를 파악할 수 있습니다.