2.1 NetLogo


2.1.1 NetLogo 모델 분석

NetLogo는 매우 다양한 주제의 현상을 탐구하기 위해서 시뮬레이션을 사용하는 응용 프로그램이다. 아래 그림은 NetLogo가 실행될 때 표시되는 초기 화면을 보여준다. NetLogo에 대해 알아보면서, NetLogo의 인터페이스도 함께 학습할 것이다.

왼쪽 상단에 있는 “파일”의 하위 메뉴에서 이미 개발된 NetLogo 시뮬레이션 모델을 찾는 방법을 볼 수 있다. 또한, 넓은 검은 영역은 메인 시뮬레이션의 화면이다. 시뮬레이션 모델이 실행될 때, 모델의 시각화가 화면 영역에 나타난다.

 

../_images/CT-Class-Model-First-Screen.png
그림 2-1. The Windows NetLogo Display

 

NetLogo의 창은 플랫폼에 따라 다소 차이가 있을 수 있다. 위 그림은 윈도우 운영체제(Windows OS) 시스템에서의 NetLogo 창을 보여준다. 그리고 맥 운영체제 (Mac OS)시스템에서의 NetLogo 창은 밑에서 보여 진다. 두 버전은 각 시스템에 따라 메뉴와 버튼 위치에서 아주 근소한 차이만 있다. Mac 버전에서, “파일” 메뉴는 Windows 화면에서처럼 NetLogo 창에 바로 위치하기 보다는 화면 상단에 위치된 것을 알 수 있다. 또한 Windows 버전에서 NetLogo 메뉴들은 왼쪽 상단에 있는 반면, Mac 버전에서 NetLogo 메뉴(“인터페이스”, “정보” 및 “코드”)들은 상단 중앙에 위치된 것을 알 수 있다. 여기서 사용되는 NetLogo 창은 Windows 시스템 버전이다.

 

../_images/CT-Class-Model-First-Screen-Mac.png
그림 2-2. The Mac NetLogo Display

 

NetLogo는 다른 주제 분야에서 이미 개발된 다수의 모델을 포함한다. Model Library 를 보려면, 다음 그림에서 보여지는 것처럼 “파일”메뉴 아래에서 “Models Library”를 선택한다.

 

../_images/NetLogo-Model-Library.png

그림 2-3. Opening the NetLogo Model Library

“Models Library”옵션을 선택하면, 새로운 창에 샘플 모델 색인이 나타난다. 아래 그림에서 샘플 모델 색인 창을 볼 수 있다. 그림에서 보이듯이, 예술, 생물학, 수학, 사회 과학, 및 다양한 분야의 100개가 넘는 샘플 모델이 있다. 모델 라이브러리는 특정 수업을 위해 개발된 교과 과정 모델 라이브러리를 포함하고 있다. NetLogo 커뮤니티의 사용자들은 그들이 이용할 수 있는 다른 모델들도 개발해왔다. 당신은 Models Library 페이지의 맨 아래 부분 “사용자 커뮤니티 모델 웹 페이지로 이동” 버튼을 클릭하여 모델을 볼 수 있다. 버튼을 클릭하면 각각의 모델을 설명하고 모델 다운로드 링크를 포함한 웹페이지로 이동하게 해준다.


../_images/NetLogo-Model-Library-List.png
그림 2-4. The Top Level of the NetLog Model Library

 

각 폴더 옆에 있는 "+"아이콘을 클릭하여 해당 폴더에 있는 모델을 볼 수 있다. 다음 그림은 생물학 모델에 대한 하위 폴더를 보여준다. 생물학 하위 폴더 안에 세부 항목들이 포함되어 있는 것을 확인 할 수 있다.
세부 항목은 실행 할 수 있는 NetLogo 모델이다. 생물학 폴더의 첫 번째 NetLogo 모델은 “AIDS”이고 두 번째는 “Ant Lines” 이다. 생물학 폴더는 또한 (“Evolution” 폴더) 다른 폴더도 포함한다. Evolution 폴더의 바로 옆 “+” 기호를 클릭하면 하위항목을 볼 수 있다. “Evolution” 폴더의 세부항목은 다른 모델들과 다른 폴더들을 보여줄 것이다.


../_images/NetLogo-Model-Library-Biology.png
그림 2-5. Expanding a Folder in the Library

 

NetLogo 모델의 이름을 클릭하면, 모델에 대한 설명을 볼 수 있다. 예를 들어, 다음 그림에서 보여지는 것과 같이 "AIDS"모델을 클릭하면 모델 설명이 제공된다. 여기서 볼 수 있듯이,이 모델은 에이즈의 확산을 시뮬레이션 한다. 설명 위에는 현재 모델의 주요 시뮬레이션을 시각적인 이미지로 보여준다. 인구 내의 개체군들은 사람 모양 아이콘으로 시뮬레이션 화면 영역에 보여 진다.

 

../_images/NetLogo-Model-Library-AIDS.png
그림 2-6. A Quick Overview of a NetLogo Model

라이브러리 모델에 대한 자세한 내용을 보려면, "열기" 버튼(위 그림의 하단에 있는)을 클릭하여 모델을 다운로드 할 수 있다. 아래 그림과 같이 “AIDS”라이브러리 모델이 나타난다. 여기서 사용자 인터페이스 컨트롤 (버튼, 슬라이더, 그래프)을 볼 수 있다. 다음 장에서 NetLogo 조작 방법을 더 배우게 될 것이다.


../_images/NetLogo-Model-Library-AIDS-Initial-Screen.png
그림 2-7. Opening a NetLogo Model
 

