Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제1 - 오류를 찾아라~
안녕하세요!
이번 글은 3장 Exercise 3.1에 등장하는 “Find the errors” 문제를 다룹니다. 원문에서는 그림 3.9의 네 가지 다이어그램 각각에 명백한 오류가 하나씩 숨어 있다고 하죠. Stella 같은 시스템다이내믹스(SD) 소프트웨어에서는 이런 연결을 시도해도 불가능하며, 저자가 “별도 그림 프로그램을 사용해 만든 고의적 에러 사례”라고 합니다.
1. 왜 이런 에러 예시가 있을까?
저량(Stock)과 유량(Flow)는 시스템다이내믹스 모델링의 기본 구조입니다.
- 저량은 누적된 양(예: 인구, 물, 자본 등)을 나타내고,
- 유량는 그 양이 들어오고( inflow) 나가는( outflow) 경로를 의미합니다.
규칙은 간단합니다:
- 유량은 “저량”과 “구름(Cloud)” 사이를 오가야 한다. (Cloud는 시스템 경계를 의미함)
- Converter(변환기)는 물질이 지나가는 경로가 아니라, 계산·정보만 제공하는 요소이다.
- 저량은 유량을 통해서만 값이 변한다
- 저량은 스스로에게 직접 “물질 이동”을 할 수 없다.
그럼 에러를 하나씩 살펴봅시다.
2. 에러 다이어그램별 해설
(1) 왼쪽 위 그림
- 오류 포인트: 저량에서 나온 유량이 converter로 “바로” 연결되어 종료.
- 왜 문제인가?
- 유량은 물질이 실제로 이동하는 경로입니다. 흐름의 끝은 반드시 다른 저량이거나 구름이어야 하죠.
- converter는 단지 수식(방정식)이나 계산을 하는 데 쓰이는 도구이므로, 거기서 유량가 멈춰서는 안 됩니다.
(2) 오른쪽 위 그림
- 오류 포인트: converter를 거쳐 저량 간 물질 흐름이 연결되어 있음.
- 왜 문제인가?
- converter를 마치 “파이프”처럼 사용하고 있습니다.
- 하지만 converter는 “이 변수 = 어떤 식(수식)” 역할만 할 뿐, 물질(양)이 그 안을 지나다닐 수 없습니다.
- 저량→(유량)→저량 또는 저량→(유량)→구름 구조가 되어야 하는데, 여기서는 converter가 유량 경로로 쓰이고 있어 명백히 잘못되었죠.
(3) 왼쪽 아래 그림
- 오류 포인트: 한 저량이 자기 자신에게 직접 물질을 보내거나, 유량 둘이 서로 교차 연결되어 저량이 꼬이는 형태.
- 왜 문제인가?
- 저량이 “자기 자신을” 채우는 식으로 돌아가는 구조는 허용되지 않습니다. (self-flow는 불가)
- 유량이 서로 교차하는 것도 괜찮을 때가 있지만, 그 사이에 구름이나 다른 저량이 필요한데, 이 그림은 직접 꼬여버려서 논리적 물질 경로가 성립하지 않는 상태입니다.
- Stella에서도 이런 식으로 끼워 맞추면 오류로 거부됩니다.
(4) 오른쪽 아래 그림
- 오류 포인트: 저량이 converter와 혼동되거나, 종착점이 구름인지 저량인지 모호함.
- 왜 문제인가?
- 그림상, 오른쪽 끝이 converter인지 구름인지 헷갈리는 기호를 썼는데, 물질이 종착해야 할 곳(Stock/Cloud)이 명확치 않습니다.
- converter를 마치 “물질이 들어가는 그릇”처럼 묘사한 것이라면 역시 잘못되었다고 볼 수 있습니다.
3. 핵심 정리: 올바른 저량–유량 연결 규칙
유량 경로:
- 반드시 [저량] → [유량] → [저량 or 구름] 형태여야 한다.
- converter를 경로 중간에 끼워 물질이 지나다니게 만들 수 없다.
converter:
- 단순히 “계산이나 수식(정보 연결)”을 담당.
- 물질 저장·이동 역할 없음.
자기 자신에게 물질을 보내는 루프는 불가.
- 저량이 자신의 유량을 통해 다시 저량으로 들어가는 직결은 안 됨.
4. 블로그적으로 한마디
Exercise 3.1 “Find the errors”를 통해 깨닫는 점은, “시스템다이내믹스 소프트웨어가 자동으로 막아줄 만큼, 스톡–플로우 구조에 기본 원칙이 엄격하다”는 것입니다.
- “converter = 정보”
- “스톡↔플로우 = 물리적 이동”
이렇게 구분해 두면, 복잡해 보이는 모델도 안정적으로 구성할 수 있죠.
스텔라(Stella)나 벤심(Vensim) 같은 툴은 이런 기본 규칙을 코드 레벨에서 준수하도록 설계되어 있습니다.
“이 에러를 고의로 만들기 위해서는 그림 편집 프로그램을 따로 썼다”는 저자의 말이 이를 잘 보여주죠.
결국, “변수간 인과관계를 명확히 나누고, 물질 흐름(Stock↔Flow)과 정보 흐름(Converter↔Connector)을 섞지 말자”—이것이 이번 문제의 결론입니다.
요약
- 왼쪽 위: 유량이 converter에서 끝남 (잘못)
- 오른쪽 위: converter를 통해 물질 흐름이 연결됨 (잘못)
- 왼쪽 아래: 저량이 자신에게 직접 물질을 보내는 루프, 유량 교차 구조가 뒤엉킴 (잘못)
- 오른쪽 아래: converter와 구름(또는 저량) 구분이 불명확, 물질 종착지가 converter로 보임 (잘못)
이 네 가지 사례는 저량–유량 연결 원칙에 위배되는 전형적 실수입니다.
결론:
저량은 누적된 양, 유량은 그 양이 들어오고 나가는 경로, converter는 계산/정보 제공.
이 셋을 바르게 연결해야 “건전한 SD 모델”이 완성됩니다!
이상으로 Exercise 3.1 문제의 해설을 마칩니다. 다음 글에서는 저량–유량 모델링을 더 흥미롭게 만드는 또 다른 과제들을 다뤄볼 예정이니, 기대해 주세요!
댓글
댓글 쓰기