글

Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제 10 “Joe의 소리 지표(Sound Index)로 피드백을 완성하자!”

이미지
  1. 문제 요약 Exercise 3.10 에서는 그림 3.13 모델을 완성하라는 과제입니다. Joe가 주유 할 때 실제로는 계기판 도, 자동 차단 펌프 도 보지 않고, 들려 오는 소리 를 통해 탱크가 차는 정도를 파악한다고 했습니다. 이 소리를 “Sound Index” 로 정의해, 주유 유량(gas flow at nozzle)이 어떻게 달라지는지를 피드백 으로 모델에 반영하라는 요구입니다. 주요 요구사항 Sound Index 를 3가지 값으로 정의 1: “free flowing” (유량 최대) 2: “some congestion” (어느 정도 줄여서 주유) 5: “거의 공간 없음” (주유 중단) fullness (탱크 충만율)에 따라 Sound Index가 어떻게 변하는지 식(or 그래픽 함수)으로 연결 Sound Index에 따라 노즐 유량(gas flow at nozzle) 이 변하도록 설계 40초 동안 시뮬레이션 실행 (1) 새로운 플로우 다이어그램 , (2) 방정식 리스트 , (3) Sound Index, Fullness, Gas Flow 시간 그래프 제시 2. Joe가 말한 조건 정리 최대 유량 : 1 gal/sec (노즐 풀 오픈) 탱크 용량(capacity of the tank) : 20 gal 가득 참(fullness) : gas in the tank capacity \dfrac{\text{gas in the tank}}{ \text{capacity} }   소리(Sound) 변화 1(“free-flowing”): 대략 0% ~ 80% (or 90%) fullness 구간에서 들린다고 가정 가능 2(“some congestion”): 예시로 80% ~ 90% 구간) 5(“running out of space”): 90% ~ 95% 이상이 되면 Joe가 유량을 완전히 끄거나 매우 작게 문제 본문 은 정확한 숫자가 약간 중복된 듯 보이지만, 대체로 “free-flow”는 fullness ...

Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제 9 “왜 유출 유량(Flow)은 저량(Stock)의 크기에 좌우될까?” 그리고 ±Stock의 필요성

이미지
  문제 요약 Exercise 3.9 에서는 Figure 3.2 에 나오는 성숙(maturation) , 노화(aging) , 사망(deaths) 유량들을 살펴봅니다. 이 유량들은 모두 “어떤 저량을 감소시키는(flows that drain a stock)” 역할을 하며, 각 유량 에 액션 커넥터(action connector) 가 연결되어 있습니다. 즉, 저량(Stock)의 크기가 유량(Flow)을 결정 한다는 관계를 보여 주는데, 문제는 “왜 이런 패턴이 잘 구성된 모델에서 당연히 기대되는가?” 를 설명하라고 요청합니다. 1. 문제 상황: 유량이 저량을 빠져나갈 때, 왜 저량 크기가 중요할까? Figure 3.2 예시: 인구 모델에서, Young population → (maturation) → Mature population Mature population → (aging) → Elderly population Elderly population → (deaths) → (제외 혹은 구름으로 빠짐) 이 세 가지 유량 은 각각 이전 저량을 감소 시키는 역할을 합니다. 따라서, 저량 크기 에 따라 “유량이 얼마나 클지”가 달라지는 것은 자연스러운 논리입니다. 예) “젊은 집단(young population)이 아무도 없다면, 성숙 해서 중년으로 넘어가는 사람도 없을 것” 이라는 해석. 2. 시스템다이내믹스의 기본 원칙: “유량(Flow)은 저량(Stock)에 달려 있다.” 시스템다이내믹스에서 잘 설계된 모델이라면, 다음이 거의 필연적으로 성립합니다. 만약 어떤 유량이 특정 저량에서 빠져나가는(flows out) 역할 을 한다면, 그 유량은 저량의 크기 에 의해 결정(또는 크게 영향을 받음)되어야 한다. 저량이 0이라면(사람이 0명, 물이 0리터, 자금이 0달러), 당연히 유출 유량은 발생할 수 없음. 이런 구조를 액션 커넥터(action connector) 로 표현 소프트웨어(Stella, Vensim 등)에서 Stock → Flow 로 이어지는...

Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제 5 “Biflow? 양방향 흐름에 대한 방정식을 세워 보자”