또한, 제작자의 모델 설명을 읽음으로써 모델에 대한 많은 것들을 학습 할 수 있다. NetLogo 윈도우 상단에 있는 "정보"탭을 선택하여 해당 모델의 설명을 볼 수 있다. “AIDS”모델에 대한 설명은 다음 그림과 같이 볼 수 있다.


../_images/NetLogo-Model-Library-AIDS-Info-Tab.png
그림 2-8. Looking at the Description in the “Info” Tab

 

 

Multiple Choice NetLogo에 관련된 설명으로 옳지 않은 것은?



 

Multiple Choice NetLogo의 사용법과 관련된 설명으로 옳지 않은 것은?




 

Multiple Choice NetLogo의 사용법과 관련된 설명으로 옳지 않은 것은?




2.1.2 NetLogo 모델 실행하기

다음 목표는 NetLogo 모델의 실행 방법을 알아보는 것이다. 우리가 배우게 될 모델은 “CT-Class-Model_예시_다운로드”이라는 생태학적인 모델이다. 이 모델은 생존하고 번식하기 위해, 잔디 (재생 가능한 자원)를 먹는 거북이의 생태를 알아본다. 이 모델은 거북이 먹이를 위한 잔디의 질에 따른 여러 추정에서 거북이의 개체 수가 어떻게 달라지는지, 그리고 거북이 개체 수 변화에 따라 재생 가능한 자원 (잔디)이 어떻게 영향을 받는지, 주어진 거북이 개체 수가 지속적으로 유지가능한지에 대한 질문에 답할 수 있는 모델이다. 이 모델은 물론 간단하며, 아마도 더욱 포괄적인 모델이 포함될 수 있는 다른 요인들을 생각할 수 있다.


이 모델은 주어진 거북이의 개체수가 지속될 수 있는지, 거북이가 먹는 잔디의 질이 다르면 거북이의 개체 수에 무슨 일이 생기는지, 거북이 개체 수의 변화에 의해 재생가능한 자원이 얼마나 영향을 받는지에 대해 답변하는데 사용될 수 있다.


"CT-Class-Model"을 실행하면 다음 그림과 같이 초기 화면을 보여준다. 그림에서 오른쪽 검은 화면이 시뮬레이션 화면 창이며, 화면 왼쪽에는 조작버튼 (Setup 버튼, Go 버튼, 온-오프 스위치, 슬라이드 세 개)이 있다. 이 조작 버튼들은 시뮬레이션 실행 중에 나타나는 추가적인 정보를 나타낸다.


../_images/CT-Class-Model-First-Screen.png
그림 2-9. A Simple Ecological Model

 

시뮬레이션을 실행하기 전에, 반드시 "Setup" 버튼 (상단 왼쪽)을 눌러 초기화를 해야 한다. "Setup" 버튼을 누르면 NetLogo는 시뮬레이션 실행을 위한 on/off 스위치와 슬라이더의 현재 값을 설정한다. 초기 실행을 위해서, 기본 설정 그대로를 사용할 것이다. "Setup" 버튼을 누르면 (클릭), 아래 그림과 같은 창을 볼 수 있다. 그리고 세 가지가 변경된 것을 볼 수 있다. 먼저, 메인 시뮬레이션 화면 영역이 검정색에서 잔디를 의미하는 녹색으로 변경된다. 그리고 거북이들이 달걀 모양의 다양한 색상으로 나타나며 무작위로 배치된다. 처음 만들어지는 거북이의 수는 가장 위에 있는 슬라이더에 의해 결정된다. 이 슬라이더는 "number"라고 표시되어 있고 현재 설정 값을 보여준다. 아래 그림에는 "77"로 설정되어 있다. 두 번째로, 왼쪽 아래에 있는 두 개의 모니터가 변경된 것을 알 수 있다. "count turtles"라고 적혀있는 모니터는 거북이의 현재 개체 수 "77"을 표시 하고 있다. 다른 모니터는 "green patches"이라고 적혀 있고 "1089"를 표시하고 있다. NetLogo는 시뮬레이션 화면을 33X33 패치(반점) 그리드로 분할한다. (그러므로 총 1089이다). "Totals"라고 적혀있는 세 번째 모니터는 현재 빈 화면이다. 이 영역은 시뮬레이션이 진행됨에 따라 거북이와 패치의 그래프를 나타낼 것이다. 이 시점이 시뮬레이션을 시작할 준비가 완료된 것이다.


../_images/CT-Class-Model-Setup-Button.png
그림 2-10. Initializing the Model using the Setup Button

 

시뮬레이션을 실행하려면, "Go" 버튼을 누른다. "Go" 버튼이 눌러졌을 때는, 버튼의 색상이 변경 된다. "Go" 버튼이 눌러졌을 때, 시뮬레이션을 계속 실행중이 된다. 시뮬레이션을 중지하려면 "Go" 버튼을 다시 누르면 된다. "Go" 버튼이 다시 눌러졌을 때는, 버튼이 원래 색상으로 돌아온 것을 볼 수 있다. "Go" 버튼이 원래 색상으로 돌아올 때마다 시뮬레이션은 중지된다. 다시 "Go" 버튼을 누르면 시뮬레이션이 재개된다. 시뮬레이션을 처음부터 다시 시작 하고 싶다면, 시뮬레이션을 중지 시키고 (“Go” 버튼을 다시 누르고), "Setup" 버튼을 누르면 된다.


