본문 바로가기

생명의 철학

컴퓨터속의 생태계.. Darwin Pond (2003.1)

 

 

컴퓨터속의 생태계

생태계를 시뮬레이션한 소프트웨어 Darwin Pond 에 대한 소개

 

Darwin Pond Homepage

 

소프트웨어 다운받기

 

 

. 이 "다윈의 연못" 속에는 원생동물을 닮은 스위머(swimmer)들이 살고 있다. 이들의 삶은 아주 단순하다. 먹고, 짝짓기하고, 죽는다. 모든 스위머의 상태는 다음 6가지 중의 하나이다.

 

1) 짝을 찾는다.

2) 짝짓기를 시도한다.

3) 짝짓기한다.

4) 먹이를 찾는다.

5) 먹기를 시도한다.

6) 먹는다.

 

아래 도표는 스위머의 상태의 변화를 보여주고 있다. 모든 스위머는 이 가운데 한 상태에 있으며 다음에 어떤 상태로 진행해갈 것인가를 보여주는 알고리듬이다.

 

모든 스위머들의 기본적 욕구는 자손을 만드는 것이다. 짝짓기에는 에너지가 필요하다. 그래서 짝짓기의 선행조건으로 배가 채워져야 한다. 배가 채워지면 자신이 원하는 짝(같은 색)을 찾아서 이리저리 돌아다닌다. 만일 용케 찾았다면 사랑을 나눈다. 짝짓기가 성공하면 조그마한 흰점이 생겨나는데 이것이 점차 커지면서 새 생명이 만들어진다.

그러나 짝짓기에는 몇가지 조건이 있다. 둘다 배가 불러야 한다.(너무 당연한 이야기) 서로 접촉상태에 있어야 한다.(또 당연한?) 이것이 물리적 조건이라면 제법 윤리적 조건 비슷한 것도 있다. 상대의 나이가 적당해야 한다. 그래서 스위머들은 갖 태어난 스위머와는 짝짓기하지 않는다. 실제 짝짓기를 시켜보아라. 상대에 아무 관심도 보이지 않을 것이다. 근친상간도 금한다.  이제 제법 미학적 조건도 있다. 아무 하고나 짝짓기 하는 것이 아니다. 각각 좋아하는 타입이 있다. 타입이 다르면 아무리 색에 굶주려도 관심을 주지 않는다. 그러나 그 미학적 조건이 인간처럼 그렇게 변덕스럽지 않다. 그것을 결정하는 것은 스위머의 몸의 색깔이다.

 스위머의 몸은 좌측의 6가지 색의 조합으로 되어 있다. 물론 원색으로 된 놈도 있고 몇가지 색이 섞여 있는 놈도 있다. 자신의 색깔과 비슷한 놈을 선호한다. 몸의 색깔에 푸른 색이 많으면 상대도 푸른 색을 가진 놈을 선호한다. 푸른색이 많은 놈 가운데 가장 캡은 누구일까? 당연히 푸른색만으로 된 원색의 스위머이다. 이것은 푸른색 계열의 스위머들 가운데 가장 인기가 좋고 짝짓기의 성공률도 높다.

주변에 같은 색의 유형을 찾을 수 없으면 자신의 색의 인근 색에서 짝을 찾는다. 푸른색의 경우 위 도표를 보면 보라색과 녹색이다. 이렇게 해서 태어난 자손은 새로운 색의 조합을 보여줄 것이다.

스위머의 몸은 머리와 다리로 된 단순한 구성이다. 차잇점이 있다면 다리의 숫자인데  하나에서 넷 까지 있다. 다리가 많을수록 매력적으로 보인다. 왜 그럴까? 성적 매력은 색의 양에 의존하는데 다리가 많으면 그만큼 많은 양의 색을 갖고 있을 것이기 때문이다. 종합해보면 원색에 다리가 많은 놈이 가장 섹시하고, 많은 자손을 낳아 자신의 형질을 이 다윈의 연못에 퍼뜨릴 확률이 높다.