이미지
문제 요약 Exercise 3.5 에서는 그림 3.12 의 “biflow(양방향 유량)”를 다룹니다. 양방향(flow with two arrowheads) 이란, 유량이 “플러스 방향(증가)”일 수도, “마이너스 방향(감소)”일 수도 있음을 나타내죠. 흰색(비음영) 화살표: 성장(growth)이 양수 일 때, 인구(population)가 증가 검은색 화살표: 성장(growth)이 음수 일 때, 인구(population)가 감소 문제의 요구사항은: “Growth(성장) 유량에 대한 방정식을 작성하라.” 즉, growth = ?  1. 직관적 이해 일반적으로 인구가 증가 하는 이유는 출생률(birth rate) 때문이고, 인구가 감소 하는 이유는 사망률(death rate) 때문입니다. “유량”이라는 관점에서 성장(growth)은 growth = ( births ) − ( deaths ) 하지만 이 문제에서는 birth rate 와 death rate 가 각각 인구 규모에 곱해진 결과로 해석됩니다. 만약 인구가 population이라는 저량([P])이라면, 출생(births) = birth rate  ×  population \text{birth rate} \times \text{population}   사망(deaths) = death rate  ×  population \text{death rate} \times \text{population}   따라서 net growth (순증가)는 growth = (birth rate)  ×  population  −  (death rate)  ×  population .    2. 방정식 형태 간단히 묶어 쓰면: ( birth rate − death rate ) × population . 이 식은 “ birth rate ...

Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제 4 "이런 경우 단위를 어떻게 정해야 하나?