NetLogo 모델 시뮬레이션이 실행 중일 때, 4 가지 영역이 지속적으로 업데이트 된다. 그림2-10은 NetLogo 시뮬레이션 모델이 시뮬레이션 중에서 몇 단계가 진행 된 후, 중지 된 상태를 나타내고 있다. 먼저, 현재 메인 시뮬레이션 화면에는 녹색과 검은색 패치가 보인다. 거북이가 잔디를 먹어서 잔디가 없어지면 검은색 패치이다. 검은색과 녹색 패치 쌍은 거북이가 새로운 잔디를 찾기 위해 주변을 돌아다니면서 잔디를 먹으면, 녹색 패치가 검은색으로 변경되고, 잔디가 다시 자라면서 검은색이 녹색으로 변경됨에 따라 지속적으로 색상이 변경된다. 또한 화면에서 거북이의 수와, 위치가 변화하는 것을 볼 수 있다. 이러한 변화는 거북이가 잔디를 찾아다니는 것과 거북이의 번식에 의한 거북이 개체 수의 성장을 표현한다. 그래서 두 번째로, "count turtles" 모니터에는 현재 거북이 수 484를 나타내고 있다. 세 번째로, "green patches" 모니터에는 현재 85개의 잔디 패치 수를 나타내고 있다. 네 번째로, 거북이의 수와 녹색 패치의 수 모두가 "Totals" 모니터에 그래프로 나타난다. 이 그래프는 거북이 개체 수와 잔디 패치의 수의 변화를 보여준다. 거북이의 숫자는 그래프 중 검은 선으로 표시되어 있고, 잔디 패치의 숫자는 그래프의 녹색 선으로 표시되어 있다. 그림을 보면, 거북이는 빠르게 많은 잔디 패치를 먹으면서 거북이의 수는 급속히 증가하고 이후에 거북이의 수가 약간 감소했다. 거북이 수의 감소는 에너지를 보충할 수 있는 잔디를 찾을 수 없었던 거북이의 죽음으로 인한 것이다.


../_images/CT-Class-Model-Running.png
그림 2-11. Running the Model using the Go Button

 

이제 NetLogo 모델을 실행 시켜 보고 있고, 조작 버튼들의 설정을 변경하여, 다른 조건에서 는 어떤 시뮬레이션의 결과가 나타나는지 알아보자.

 

2.1.3 Agents 기반 모델링

 

2-12

그림 2-12. Agent based model

NetLogo는 에이전트 기반 모델링이라는 컴퓨팅 모델의 형식을 사용하고 있다. 에이전트 기반 모델링의 주요 개체 (Entity)는 '환경' 안에서 작동하는 '에이전트'이다. 에이전트는 일반적으로 몇 개의 에이전트 유형 (또는 종류)이 있다. 예를 들어, 거북이 생태 모델은 2 종류의 에이전트 (거북이와 잔디 패치)가 있다.


에이전트는 자신의 특징과 조건을 설명하는 속성의 값들을 가지고 있다. 특정 유형 (또는 종류)의 모든 에이전트는 모두 동일한 형태의 속성을 가지고 있지만, 이러한 속성이 다른 값을 가질 수도 있다. 예를 들어, 거북이 에이전트 두 개는 각각의 위치 속성을 동일하게 가지고 있지만 두 거북이는 다른 곳에 위치해 있을 것일 수 있으므로 그 값은 서로 다를 수 있다. 마찬가지로, 모든 잔디 패치는 에너지를 가지고 있지만 어떤 잔디 패치는 다른 잔디 패치 보다 더 많은 에너지를 가지고 있을 수 있다.


에이전트의 행동은 "규칙"의 집합에 의해 결정된다. 규칙은 다른 에이전트와 상호 작용하는 방법, 시간이 지남에 따라 자신을 변화 시키는 방법, 그리고 환경의 변화에 어떻게 대처 하는지를 에이전트에 전달한다. 또한 에이전트의 규칙은 특정 에이전트의 동작을 결정한다. 에이전트의 속성과 규칙은 에이전트가 다른 시간에 다른 작업을 할 수 있도록 한다. 예를 들어, 에이전트가 "사람"을 나타내는 경우에, 에이전트는 나이라는 속성이 있고 "젊은" 사람과 "늙은" 사람이 다르게 행동하도록 허용하는 규칙을 가지고 있을 것이다. "젊은" 사람은 아마도 "늙은" 사람보다 빠르게 달릴 수 있을 것이다. 규칙의 일반적인 형식은 다음과 같다.

condition -> action(s)

이것은 조건이 참일 때 에이전트가 특정 작업을 수행할 것을 의미한다. 예를 들어, 거북이의 생태학 시뮬레이션에서 거북이에 대한 규칙 중 하나는 다음과 같다.

"when on patch with grass" -> "eat grass“

이 규칙은 거북이 에이전트가 잔디 패치 위에 위치할 때마다 잔디를 먹어야 한다는 것을 의미한다. 우리는 이러한 규칙이 NetLogo 프로그래밍 언어를 사용하여 컴퓨터에서 표현하는 방법을 나중에 볼 것이다.


에이전트는 “환경”안에서 위치를 변경하기 위해서 움직일 수도 있다. 예를 들어, 먹이를 찾아다니는 동물들, 도시 안에서 이동하는 차량들이 하나의 에이전트이다. 어떤 에이전트는 움직이지 않을 수도 있다. 즉, “환경”안에서 항상 동일한 위치에 있을 수 있다는 것을 의미한다. 예를 들어, 동물들에게 먹히는 식물들, 지리적 특성 (호수, 산), 그리고 구조물 (빌딩, 도로)이 움직이지 않는 에이전트이다. 이동성이 있는 에이전트는 종종 환경에서 이동하는 방법을 정의하는 규칙을 가지고 있다.


