열어 보기
모형(model, 모델)을 직접 만들기 전에 이미 만들어진 것을 열어 보겠습니다. 이 과목에서 모형과 모델은 같은 것을 가리킵니다. 남이 지은 집을 둘러보는 것과 같습니다. 어디에 무엇이 있는지를 알면 내가 지을 때 훨씬 수월합니다.
넷로고(NetLogo)
낱낱이 움직이는 모형을 만들고 실행해 보기 위해 만들어진 도구입니다. 자연 · 사회 · 교통 같은 분야의 모델 수백 개가 안에 들어 있어 바로 열어 볼 수 있고, 코드도 함께 볼 수 있습니다.
깔지 않고 웹 브라우저에서 바로 쓸 수 있습니다 — netlogoweb.org
열어 볼 모델 — 한 줄로 늘어선 자동차
자동차에 규칙 두 줄만 주었다고 합시다. 「앞이 비면 조금씩 빨라진다 · 바로 앞에 차가 있으면 그 차보다 조금 더 느려진다.」 이 규칙만으로 막히는 덩어리가 정말 생기는지 눈으로 확인해 보겠습니다.
여는 차례
- 브라우저에서 넷로고 웹으로 갑니다.
- 모델 목록에서 사회과학(Social Science) 갈래의 Traffic Basic을 고릅니다. 한 줄 도로에 자동차가 늘어선 교통 모델입니다.
- 화면이 뜨면 실행하기 전에 아래 표부터 채웁니다.
실행하기 전에 — 네 부분 찾기
시뮬레이션의 네 부분인 입력 · 규칙 · 시간 · 출력이 화면 어디에 있는지 찾아 적어 봅니다. 이것이 처음 보는 시뮬레이션을 읽는 방법입니다.
| 부분 | 화면 어디에 있나 | 무엇이 놓여 있나 |
|---|---|---|
| 입력 | 대개 왼쪽이나 위쪽 | 자동차 수, 빨라지는 정도, 느려지는 정도를 정하는 손잡이. 몇 개인지 세어 적는다 |
| 규칙 | 보이지 않는다 | 코드 탭을 열어야 나온다. 「규칙 읽기」 절에서 본다 |
| 시간 | 단추 옆의 숫자 | 몇 걸음째인지 세는 값. 시작과 멈춤 단추 |
| 출력 | 가운데 큰 그림과 그 옆 | 움직이는 자동차와, 시간에 따라 그려지는 그래프 |
단추를 누르는 순서가 있다
넷로고 모델에는 대개 단추가 둘 있습니다. 처음 상태를 만드는 단추와 시간을 흐르게 하는 단추입니다. 순서를 지켜야 합니다 — 먼저 처음 상태를 만들고, 그다음에 흐르게 합니다.
자동차 수처럼 처음 상태를 만들 때 쓰이는 값은 처음 상태를 다시 만들어야 반영됩니다. 돌아가는 도중에 손잡이를 움직이면 어떤 것은 반영되고 어떤 것은 안 되어 결과를 해석할 수 없게 됩니다.
네 부분 가운데 화면에서 못 찾은 것이 있나요? 못 찾았다면 그것이 어디에 숨어 있을지 짐작해 보세요.
실행해 보기
이제 실행합니다. 그런데 실행하기 전에 예상을 적으세요. 예상 없이 보면 무엇을 보든 「그렇구나」 하고 넘어가게 됩니다.
먼저 적을 것 — 예상
- 자동차들이 고르게 퍼져 달릴까, 아니면 몰렸다 흩어졌다 할까?
- 막히는 덩어리가 생긴다면, 그 덩어리는 어느 쪽으로 움직일까? 자동차와 같은 쪽? 반대쪽? 제자리?
- 오래 실행하면 막힘이 사라질까, 계속될까?
그리고 본다
시작 단추를 누르고 1분쯤 그냥 봅니다. 조작하지 말고 보기만 하세요. 처음에는 흩어져 있던 자동차들이 어느 순간 한쪽에 뭉치기 시작합니다.
자동차는 오른쪽으로, 덩어리는 왼쪽으로
이 모델에서 눈여겨볼 장면입니다. 자동차 한 대 한 대는 앞으로만 갑니다. 뒤로 가는 자동차는 하나도 없습니다. 그런데 막힌 덩어리는 뒤로 밀려납니다.
까닭은 이렇습니다. 덩어리 맨 앞의 차가 빠져나가는 동안, 맨 뒤에는 새 차가 와서 붙습니다. 그래서 덩어리를 이루는 차들은 계속 바뀌는데, 덩어리라는 「자리」는 뒤로 옮겨 갑니다.
아무도 이런 일이 일어나게 적지 않았습니다. 규칙 두 줄에서 저절로 나온 것입니다.
예상을 적어 둔 종이를 다시 봅시다. 덩어리가 움직이는 쪽을 맞혔나요? 「자동차와 같은 쪽」이나 「제자리」로 예상하기 쉽습니다. 예상이 틀렸다면 그 까닭을 찾는 데서 배울 것이 많습니다.
실제 도로에서 막힌 구간이 뒤로 밀려나는 것을 본 적이 있나요? 차를 타고 가다 이유 없이 막혔다가 풀린 경험과 이어 생각해 보세요.
조건 바꾸기
이제 손잡이를 만집니다. 규칙은 그대로 두고 조건만 바꿔 봅니다. 바꾸는 것은 한 번에 하나씩입니다.
해 보기 — 표를 채우며 실행한다
| 번호 | 자동차 수 | 느려지는 정도 | 막힘이 생기나 · 얼마나 오래가나 |
|---|---|---|---|
| 1(기준) | 처음 값 그대로 | 처음 값 그대로 | — |
| 2 | 아주 적게 | 그대로 | — |
| 3 | 아주 많게 | 그대로 | — |
| 4 | 기준으로 되돌림 | 0에 가깝게 | — |
| 5 | 기준으로 되돌림 | 아주 크게 | — |
4번과 5번 앞에서 자동차 수를 반드시 기준으로 되돌리세요. 되돌리지 않으면 「자동차도 많고 느려지는 정도도 크다」가 되어, 무엇 때문인지 알 수 없어집니다.
눈여겨볼 두 가지
자동차가 적을 때
한 대가 속도를 줄여도 뒤차와의 간격이 넉넉해 그 안에서 풀립니다. 흔들림이 생겨도 번지지 않고 사라집니다.
자동차가 많을 때
한 대가 속도를 줄이면 뒤차가 서고, 그 뒤차도 서고 줄줄이 이어집니다. 작은 흔들림이 큰 막힘으로 번집니다.
어느 지점을 넘으면 갑자기 달라진다
자동차 수를 조금씩 늘려 가며 실행해 보면 재미있는 것을 발견합니다. 처음에는 늘려도 별일이 없다가, 어느 지점을 넘는 순간 막힘이 생기기 시작합니다.
천천히 나빠지는 것이 아니라 갑자기 나빠집니다. 이런 것을 미리 알아내는 것이 시뮬레이션이 하는 일 가운데 하나입니다. 실제 도로에서라면 막혀 본 뒤에야 알게 됩니다.
그런데 이 모델의 규칙 두 줄에는 우연이 없습니다. 「가끔 잠깐 늦는다」 같은 규칙이 없는데, 첫 흔들림은 어디서 올까요? 처음 상태에서 옵니다. 처음 상태를 만들 때 자동차들을 무작위 자리에 무작위 속도로 흩어 놓으므로, 우연히 가까이 붙은 몇 대가 속도를 줄이고 그것이 막힘의 씨앗이 됩니다.
현실의 도로에서도 차들이 똑같은 간격과 속도로 달리는 일은 없습니다. 그래서 이 결과가 말해 주는 것은 「막힘의 원인은 사고가 아니라 작은 흔들림일 수 있다」는 쪽입니다.
막힘의 씨앗이 우연히 가까이 붙은 몇 대라면, 현실의 도로에서 씨앗이 덩어리로 자라지 않게 하는 대책으로 무엇을 떠올릴 수 있을까요?
규칙 읽기
마지막으로 규칙을 열어 봅니다. 넷로고에는 코드 탭이 있어 모델이 어떻게 만들어졌는지 그대로 볼 수 있습니다. 결과만 보여 주는 프로그램과 달리, 결과를 만든 규칙까지 확인할 수 있습니다.
읽을 때 겁먹지 않는 법
처음 열면 낯선 낱말이 가득합니다. 다 이해하려 하지 마세요. 찾을 것은 딱 하나입니다 — 「한 걸음마다 하는 일」이 적힌 곳.
대개 go라는 이름이 붙은 덩어리입니다. 그 안에 앞을 살피고, 속도를 올리거나 줄이고, 앞으로 나아가는 몇 줄이 있습니다.
찾아볼 것 세 가지
| 찾을 것 | 어떻게 찾나 | 확인할 것 |
|---|---|---|
| 앞을 살피는 줄 | 「앞에 차가 있나」를 묻는 부분. if 비슷한 말이 붙어 있다. | 몇 칸 앞까지 보는가 |
| 빨라지고 느려지는 줄 | 속도에 더하거나 빼는 부분. | 빨라지는 양과 느려지는 양이 같은가 |
| 우연이 들어간 줄 | random 비슷한 말이 있는 곳. | 처음 상태를 만드는 부분에만 있는가, 한 걸음마다 하는 일에도 있는가 |
규칙이 생각보다 짧다
코드를 다 읽고 나면 놀라게 됩니다. 한 걸음마다 하는 일이 열 줄 남짓입니다. 그 짧은 규칙에서 덩어리가 생기고, 뒤로 밀려나고, 어느 지점에서 갑자기 나빠지는 모든 일이 나왔습니다.
「낱낱의 규칙이 전체 모습을 만든다」는 것을 눈으로 확인한 셈입니다. 내가 만들 모델도 이만큼 짧아도 된다는 뜻이기도 합니다.
모델 설명도 함께 읽는다
넷로고 모델에는 설명 탭이 붙어 있습니다. 만든 사람이 무엇을 담았고 무엇을 뺐는지 적어 둔 곳입니다. 여기에 대개 이런 것들이 있습니다.
- 이 모델이 무엇을 보이려고 만들어졌는가
- 손잡이가 각각 무엇을 뜻하는가
- 해 볼 만한 것 — 만든 사람이 권하는 실험
- 더 넣어 볼 것 — 만든 사람이 권하는 확장. 이 교통 모델이라면 두 차선이 그렇습니다. 곧 이 모델이 담지 않은 것입니다
「더 넣어 볼 것」 항목이 바로 「덜어 낸 것을 적어 둔다」에 해당합니다. 담지 않은 것을 모두 적어 두지는 않으므로 신호등 · 끼어들기처럼 빠진 것은 읽는 사람이 찾아야 합니다. 잘 만든 모델은 스스로 한계를 밝혀 둡니다. 내가 만들 모델에도 덜어 낸 것을 적는 칸을 두어야 합니다.
해 보기 — 다른 모델 하나 더
- 넷로고 모델 목록에서 관심 있는 분야의 모델을 하나 더 고릅니다. 생태 · 사회 · 물리 무엇이든 좋습니다.
- 네 부분을 찾아 적습니다.
- 실행하기 전에 예상을 적고 실행합니다.
- 손잡이 하나를 골라 세 가지 값으로 실행해 표를 채웁니다.
- 설명 탭에서 「담지 않은 것」을 찾아 두 가지 적습니다.
「담지 않은 것」을 설명 탭에서 못 찾겠다면 직접 생각해 적으세요. 「이 모델에는 ○○이 없구나」를 알아채는 것이 모델을 읽을 줄 안다는 뜻입니다.
이 교통 모델에는 신호등이 없습니다. 신호등을 넣으면 결과가 어떻게 달라질까요? 그리고 그때 새로 필요해지는 손잡이는 무엇일까요?
핵심 정리
열어 보기
- 처음 보는 시뮬레이션은 네 부분을 찾는 데서 시작한다.
- 단추는 처음 상태를 만들고 → 시간을 흐르게 하는 순서다.
- 처음 상태를 만들 때 쓰이는 값은 처음 상태를 다시 만들어야 반영된다.
실행해 보기
- 실행하기 전에 예상을 적는다. 없으면 무엇을 보든 그냥 넘어간다.
- 자동차는 앞으로만 가는데 막힌 덩어리는 뒤로 밀려난다.
- 맨 앞이 빠져나가는 동안 맨 뒤에 새 차가 붙기 때문이다.
조건 바꾸기
- 바꾼 것을 다시 되돌려 놓고 다음 조건으로 넘어간다.
- 차가 적으면 흔들림이 사라지고, 많으면 줄줄이 번진다.
- 어느 지점을 넘으면 갑자기 나빠진다. 이것을 미리 아는 것이 시뮬레이션이 하는 일 가운데 하나다.
규칙 읽기
- 다 이해하려 하지 말고 「한 걸음마다 하는 일」만 찾는다.
- 규칙은 열 줄 남짓이다. 그 짧은 것에서 모든 일이 나왔다.
- 잘 만든 모델은 담지 않은 것을 스스로 밝혀 둔다.
확인 퀴즈
배운 내용을 확인해 봅시다.
손잡이를 바꾼 뒤 처음 상태를 다시 만들지 않으면 어떻게 되나요?
자동차는 앞으로만 가는데 막힌 덩어리가 뒤로 밀려나는 까닭은?
자동차 수를 조금씩 늘려 가며 실행했을 때 관찰되는 것은?
모델의 설명 탭에서 「담지 않은 것」을 읽는 까닭은?