그러나 아직 이렇게 결론내리기에는 이르다. 짝을 찾고 먹이를 구하는데는 스위머의 운동능력도 중요하다. 각 스위머의 눈은 국지적이다. 자신의 주변에서 짝을 찾게 된다. 그러므로 섹시해도 님옆에 있지 않으면 소용없다. 사랑을 쟁취하는 것은 "필요할 때 항상 옆에 있는 그대"이다. 그렇다면 운동능력이 더 중요하게 되는데 섹시한 몸을 만들기위해 다리가 늘어나면 유영속도가 떨어진다. 그래서 운동능력과 섹시함의 미묘한 균형이 만들어지고 이 결과 복잡한 생태계가 만들어진다. 멋진 네 다리는 없어도 외다리로  짝을 찾아 날쌔게 달려오는 모습을 보면 저절로 웃음이 나올 것이다.

스위머의 행동 자체는 단순하지만 그것들이 모여서 만들어내는 생태계는 그렇게 간단하지 않다. 그것은 먹이를 구하고 짝짓기하면서 요란하고 별난 다윈의 연못을 만들어내고 있다. 이것은 실제 자연세계와 크게 다르지 않는데 개미를 보라! 각 개미의 행동패턴은 간단하다. 그러나 그것들이 상호관련하면서 만들어내는 집단의 동력학은 아주 복잡하지 않은가?  

 

이제 스위머의 몸을 살펴보기로 하자. 몸은 주둥이와 다리로 되어 있다. 검정색 막대기처럼 보이는 것이  주둥이다. 주둥이 위에 보면 방울 같은 것이 달려있는데 색깔이 다르다. 그 색은 자신이 선호하는 짝의 타입을 나타낸다. 우측 스위머를 보면 주둥이가 가늘고  방울도 없다. 이것은 지금 배가 고프고 그래서 먹이를 찾고 있다는 것을 나타낸다. 식사를 하면 주둥이가 굵어지고 방울이 생긴다.

좌측에 다리가 하나 달린 놈이 보이고 우측에는 다리가 넷 달린 놈이 보인다. 각 몸은 회전가능한 관절로 되어 있어 몸을 비틀 수 있다. (그 가동성의 정도는 유전자에 따라 다르다.)

 

 

Ⅱ. 주인공의 신원파악이 대충 끝났으니 이제 본격적으로 다윈의 연못으로 들어가 보자. 우측의 메인창에 있는 것이 다윈의 연못이고 좌측에 그것을 조절할 수 있는 툴바가 보인다. 연못에 보이는 초록색 점은 먹이이다.

화살표가 보이는 단추를 1번으로 하고 좌측에서 우측으로 상단에서 하단으로 넘버링해서 하단 제일 우측의 것을 14번으로 하자. 각 기능은 아래와 같다.

 

1. 선택; 원하는 스위머를 선택할 수 있다. 그 주변에 둥근원이 생기고 다른 스위머를 선택하지 않는한 항상 붙어다닌다. 마우스로 눌러 다른 곳으로 이동시킬 수 있다. 선택을 취소하고 싶으면 (스위머가 아니고) 연못의 바닥을 마우스로 클릭하면 된다.

2. 먹이 보충; 이곳을 클릭한 다음 메인화면의 연못을 클릭하면 그곳에 새 먹이가 생겨난다. 연못속의 먹이의 총량이 1000점을 넘으면 먹이를 더 이상 공급할 수 없다.

3. 먹이제거; 이곳을 클릭한 다음 마우스로 연못을 드랙하면 드랙한 곳의 먹이가 소멸한다.

4. 확대(zoom in); 이곳을 클릭한 다음 연못을 클릭하면 대상이 확대된다. 자판의 "+"을 사용해도 된다.

5. 축소(zoom out); 대상이 축소된다. "-"를 사용해도 된다.

6. 이동; 마우스로 드랙하면 화면을 이동할 수 있다. 자판의 화살표도 같은 기능.