이러한 규칙은 방향성이 없거나(random), 또는 의도적인 움직임을 가질 수 있다. ("먹을 수 있는 가장 가까운 식물로 이동", "다음 교차로에서 우회전"). 이동하지 않은 에이전트는 종종 시간이 지남에 따라, 또는 다른 에이전트 반응에 따라 어떻게 변경되는지에 대한 규칙을 가지고 있다. 예를 들어, 움직이지 않는 식물 에이전트는 누군가에 먹혔을 때, 얼마나 오랜 시간 후에 다시 자라는지, 또는 비와 토양이라는 조건이 주어졌을 때, 얼마나 많은 영양을 가지는지에 대한 규칙을 가질 수 있다.


“환경”은 에이전트 주위의 세계에 대해 설명한다. 요약하면, “환경”은 종종 기본 단위로 분류될 수 있다. 예를 들어, NetLogo는 사각형 격자에 세계를 분할한다. 그리드의 각각 요소는 기본 단위이다. NetLogo에서는 이러한 기본 단위를 "패치"라고 부른다. 패치는 “환경”의 기본단위 또한 속성과 규칙을 가지고 있다.


에이전트 기반 시스템의 예는 잔디 패치 “환경”에서 거북이 개체 수를 나타내는 생태학적인 모델이다. 그림2-13는 이 모델의 NetLogo 시뮬레이션 화면을 보여준다. 이 모델에서 거북이의 속성 중 하나는 나이(age)이다. 나이는 거북이가 얼마나 오래 살 수 있는지 또는 얼마나 번식할 수 있는지에 대해 영향을 미치기 때문에 흥미롭다. “환경”은 잔디 패치로 구성되어 있다. 각 패치의 속성들은 잔디의 영양과 거북이가 잔디를 먹은 후, 잔디가 다시 성장하는 데 필요한 시간이다. 거북이의 규칙은 “환경”에서 잔디를 먹기 위한 주변 탐색을 하기 위해 어떻게 이동하고, 주어진 조건에서 거북이가 번식할지, 살아남을지, 또는 죽을지를 결정한다. 이러한 규칙은 거북이의 속성(나이)과 “환경”(거북이가 있을 때 잔디가 있는지)에 따른다. 잔디 패치의 규칙은 거북이가 잔디를 먹고 난 후, 잔디가 재성장할 때의 영양 수준을 결정한다.


../_imagesCT-Class-Model-Simulation-Display.pn
그림 2-13.The Simulated Agents in the Simple Ecological Model

 

에이전트 기반 시스템의 더 많은 예제는 아래에서 설명할 것이다. NetLogo 라이브러리에서 다른 모델들 또한 살펴 볼 수 있다.
에이전트 기반 시스템을 위한 컴퓨팅 도구는 단계를 거쳐서 진행된다. 각 "단계"는 일정 시간에 대응하고 있다. NetLogo에서는 각 단계는 가상의 시계 "틱"에 해당한다. 각 단계에서 에이전트와 “환경”의 규칙이 평가된다. 그리고 에이전트와 “환경”의 속성이 업데이트된다. 컴퓨팅은 에이전트와 “환경”의 규칙에 의해 구동되므로, 에이전트 기반 모델을 규칙 기반 모델이라고 한다. 블랙 잭 시스템에서 한 단계는 플레이어 앞 테이블에 카드를 놓는 딜러와, 또 다른 카드를 요청할 것인지 아닌지를 결정하는 플레이어로 구성될 수 있다. 생태계 시뮬레이션의 한 단계는 새로운 위치로 이동하고 잔디를 먹는 거북이들로 구성될 수 있다.


시뮬레이션은 에이전트 기반 모델링 시스템에서 중요한 역할을 한다. 에이전트와 “환경”을 위한 속성과 규칙이 한번 정의되고 나면 컴퓨팅 도구는 에이전트의 시스템이 어떻게 변화하고 진화하는지를 볼 수 있도록 한다. 그림 2-13은 단순한 생태학적 시스템의 NetLogo 시뮬레이션의 한 예를 보여준다. 시뮬레이션 시스템의 한 측면은 임의의 역할이다. 예를 들어, 블랙잭 시스템의 시뮬레이션에서는 카드를 무작위로 섞는 내재된 특성이 있다. 카드를 항상 같은 순서로 섞는 다면 쉽게 이길 것이다. 카드를 섞을 때 카드는 무작위로 섞는다. 결국 무작위로 섞는 것이 목적이다. 카드가 무작위로 섞이지 않는다면 종종 서양 영화의 싸움을 초래한다. 생태계 모델에서 거북이는 “환경” 안에 임의의 장소에서 시작하고 그 후부터 무작위로 움직인다. 임의의 역할 때문에, 하나의 시스템에서 같은 설정과 같은 시스템의 시뮬레이션을 실행해도 다른 결과를 보인다. 실제로 블랙잭의 첫 번째 판과 다음 판의 카드가 다르기 때문에 이것은 사실이다.


기본적인 속성과 규칙 이외에 에이전트 기반 모델은 종종 "매개 변수"를 갖는다. 이 매개 변수는 설정, 한계 조건, 초기조건과 다른 어떤 규칙이 평가되는지를 정의한다. 예를 들어, 블랙 잭 시뮬레이션에서 파라미터는 플레이어 수와 플레이어가 가지고 있는 칩의 수 (초기 상태), 얼마나 많은 사람이 게임을 할지 (한계 조건), 또는 딜러가 가질 수 있는 카드 수 (설정)를 정의할 수 있다. 생태계 모델에서 매개변수는 얼마나 많은 거북이가 초기에 존재할 것인가 (초기 조건), 시뮬레이션 횟수 (한계 조건), 또는 거북이가 잔디를 먹고 나서 얻는 에너지 (설정)를 정의 할 수 있다. 다른 매개변수 설정의 효과를 탐구함으로써, 통찰력을 얻을 수 있다. 이러한 통찰력은 현실 세계의 인간의 행동이나 정책의 기초가 될 수 있다.

 

 