이미지
  이번 연습문제는 그림 3.11 에 등장하는 석유 공급망 모델에서, 각 저량(Stock)과 유량(Flow) 및 변수가 어떤 단위를 가져야 하는지 묻고 있습니다. 이미 문제에서 시간 단위 는 “개월(months)”, 그리고 쿠웨이트 매장량(Kuwait reserves) 은 “배럴(barrels of crude oil)”이라고 명시되어 있죠. 그렇다면 나머지 변수들(예: 쿠웨이트 내 저장고, 정제소 재고, 운송 중 석유, 소매 저장고 등)은 어떤 단위를 써야 할까요? 1. 기본 원칙: “[저량] vs. [유량] = [저량]/[시간]” 시스템다이내믹스(시스템다이내믹스)에서는 저량 과 유량 을 구분할 때, 저량(Stock) : “어느 시점에 쌓여 있는 양” (예: 배럴 단위) 유량(Flow) : “단위 시간 동안 이동·변화하는 양” = [저량의 단위] / [시간의 단위] 문제에서 시간은 “개월”로 잡았으니, 유량 단위는 보통 배럴/월(barrels per month) 형태가 됩니다. 2. 그림 3.11 변수별 단위 추정 아래는 대표적인 저량(Stock) 과 유량(Flow) 의 예시입니다. Kuwait Reserves 이미 문제에서 주어졌듯이, 단위: 배럴(barrels of crude oil) (실제로는 “억 배럴” 단위일 수도 있지만, 여기서는 단순히 “배럴”로 가정) Kuwait Oil in Storage 쿠웨이트 내 임시 저장고에 있는 원유 단위: 쿠웨이트 매장량과 같은 맥락이므로, 배럴(barrels of crude oil) Oil in Transit(운송 중인 석유) 배, 파이프라인 등을 통해 이동 중인 원유 이 역시 “현재 시점의 재고(저량)” 이므로,  배럴(barrels of crude oil) 로 표현 Refinery Stocks(정제소 재고) 정제소(Refinery)에 쌓여 있는 석유 (원유 또는 정제된 연료) 단위:   배럴(barrels of crude oil) Fuel Storage at Retail(소매점에 있...

Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제 3 “Weathering의 단위, 그리고 퇴적물(SEDIMENTS)의 단위는?”

이미지
  이번에는 Chapter 3 의 세 번째 연습 문제( Exercise 3.3 )를 살펴보겠습니다.  연습문제 3.4. 단위는 무엇인가요? 그림 3.11은 쿠웨이트에서 석유를 생산(채굴)해서 최종 소비에 이르기까지의 석유제품 흐름을 보여 주고 있습니다. 여기서 저량(Stocks)은 업계와 소비자가 공급·수요의 예측 불가능한 변동을 견뎌 낼 수 있도록 완충(Buffer) 역할을 수행합니다. 시간은 ‘월(months)’ 단위를 사용하고, 쿠웨이트 매장량(Kuwait reserves)은 ‘원유 배럴(barrels of crude oil)’ 단위를 사용한다고 할 때, 다른 변수들의 단위는 무엇이 되어야 할까요? 그림 3.5 (화성암과 퇴적물 저량)에서, 화성암(igneous rock)의 질량 을 “10억 톤(billions of metric tons)”으로 측정하고, 시간 을 “수억 년(hundreds of millions of years)” 단위로 잡는다면, Weathering(풍화 작용) 유량 과 퇴적물( Sediments) 저량 의 단위는 과연 어떻게 표현해야 할까요? 1. 저량(Stock)과 유량(Flow)의 단위 개념 시스템다이내믹스(시스템다이내믹스)에서는 저량(Stock)과 유량(Flow)의 단위를 구분하는 것이 핵심입니다. 저량(Stock) ‘Mass of Igneous Rock’ 화성암이 현재 얼마나 쌓여(축적) 있는지를 나타냅니다. 문제에서 “10억 톤(= billions of metric tons)”을 단위로 삼기로 했으니, 이 저량의 단위는 10억 톤 이 됩니다. 유량(Flow) ‘weathering(풍화 작용)’ 화성암 저량에서 퇴적물 저량으로 이동(전달)되는 물질의 양(질량)이 얼마나 되는지를 나타냅니다. 유량 단위는 “(저량의 단위) / (시간 단위)” 가 원칙입니다. 이번 문제에서 “시간(time)을 ‘수억 년(hundreds of millions of years)’ 단위”로 잡았으니, 유량(Weathering)의 단위 : ...

Andrew Ford 헌정 강의: 『Modeling the Environment』 Chapter 3 - 연습 문제 2 “학생 수 모델, 과연 좋은 시작일까?”

이미지
  안녕하세요! 이번에는 Chapter 3 의 연습 문제 2( Exercise 3.2 )를 함께 살펴보겠습니다. 문제에서는 그림 3.10 에 제시된 모델(프레시맨·소포모어·주니어·시니어 수를 각각 더해 ‘총학생 수’를 구하는 방식)이 시스템다이내믹스  모델로서 과연 적절한 출발점인지 묻고 있습니다. 1. 그림 3.10의 구조: 정말 단순한 합산? 그림 3.10 모델을 보면, Freshmen , Sophomores , Juniors , Seniors 라고 쓰인 4개의 원(사실상 컨버터나 변수 역할) 가운데에 total number of students (총학생 수)라는 원이 있고, 화살표로 ‘연결’되긴 했지만, 이는 단순히 4개 숫자를 더해 “현재 전체 학생 수가 몇 명인가?”를 보여주는 수준입니다. 언뜻 보면 “현재 대학에 재학 중인 1~4학년 학생 수를 모두 합쳤다” 는 점에서 일리가 있어 보입니다. Stella나 Vensim 같은 소프트웨어에서도 이런 구조로 간단히 합계를 낼 수 있죠. 하지만 , 이 그림만으로는 “학생 수가 시간에 따라 어떻게 변하는가?” 를 전혀 나타낼 수 없습니다. 시스템다이내믹스의 핵심은 시간적 변화(동태)인데, 여기선 그저 “정적(Static) 합산”만 하고 있어서, 저량(Stock) 과 유량(Flow) 의 개념을 구현하지 못하고 있다는 문제가 있습니다. 2. 시스템다이내믹스 관점에서 “좋은 시작”이 되려면? 시스템다이내믹스에서는 “시간에 따른 변화를 어떻게 표현할까?”가 제일 중요합니다. 저량(Stock) : 시스템에 쌓여 있는 양 유량(Flow) : 그 양이 들어오거나(outflow) 나가는(inflow) 경로 그렇다면, 대학 학생 수 모델 을 제대로 만들려면 어떻게 해야 할까요? 각 학년을 저량(Stock) 으로 표현 예: Freshmen(1학년), Sophomores(2학년), Juniors(3학년), Seniors(4학년)을 각각 “저량”으로 둠 학년 이동을 유량(Flow) 으로 표현 예: “1학년 → 2학...

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가 유량 경로로 쓰이고 있...