Overview of a Simulation Study

  1. 시스템 이해하기 (시스템에 관한 사전지식 등)
  2. 목표를 분명히 하기
  3. 모델에 대한 묘사 공식화하기
  4. 모델링 소프트웨어로 변환하기
  5. 프로그램 확인하기(verify, debugging)
  6. 모델 확인하기(vaildate)
  7. 실험 디자인하기
  8. 모델 실행하기
  9. 결과에 대한 insight를 얻고 분석하여 문서화하기
모델을 테스트하는 3단계는 Vaildation, Verification, Debugging이다. Verification은 모델 formulation이 소프트웨어에서 정확하게 실행되는지 확인하는 것이다. 즉, 원하는대로 프로그램이 실행되는지 확실히 하는 것이다. 이 과정에서 실수를 찾고 고치는 노력이 요구되며 모델링의 효율을 높이기 위해 가능한 빨리 테스트를 시작하고 코드를 지속적으로 테스트해야한다. (디버깅도 verification의 한 부분이다.) Vaildation은 모델이 실제 상황을 충분히 잘 반영하고 있는지 확인하는 것이다. ABM에서는 특히 예측되지 않은 결과(Unexpected Result)에 대한 주의가 필요하다. 결과가 새롭고(novel) 중요한지, 모델 디자인은 의심스럽지 않은지, 프로그래밍 실수가 있는지 등을 확인해야한다.

Common Kinds of Errors

흔히 발생하는 에러들은 다음과 같다.

  • Typographical Errors (타이핑을 잘못한 경우)
  • Syntax Errors (잘못된 구문)
  • Misunderstanding Primitives (원래 생각했던대로 정확하게 구현을 못한 경우)
  • Wrong Display Setting
  • Run-Time Errors (프로그램을 실행할 때, 컴퓨터가 다룰 수 없는 무언가가 있는 경우)
  • Logic Errors (잘못된 식, 부정확한 조건 등)
  • Formulation Errors (가정, 알고리즘, 파라미터 값에 대한 에러, validation issues)

  • Techniques for Debugging and Testing

    실수를 줄이기 위해서는 Debugging과 Testing 과정이 중요하며 다음과 같은 기법들이 있다.

  • Syntax Checking (코드 작성시 수시로 syntax를 확인하는 습관을 가지는 것)
  • Visual Testing (시각적으로 확인하는 것)
  • Print Statement (어떻게 작동하는지 프린트해서 확인하는 것)
  • Spot Tests with Agent Monitors (NetLogo View에 있는 Agent Monitor로 확인하는 것)
  • Stress Tests (extreme 값을 파라미터나 input으로 넣어 프로그램을 실행하는 것, 평범한 조건에서 숨겨진 에러를 발견할 수도 있다.),
  • Test Procedure (중간 output을 만들어 테스트 해보는 것)
  • Test Programs (특정한 프로그램 아이디어를 테스트하기 위해 짧은 프로그램으로 분리하여 실행하는 것)
  • Code Reviews (동료들과 리뷰해보는 것, 다른 사람이 확인하면 실수가 발견될 수 있고 코드를 잘 정리하고 이해하기 쉽게 하기위해서)
  • Statistical Analysis of File OutPut (예상했던대로 모델이 formulation 되었는지 확인하기 위해 모델의 핵심 부분을 file output으로 적어 분석해보는 것)
  • Independent Reimplementation of Submodels (엑셀이나 R, Python 등 다른 플랫폼으로 확인해보는 것)
  • Documentation of Tests(사용된 test의 종류, 모델을 실행한 방법과 결과 등을 문서화하는 것)