Multiple Choice NetLogo의 생태학적 모델(거북이와 잔디)와 관련된 설명으로 옳지 못한 것은?




 

Multiple Choice NetLogo의 생태학적 모델(거북이와 잔디)와 관련된 설명으로 옳지 못한 것은?



 

Multiple Choice 설명으로 옳지 못한 것은?



2.1.4 모델링 그리고 컴퓨팅 사고력

에이전트 기반 모델링은 컴퓨팅 사고력의 주요 구성 요소 중 추상화와 알고리즘을 보여준다.


추상화는 실세계의 사물을 그 사물이 가지고 있는 중요한 속성(특성)들로 나타내는 것을 의미한다. 알고리즘은 정보의 속성을 조작하는 방법에 대한 지시가 단계 별 집합으로 구성된 규칙이다.


에이전트 기반 모델의 개발자는 에이전트의 특정 속성 정보와 에이전트와 관련된 집합을 정의하는 추상화를 사용한다. 거북이 생태학 모델에서 모델 개발자는 거북이와 잔디패치인 두 가지 유형의 에이전트를 선택했다. 거북이 에이전트는 위치, 현재 에너지, 그리고 나이 속성으로 추상화되었다. 각각의 잔디 패치의 관련 속성은 에너지 함량과 잔디 성장 상태(잔디 성장 또는 잔디가 없어지고 다시 성장)이다.


이외에도 당연히 포함될 수 있는 많은 속성들은 존재한다. 몇 가지 제시를 하면 다음과 같다.

  • 거북이 집단의 유전 형질을 추적 할 수 있도록 거북의 성별이 기록 될 수 있다. 이러한 유전 형질은 잔디를 에너지로 변환하는 효율성에 영향을 미칠 수 있다.
  • 물은 “환경” 요인이 될 수 있고 거북이의 물의 수요가 속성으로 포함될 수 있다.
  • “환경” 안에서 포식 동물 또는 질병이 그들의 고유의 속성들을 포함하는 에이전트로 포함될 수 있다.
  • 식물의 (재)성장과 에너지 함량에 영향을 미치는 강수량 또는 햇빛과 같은 환경적 요인이 추가 될 수 있다.

모델 개발자는 여러 질문에 답변이 될 수 있는 것을 기반으로 어떤 개체가 모델링될 수 있는지, 개체의 어떤 정보 속성이 모델에 포함될 수 있는지 결정한다.
추상화는 개발자에게 무엇이 포함되어야 하는 지에 대해서 알려주지 않는다. 하지만 정보의 관점에서 표현 될 수 있는 속성에 집중한다.
에이전트 기반 모델의 개발자는 에이전트의 정보 속성이 컴퓨팅적으로 어떻게 잘 처리되어야하는지를 묘사하기 위해서 알고리즘을 사용한다.
예를 들어, 개발자는 거북이를 다음과 같이 묘사할 수 있다:

  • 거북이는 다른 거북이가 점유하고 있지 않은 가장 가까운 잔디 패치 주위를 둘러보고 그 방향으로 이동을 시작한다.
  • 만약 거북이가 특정 나이가 되고 높은 에너지를 갖고 있다면 번식한다.
  • 거북이는 에너지가 없거나 특정 나이를 넘어가면 죽는다.
  • 잔디를 먹으면 에너지를 얻고 이동하면서 에너지를 소비한다.

당신은 아마도 거북이 행동의 일부가 될 수 있는 다른 규칙을 상상할 수 있다.
우리는 거북이 에이전트에 의해 수행되는 행동을 고려해봄으로써 알고리즘의 기본 요소들을 볼 수 있다. 특히 아래와 같은 것을 볼 수 있다:

  • 의사결정(Decision) : 거북이 에이전트가 수행하는 행동은 그 시간에 존재하는 조건에 따라 달라진다. 예를 들어, 위 규칙 중 하나는 거북이의 나이와 현재 에너지 량에 따른 거북이의 번식 능력이 있다. 이러한 규칙을 구현하기 위해, 알고리즘 과정은 반드시 몇 번의 의사결정을 하고 의사결정을 기반으로 어떤 행동을 수행하거나 수행하지 않는다. 의사결정은 알고리즘을 "Smart"하게 만들고, 다양한 상황에 특정 행동을 적용하기 위한 방법이다.
  • 반복(Iteration) : 거북이는 모든 수행 단계를 한 번에 수행하지 않는다. 알고리즘은 한 번 이행되면 거북이는 새로운 위치에 놓여 지거나(거북이가 이동하는 경우), 또는 거북이의 에너지 량이 변화된다. (거북이가 이동 또는 잔디를 먹을 경우), 아니면 다른 효과를 가진다. 한 번의 이행으로 모든 단계를 완료할 수 없다. 진짜 거북이는 하나의 단계 이후에 다른 단계를 취하는 것처럼 - 먹고, 이동, 시간이 지남에 따라 번식 - 거북이의 컴퓨팅 모델은 거북이가 동일한 방식으로 작동하기를 원한다. 즉, 기본 규칙을 반복적으로 수행하는 거북이를 갖기 원한다. 규칙이나 단계의 반복을 반복이라고 부른다. 반복은 개체의 전체가 기본적인 단계를 반복하여 모델링 될 수 있기 때문에 알고리즘을 강력하게 만들다. 반복은 데이터의 각 각 부분에 동일한 절차를 수행 할 때 필요하기 때문에, '빅 데이터'를 처리하는 데 중요하다는 것을 나중에 알 수 있다.
  • 순차(Sequence) : 거북이의 규칙이 평가되는 순서는 거북이의 행동에 있어서 차이를 만든다. 예를 들어 잔디 패치에 도달하기 위해 에너지의 마지막 비트를 사용하는 거북이를 생각해보자. 거북이의 알고리즘에는 두 가지 규칙이 있다.
  1. 에너지가 없으면 죽는다.
  2. 만약 잔디 패치위에 있다면 잔디를 먹고 에너지를 얻는다.

