자 이제 넷로고를 이용하여 간단한 모델을 만들어 봅시다.(보시는 분들께 : 죄송합니다만 오역도 많고 빠진 곳도 많습니다. 널리 양해 부탁드립니다.)
이 모델은 자유롭게 이동하는 한마리의 개미로 구성되어 있습니다.
넷로고를 시작합니다.
넷로고 아이콘(5.0.3)을 클릭하고
가장 먼저 해야할 것은 'Setup'과 'Go'버튼을 만드는 것입니다.
이쪽으로 가서 메뉴 중 'Button'에서 인터페이스 메뉴를 만듭니다.
클릭해보면 모든 종류 인터페이스 버튼이 있습니다.
'Addup'버튼을 누르고, 'Button'을 클릭한 후 이 버튼을 '셋업'이라 지정합니다.
또다른 버튼을 눌러 'Go'버튼을 만듭니다.
이제 'Go'버튼을 선택하고 오른쪽 클릭, 'Select'를 선택하여 움직일 수 있습니다.
드래그를 해서 싸이즈를 조정할 수도 있습니다.
여기에 두고요, 이정도로 하겠습니다.
'Setup'과 'Go'버튼을 완료했습니다.
아직까지는 코드를 입력하지 않았기 때문에 아무일도 일어나지 않습니다.
이제 코드탭으로 가서 "to setup'이라고 치고, "clear-all"이라 칩니다.
"clear-all"이란 명령어는 당신이 본 윈도우나 기존에 있던 창이나 프로그램을 모두 지우라는 것입니다.
"reset-ticks"를 치고, 이것은 시간단계를 '0'으로 하는 것입니다.
이제 개미를 만들어 보겠습니다.
우리가 알아야 할 것은 넷로고의 모든 에이젼트는 "Turtle"이라고 부릅니다.
이것의 이유는 지역 언어인 "Logo"에서 유래 되었고, 우리는 이미 한마리의 "Turtle" 를 가지고 있습니다.
더 많은 "Turtle"를 추가할 수도 있고요.
이제 이렇게 칩니다. "Create-turtle" 몇마리가 필요할까? 한마리면 되지요.
"ask turtle"라 치고 리스트를 적습니다.
괄호안에 "set shape "bug"" 그 밑에 "set size 3" 3이면 적당하고요.
"set color red"라 하고 괄호를 닫고 "end"를 칩니다.
이제 "Check" 박스를 찾아서 클릭하고, 아~버그가 있다고 알려주네요.
버그가 있다고 알려준 곳은 여기...알아냈습니다.
"ask turtles"라고 써야 되네요 제가 "s"를 미스했네요.
전부를 선택하던 하나를 선택하던 항상 "turtles"라고 써야 합니다.
다시 체크해 보겠습니다.
다시 인터페이스 화면으로 갑니다. 모든게 다 된것 같으면 "setup"을 클릭하고 이제 중앙에 개미가 보입니다.
"go"버튼은 아직 적색이지요. 아직 설정이 안된 것이지요.
다시 "code"탭으로 돌아가서 "to go" "ask turtles"라 치고
오른쪽으로 어느정도 움직일것인가를 정합니다. "right 30"라 치고
"forward 4"라고 치면 4단위씩 움직입니다.
"tick"을 쳐서 시간명령을 "1"까지 입력합니다.
"end"를 치고 "check"를 클릭합니다. 모든 것이 적절하면 다시 인터페이스 화면으로 돌아가서 "go"를 클릭합니다.
"Turtles"가 움직이는 것이 보이시죠. 30도 몸을 틀어서 움직였습니다.
앞으로 움직여 봅니다. "go"버튼을 계속 누르면 원을 그리면서 계속 움직입니다.
무한하게 움직이게 하고 싶으면 "go"버튼에 마우스 오른쪽을 클릭하고 "edit"를 선택합니다.
옵션에서 "forever"를 클릭하면 무한히 움직이게 할 수 있습니다.
해볼까요.. 약간 속도를 낮추고.. 계속 돌고 있습니다.
"go"버튼을 다시 누르면 멈추게 됩니다.
"go"버튼을 눌러서 시작하고 멈추게 할 수 있습니다.
"setup"버튼을 누르면 원위치로 돌아오게 되는데 매번 할때마다 방향은 다르게 나타납니다.
방향은 랜덤으로 지정되어 있습니다.
"File" -> "Save as" 를 선택하여 파일을 저장할 수 있습니다.
파일명을 "Ant1"이라 하고 저장하면 데스크탑에 "Ant1.nlogo"파일이 나타납니다.
이제 "Netlogo"메뉴에서 "Quit Netlogo"를 클릭하여 창을 닫고,
"Ant1.nlogo"파일을 더블클릭하여 새로 창을 엽니다.
약간 지루함을 벗어나서 재미있게 만들어 볼까요..
"code"를 클릭하고 간단한 명령어를 넣습니다.
"right 30" 조건에서 "random"을 넣습니다.
이제 개미는 0과 (30-1) 사이에서 랜덤으로 움직이게 됩니다.
또한 "forward 4"조건에서 "random"을 넣으면 0과 (4-1) 사이에서 랜덤으로 움직이게 됩니다.
어떤일이 일어나는지 볼까요. 인터페이스로 돌아가서 "setup"과 "go"를 차례로 누릅니다.
좀더 재미난 형태를 하고 있습니다.
한가지 알 수 있는 것은 개미가 이 세계를 이쪽 면에서 저쪽면으로 통과하면서 움직이고 있습니다.
이 세계는 도넛이나 토러스의 형태를 띄고 있습니다.
움직임을 조금 느리게 하고 보면 위로 들어가서 바닥으로 나오고 측면으로 들어가면 반대쪽 측면으로 나옵니다.
"go"버튼에서 마우스 오른쪽을 클릭하고 "edit"를 눌러서 이 세계를 다시 조정할 수 있습니다.
"World wraps horizontally"와 "World wraps vertically"의 체크버튼을 지우고 "OK"를 누른 뒤 다시 시도해보면어떻게 될까요
이제 개미는 세계의 벽에 부딪혀 통과할 수 없는 채로 돌기만 합니다.
조금은 현실적인 것 같습니다. 현재 개미가 오른쪽으로만 돌고 있는데요. 왼쪽으로도 움직일 수 있도록 해보겠습니다.
"code"버튼을 누르고 들어가 "flip coin"이라는 명령어를 사용하면 됩니다.
"to-report"과 "coin-flip?"이라 치고 "report random 2 = 0" 을 차례대로 칩니다.
"random 2"라는 것은 0과 이 숫자(2) 마이너스 1 중에서 랜덤으로 선택되는 것입니다.
따라서 '0'이 50%, '1'이 50%의 확률을 가지고 있습니다.
만약 '0'이 나오면 "'random 2 = 0"문장은 참이 됩니다. 반대는 거짓이고요.
참과 거짓이 랜덤하게 반반씩 나오게 되는데요.
명령문에서 약간 윗쪽에 "ifelse coin-flip?"을 치고 참일경우 [right random 30] 거짓일 경우 [left random 30] 와 같이 입력합니다.
인터페이스 화면으로 와서 "setup" 과 "go"를 시행하면 다른방향으로도 돌고 있지요.
왼쪽, 오른쪽으로 돌고 있습니다. 잠시 멈추고 "Code"를 누르고 이동거리를 크게 늘려 보겠습니다.
명령문에서 "30"을 각각 "60"으로 고치고 다시 해보면 좀더 실제처럼 움직이지요.
프로그램을 실행하다가 좋은 아이디어가 있으면 언제든지 커멘트를 달 수 있습니다.
"Code"로 들어가서 커멘트를 달고 이용하는 사람들에게 알릴 수 있습니다.
세미콜론을 치고 "returns true or false at random"과 같이 치고요.
또 위에도 "if coin-flip? is true, turn right else turn left"라고 남겨보겠습니다.
이와 같이 다른 이용자에게 커멘트를 알릴 수 있습니다.
정말 유용한 복잡계 프로그램이라고 할 수 있습니다.
이제 이 모델을 저장해보겠습니다. "Button"메뉴를 치고 "Note"를 선택합니다.
이쪽을 누르면 창이 뜨고 "Ant 1"이라고 모델명을 적습니다. 텍스트를 조금 크게 하고요.
"setup"과 "go"를 드래그해서 약간 아랫쪽으로 내리고 "file" -> "save" 하여 저장합니다.
"Quit Netlogo"로 넷로고를 종료합니다.
"자막 봐주셔서 감사합니다. 대단히 부족한 부분이 많아 죄송합니다. 다음 번역하시는 분께서 잘좀 수정해주시면 감사하겠습니다. (꾸벅)"