7. 리셋(reset); 4를 취소하고 디폴트 화면으로 돌아간다.

8. 스위머 충원; 연못에 스위머를 보충할 수 있다. 마우스를 클릭하면 무작위로 생성된 스위머들이 만들어진다. 연못의 정원이 450개체수이므로 그 수에 이르면 더 이상 보충할 없다.

9. 스위머 제거

10. 스위머 대량제거; 9번의 경우 한번 클릭에 한 스위머가 제거된다. 10의 경우 연못위를 드랙하면 그 마우스가 지나가는 길의 스위머는 집단적으로 소멸한다.

11. 유전자 조작 (engineering swimmer) 이곳을 선택한 다음 원하는 스위머를 클릭하면 스위머의 유전자를 바꿀수 있는 조작파넬이 뜬다. 스위머는 15개의 유전자로 되어 있는데 형태, 운동, 색 등을 결정하는 유전자이다. 좌측 파넬의 유전자값을 바꾸면 우측에 즉각 반영되어 형태가 바뀐다. 조작이 끝난 다음 accept를 클릭하면 유전자를 바꾼 스위머가 연못위를 유영하고 있는 것을 볼 수 있다. 유전자는 다음과 같다.

 

1) number of limbs 다리의 수

2) number of segments per limb 다리의 체절의 수

3) rate

4) amplitude

5) alternate limb flib

6) straddle

7) turning gene #1

8) turning gene #2

9) turning gene #3

10) joint angle gene

11) motion gene #1

12) motion gene #2

13) motion gene #3

14) base color

15) color shift

 

이 유전자가 각각 구체적으로 무엇을 통제하고 있는지는 이 값을 바꾸고 바뀐 결과가  우측의 스위머의 형태에 어떤 영향을 주는지를 관찰해 보면 알 수 있다. 우리가 자연계에 개입해서 유전자 조작을 함으로 생태계에 문제을 야기하듯이 여기서도 지나친 개입은 다윈의 연못을 흥미없는 생태계로 전락시킬 수 있다. "그대로 두는 것"(let it be) 그것이 최선의 전략이다.  

 

12. 복제; 해당 스위머에 마우스를 클릭하면 똑같은 클론이 생겨난다.

13. 변이 zap swimmer; 해당 스위머에 마우스를 클릭하면 스위머가 변형된다. 이것은 무작위로 행해지기 때문에 어떤 변형체가 출현할지 미리 예측할 수 없다.

14. 해당 스위머를 클릭하면 그 스위머에 관한 정보를 알 수 있다. 여기에는 현재의 상태, 나이, 에너지 레벨, 다리의 수, 다리의 체절의 수, 선호하는 색 등에 대한 정보가 담겨 있다.

 

툴바의 하단에 보면 플라스크가 보인다. 이것이 실험관test tube인데 연못에서 원하는 스위머를 마우스로 드랙해서 이 관에 놓으면 된다. 거꾸로 연못에 풀어 놓을 수 있다. 한 관에 한 마리 이상 넣을 수 없다.

튜브의 상단과 하단에 화살표가 있다. 상단의 화살표를 클릭하면 저장되어 있는 스위머를 불러올 수 있다. 지금 채취해온 스위머를 저장하고 싶으면 하단의 화살표를 클릭하면 된다. 대화상자가 뜨고 적당한 이름을 준 다음 저장하라. 불러내고 싶을 때는 상단의 화살표를 클릭하면 되는데 단 빈 플라스크에서 그렇게 해야한다.(한마리 이상 넣을  수 없기 때문에) 플라스크에 저장된 스위머가 들어오면 마우스로 드랙해서 현장에 풀어놓을 수 있다.

 

. 상단 메뉴판의 option을 클릭해보자. 그 가운데 제일 상단의 Tweak Ecology를 보자. 여기의 변수들은 연못 생태계의 전체에 영향을 주는 것들이다. 우리는 이 조작판을 여러 가지로 비틀어 봄으로써 번성과 대량멸종이 일어나는 생태계의 변화를 볼 수 있다. 조작판은 크게 두 가지이다.