거북이 문제에서 규칙의 순서가 1 다음으로 2 순서를 따른다면 거북이는 죽을 것이다. 그러나 규칙의 순서가 2 다음으로 1이면 거북이는 살 것이다.
다른 유사한 사례들을 간단한 거북이 문제에서 찾을 수 있다. 이 예는 알고리즘에서 단계의 순서가 매우 중요하다는 것을 보여준다.

  • 동작(Action) : "동작"은 일을 수행하기 위한 자동화된 장치가 구축되었다는 것을 의미한다. 예를 들어, 로봇은 자신의 몸을 움직이는 것을 수행하도록 하는 동작을 가지고 있을 것이다. 자동화된 자동차 (자율 차량)는 좌회전 또는 우회전을 할 수 있다. 전형적인 “컴퓨터"는 기본 산술 연산 (+, -, x, /)과 논리 연산 (and, or, not)을 수행한다. 일반적으로, "동작"은 컴퓨팅 모델의 일부 속성을 변경하는 효과를 갖는다. 이 책의 후반에는 산술 논리 연산을 수행하는 컴퓨터의 능력을 활용하여 빅데이터를 다룰 것이다. 예를 들어, 전형적인 컴퓨터는 나노 초 단위의 빠른 시간 안에 숫자를 더할 수 있다. 나노 초는 십억 분의 1초이다. 1 나노 초에 빛은 1미터를 이동한다. 거북이 생태학 모델에서 거북이의 에너지를 더하고 빼고, 새로운 위치에 거북이를 나타내는 수를 결정하고, 거북이 나이를 더하는 간단한 계산이 필요하다. 어떤 경우에는 더 복잡한 계산이 필요하다. 예를 들어, 기계학습 알고리즘은 매우 복작한 수학적인 그리고 통계학적인 계산을 사용하여 십억 개의 데이터 조각에서 패턴을 식별하기 위해 시도한다. 이 과정에서는 계산이 비교적 간단하게 다루어 질 것이다.

 

  • 상태(State) : 세상은 매 순간순간 결코 동일하지 않다. 지구 자전, 사람들의 이동, 새의 비행, 그리고 비가 오고 그치는 등 많은 행동과 작용에 따라 상태가 변화한다. 마찬가지로, 실제 세계에 대한 우리의 컴퓨팅 모델은 시간이 지남에 따라 이러한 변화를 반영할 수 있어야 한다. 예를 들어, 거북이의 나이가 시간에 따라 증가하고, 한 마리의 거북이 에너지가 변화되고 (움직이면서 에너지가 떨어지고, 잔디를 먹으면서 에너지가 증가되는), 이 모델에서는 거북이 수가 번식으로 증가하고, 죽음으로 감소한다. 컴퓨팅 모델의 "상태"는 모델 안에서 모든 속성의 현재 값이다. 이 단순한 모델에서, 상태는 나이, 에너지, 그리고 위치 또는 모든 거북이와 모든 잔디 패치들의 조건(잔디의 재성장, 에너지 함량)이다. 상태는 알고리즘의 다른 요소와 관련되어 있다. 예를 들어, 만들어진 동작을 위한 의사결정은 "현재"상태 (예를 들어, 거북이의 현재 에너지 레벨 테스트)의 기준에 따른다. 유사하게, 동작은 일반적으로 "새로운"상태로 이어지는 하나 이상의 속성을 변경한다. 예를 들어, 만약 자동 운전 차량이 우회전 했을 경우, 자동 운전 차량의 상태는 변경되고 차량의 방향 속성은 "새로운" 상태로 변경된다. 마찬가지로, 거북이 생태학 모델에서 거북이 이동의 동작은 거북의 위치 (같은 지도의 좌표)와 거북이의 에너지 (에너지 레벨을 감소) 모두를 변경한다. "새로운” 상태는 알고리즘의 다음 단계를 위한 "현재" 상태가 된다. 이러한 방식으로, 계산은 한 번에 하나의 알고리즘 단계로, 하나의 상태에서 다른 상태로 불연속 방식으로 진행한다.

다섯 가지 요소 (결정, 반복, 순차, 동작, 그리고 상태)는 알고리즘의 핵심이다. 우리는 점차적으로 다섯 가지 요소의 이해와 사용 방법에 대해 더 알아볼 것이다. 비록 다섯 가지의 요소만 있지만, 이 다섯 가지로 컴퓨팅 모델이 답변해야 할 응답을 할 수 있을 만큼 충분히 복잡한 알고리즘을 만들어 낼 수 있다. 생명체를 구성하는 유전자 DNA 코드 핵산 염기는 DNA가 구성되는 A, C, G 및 T로 불리는 오직 네 개의 기본 요소만을 갖는다. 거대한 복잡성, 다양성 및 능력이 이 네 개의 핵산 염기로 만들어진다. 마찬가지로, 유일한 5 가지 기본 요소를 다루는 것으로 컴퓨터는 복잡하고 다양한 일을 수행하기 위한 알고리즘을 만들 수 있다.

2-14
그림 2-14. A,C,G,T 로 이루어진 DNA

 

2.1.5 창발적 행동(Emergent Behavior)

에이전트 기반 시스템은 종종 복잡한 시스템의 '창발적 행동'이라는 것을 탐구하는데 사용된다. 각 에이전트의 행동은 쉽게 이해된다. - 그 행동은 규칙의 집합으로 인코딩 된다. 예를 들어, 간단한 생태 모델로 거북이에 대한 규칙을 정의 할 수 있다. "시스템"은 서로 상호작용하는 많은 에이전트와 행동을 가지는 “환경”에 의해서 형성된다. 시스템의 동작은 에이전트와 환경의 전반적인 속성에 의해 특징지어진다. 예를 들어, 거북이 생태학 모델에서 전반적인 속성은 얼마나 많은 거북이가 있는지, 잔디 패치가 얼마나 많은 에너지를 갖고 있는지 등 일 것이다. 우리는 종종 오랜 기간 동안 무슨 일이 일어나는지 아는 것에 관심을 가지고 있다. 예를 들어, 거북이의 개체수가 어떤 수준에서 안정화 되는지? 거북이가 적극적으로 움직이는지? 또는 거북이가 멸종 되는지. 이 장기(long-term) 행동은 시간에 걸쳐서 "출현한다(emerges)". 많은 흥미로운 시스템에서는 에이전트와 “환경”에 대한 규칙의 주어진 지식으로 “출현” 행동을 수학적으로 예측하는 것은 현재 불가능할 수 있고, 쉽지도 않다. 이처럼 에이전트 기반 모델의 시뮬레이션은 시스템의 창발적 행동을 탐색하는 데 사용되어진다.


하지만 불행히도, 에이전트 기반 모델의 한 번의 시뮬레이션 실행은 두 가지 이유에서 창발적 행동을 완전하게 보여주지 못한다. 첫째, 같은 모델에서 시뮬레이션을 여러 번 수행했을 때, 매 수행마다 임의의 의사결정 때문에 서로 다른 시뮬레이션 결과를 보인다. 비록 각 시뮬레이션이 임의의 의사결정에 영향을 받지만, 각 시뮬레이션은 장기간의 실행을 통해서 놀라울 정도로 비슷한 행동 결과를 보인다. 예를 들어, 우리는 블랙잭 "시스템" (플레이어 에이전트를 위한 규칙)은 모든 칩을 빠르게 잃게 하기 위한 경향을 볼 수 있다. 이에 반해 어떤 시스템은 시간이 지남에 따라 칩을 잃게 유도하지만 플레이어가 "파산 (Bust)" 되도록 하지 않을 수 있다. 거북이 생태학 시스템에서 특정 매개변수 설정은 대부분의 경우 거북이 개체수의 멸종(너무 많은 거북이와 잔디에게 충분하지 않은 영양) 을 초래할 수 있는 반면, 특정 매개변수를 제외한 매개변수 설정은 거북이와 잔디패치의 개채수를 지속가능하게 이끈다는 것을 관찰할 수 있다. 둘째, 에이전트 기반 모델은 종종 시뮬레이션의 초기 조건을 보여주는 매개변수를 가진다. 예를 들어, 거북이생태학 모델에서 하나의 매개변수는 시뮬레이션이 시작할 때 거북이 수이다. 또 다른 매개 변수는 잔디가 얼마나 많은 에너지를 포함하는지 결정한다. 직관적으로, 풀이 무성한 환경에서 적은 거북이 수로 시뮬레이션의 실행하는 것은 매우 척박한 환경에서 많은 거북이 수로 시뮬레이션 하는 것 보다 다양하고 장기적인 행동을 보여줄 가능성이 있다. 창발적 행동 발견은 다양한 각 매개변수 설정에 대한 많은 시뮬레이션을 연구하는 것을 포함한다. 에이전트 기반 모델링은 복잡한 시스템의 창발적 행동을 탐구하는 데 사용되는 많은 사례가 있다. 이러한 사례 중에서 몇 가지는 다음과 같다.

 

  • 경제: 국가 경제는 물질적인 행복을 향상시키기 위해 의사결정을 하는 많은 종류의 "에이전트"로 구성되어 있다. 에이전트는 개개인이 상품과 서비스를 구매하기 위한 의사결정, 투자 수익을 추구하는 기관(은행, 투자회사), 상품과 서비스를 제공하는 회사, 시장의 공정성을 규제하는 정책을 포함한다. 에이전트의 개별적인 형식의 잠재적 행동을 모델링하는 것은 가능하지만, 에이전트의 수와 에이전트 사이에서 가능한 상호 작용의 복잡성은 경제 척도(국민 총생산, 소득 수준, 은행의 안정성) 전체를 수학적으로 결정하는 것을 불가능하게 만든다. 그러나, 에이전트 기반 모델링은 경제 모델의 창발적인 행동 연구에 사용될 수 있다. 이러한 모델은 경제 성장에 대한 다양한 정책의 잠재적 영향을 연구하기 위해 규제 기관에 의해 사용될 수 있거나, 시장에서 자원을 관리하기 위한 최선의 전략을 결정하기 위한 기업에 의해 사용될 수 있다. 다음은 에이전트 기반 모델링이 어떻게 경제학에 적용되는지 보여주는 사이트를 소개 한다 :

❍ Agent-Based Computational Economics.
❍ The economy needs agent-based modelling.
❍ New model army.

 

이 외에도 많은 다양한 예제가 많다.

 

  • 천연 자원 관리: 세계 인구가 증가함에 따라 재생 가능한 천연 자원을 사용하는 방법에 대한 관심이 증가하고 있다. 천연 자원은 산림, 어장, 초원, 그리고 이러한 서식지에 사는 야생 동물을 포함한다. 컴퓨팅 에이전트 기반 모델은 자원의 다양한 사용패턴에 대한 영향과 그 영향이 자원의 지속력에 미치는 영향을 연구하는데 사용될 수 있다. 에이전트는 자원 사용자 (목재 회사, 어선, 가축 생산자) 및 자원 자체 요소(숲의 규모, 물고기 서식지 특성, 초지의 평방 마일)가 될 수 있고 이들의 창발적 행동은 자원의 소진을 피하기 위한 자원 활용 패턴을 찾아내고 지속성을 상실하게 되는 티핑포인트(tipping points)를 알아내기 위하여 연구될 수 있다. 에이전트 기반 모델의 이러한 사용 예는 다음과 같다.