하나는 먹이의 공급에 관한 것이다. 먹이는 스위머에게 소비되지만 씨앗의 형태로 재생된다. 그런데 이것이 off되어 있으면 더 이상 새로운 먹이가 생겨나지 않는다. 제일 상단의 Food Growth Rate는 식량의 재생산 속도를 규정하는 것이다. 이 속도에 따라 생태계가 어떻게 급격히 달라지는지를 관찰해 보자. 그 아래의 Food Spread는 씨앗의 형태로 퍼져나가는 범위를 규정한다. 값이 작으면 기존의 먹이감들 가까이에 집중될 것이고 크면 널리 산포될 것이다. 이 값에 따라 스위머가 좁게 모이기도 하고 널리 퍼져나가기도 할 것이다.

다른 하나는 스위머의 특성을 조작하는 것이다.

Energy Transferred From Mating;  스위머가 짝짓기를 하면 자신의 에너지의 일부를 자식에게 넘겨준다. 정상적인 조건하에서 자손은 굶어죽기 전에 음식을 구하기에 충분한 에너지를 부모로부터 받는다. 부모는 자식에게 에너지를 넘겨줌으로써 통상 굶주린 상태에 있다. 이것은 자식에게 에너지를 넘겨주는 정도를 규정하는 조작판이다. 이것의 높낮음은 전체 개체군의 운명에 상당한 영향을 준다. 너무 낮게 책정되어 있으면 자식은 굶어죽게 될 것이다. 자식을 부양하는데 필요한 최적량은 얼마인가?

Energy From Food; 이것은 스위머가 먹이를 통해서 얻게되는 에너지의 정도이다. 낮게 책정되면 스위머는 만성적인 굶주림에 시달릴 것이고 높이 책정되면 여유가 생기게 되는데 이것이 주둥이가 두꺼워지는 것으로 나타난다.

Hunger Threshold 이것은 스위머가 음식을 먹지 않고 견딜 수 있는 최소 에너지를 결정한다. 이것이 낮게 책정되어 있으면 스위머는 아사하기 직전 까지 짝짓기에 골몰할 것이다. 그렇다고 너무 높이 책정되어 있으면 항상 허기를 느끼고 먹이를 찾는데 시간을 다 보내게 될 것이다.

Maxium Life Span 이것은 스위머의 수명을 규정하는 조작판이다. 최대 40,000tick 까지 허용된다.

메뉴의 하단에 population graph가 있을 것이다. 이것이 첵크 되어 있으면 각 유형의 스위머의 현재 숫자가 좌측 상단에 그래프의 형식으로 실시간으로 출력된다. 이것을 통해 인구의 변동을 일목요연하게 알 수 있다.

그 외 여러 가지 기능들이 있지만 생략한다. 메뉴의 제일 좌측의 Pond 판을 보면 몇가지 Sample Ponds들이 있을 것이다. 이것들을 하나하나 실행시키면서 전체의 판을 차분히 관찰해 보자. 다음 여러 가지 변수들을 바꿔보면서 그 변수들이 전체 생태계에 어떤 영향을 미치고 그것을 통해서 스위머의 행동에 어떤 변화가 발생하는지를 관찰해 보자.

간략한 소개를 여기서 그치고자 한다. 보다 자세한 것은 소프트웨어와 같이 배포되는 User Manual을 참조하기 바란다.

 

이것에서 자연의 유비를 꺼집어내기에는 너무 모델이 단순하지만 그렇다고 그냥 게임으로 돌려버리기에는 스위머의 행태가 예사롭지 않다. 가끔 기분전환으로 실행시켜 보기에는 괜찮은 프로그램으로 보인다. 신의 기분이 어떨까를 어렴풋이 느낄 수도 있을 것 같지 않은가...... ????