❍ 에이전트, 개인, 그리고 네트워크 : 지역 경관에서 천연 자원 관리를 알리기 위한 모델링 방법
❍ 천연 자원 관리에서 에이전트 기반 모델링
❍ 천연 자원 관리를 위한 영양 거래 시장(nutrient trading market)의 에이전트 기반 시뮬레이션 모델

 

  • 전염병학: 하루 안에 전 세계를 여행하는 것이 가능해지면서, 전염병의 확산을 감지하고 제어할 수 있는 능력이 국가적 차원과 세계적인 차원에서 중요한 사항이 되었다. 현재 (2014 년) 서 아프리카에서의 에볼라 바이러스의 발생은 하나의 예에 불과하다. 심지어 선진국에서도 독감의 확산은 중요한 관심사이다. 에이전트 기반 모델은 바이러스의 다양한 추적 및 방지 프로토콜을 평가하는데 사용될 수 있다. 백신의 제한된 공급량을 사용하는 최선의 방법은 무엇인가? 이미 바이러스의 영향을 받은 지역에 있는 모든 사람에게 예방 접종해야 하는가? 단지 감염된 사람과 직접적인 접촉한 사람들은 다른 감염을 치료하기 위해 예방 백신 접종을 해야 하는가? 에이전트 기반 모델에서 에이전트는 다른 사람에 의해 감염되었거나 다른 사람을 감염시킨 사람을 표현한다. 다음은 에이전트 기반 모델과 창발적 행동을 전염병학에 응용한 예를 보여준다.

❍ 전염병학의 새로운 도구 : 장소가 건강에 미치는 영향을 이해하는 데 동적-에이전트 모델링의 유용성
❍ 전염성 질병 확산의 동적 모델링을 위한 에이전트 기반 접근법
❍ MASON에서 에이전트 기반의 공간적으로 명시적인 유전병학 모델

 

  • 분자 모델링: 분자 수준에서 유기 및 무기 물질의 특성을 이해하는 것은 기본적인 질문에 대답하기 위해 많은 과학 분야에서 중요하다. 에이전트 기반 시스템에서 각각의 원자 또는 분자는 에이전트에 의해 모델링된다. 물리적 상호 작용은 에이전트가 다른 에이전트와의 상호 작용을 따르는 규칙에 의해 정의된다. 화학에서는 분자의 자기 조립 (self-assembly) 개념이 연구될 수 있다. 생물학에서 다양한 종류의 질병은 이 기술을 이용하여 연구 될 수 있다. 아래에는 질병의 종류 외에도 다양한 예시가 있다 :

❍ 분자 자기 조직(molecular self-organization) 모델링을 위한 에이전트 기반 접근법
❍ 생화학 네트워크의 확률적 분자 이벤트(Stochastic Molecular Events of Biochemical Networks)를 위한 에이전트 기반 모델링 접근법
❍ 자기 조립(Self-assembly)을 모델링하기 위한 인공 지능 접근법 : 단단한 분자의 에이전트 기반 시뮬레이션(Simulations of Rigid Molecules)
❍ 다양한 크기의 에이전트 기반 뇌 암 모델링과 예측

 

  • 공연: 공연 및 시각 예술과 에이전트 기반 모델링 개념은 흥미로운 방법으로 교차될 수 있다. 한 사례로, 다른 댄서와 환경에 반응하는 한 댄서의 움직임이 정의된 일련의 규칙에 따라 행동하는 댄서의 개념을 들 수 있다. 동물들이 무리를 지어 행동하는 에이전트 기반의 모델로 부터 파생되었기 때문에 춤의 양식은 "무리 로직(flock logic)"이라고 한다. 시각 예술에서, "생성 예술"이라는 용어는 컴퓨팅 요소를 포함하는 작품을 말한다. 생성 예술의 한 형태는 창조적인 방법에서 에이전트 기반 기술을 사용한다. 생성 예술을 위한 제작 시스템은 에이전트 기반 아이디어를 기반으로 한다.

❍ Flock Logic.
❍ OpenProcessing.
❍ Generative Art: a practical guide to using processing.

 

다른 종류의 많은 시스템은 경제학, 사회 과학, 예술, 화학, 물리학, 그리고 다른 분야에서 에이전트 기반 모델링을 통해 연구되고 있다. NetLogo 라이브러리는 100가지의 모델이 넘게 포함되어 있다. 웹에서 검색하면 컴퓨팅 기술의 다양한 사용법을 습득할 수 있을 것이다. 예를 들어 OpenABM과 RunTheModel을 찾아보길 권장한다.
(see for example OpenABM and RunTheModel .)

 

Multiple Choice 다음 중 알고리즘의 기본요소가 아닌 것은?




 

Multiple Choice 다음 중 설명으로 옳지 않은 것은?



 

Multiple Choice 다음 중 알고리즘과 거리가 먼 것을 고르시오.



 

Multiple Choice 다음 중 설명으로 옳지 않은 것은?




 

Multiple Choice ‘상태(State)’에 대한 설명으로 틀린 것은?




 

Multiple Choice 창발적 행동(Emergent Behavior)에 대한 설명으로 옳지 않은 것은?




 

Multiple Choice 창발적 행동(Emergent Behavior)에 대한 설명으로 옳지 않은 것은?



2 thoughts on “2.1 NetLogo

Leave a Reply

Your email address will not be published. Required fields are marked *

*