시뮬레이션 > 개체군 성장 모델 > 설명서
개체군 성장 모델 설명서
교과서에서 "이론적 생장곡선(J자형)"과 "실제 생장곡선(S자형)"을 배울 때 보통 "환경저항 때문"이라고만 설명하고 넘어갑니다. 여기서는 그 이유를 수식으로 짚어보고, 한 걸음 더 나가서 — 실제 개체군은 왜 S자 곡선조차 정확히 따르지 않고 K 근처에서 흔들리는지까지 수리생태학 관점에서 설명합니다.
1. 이론적 생장곡선 (지수 성장) — J자형
dN/dt = rN N(t) = N₀e^(rt)
개체군이 늘어나는 속도(dN/dt)가 현재 개체수(N)에 비례한다고 놓은 가장 단순한 모델입니다. r은 내적 자연증가율(intrinsic rate of increase) — 자원이 무제한이고 경쟁·천적·질병이 없을 때 한 개체당 순수하게 기대할 수 있는 증가율입니다. 이 식의 핵심 가정은 r이 개체군 밀도와 무관하게 항상 일정하다는 것(밀도 비의존적, density-independent)입니다. 개체수가 10마리든 10만 마리든 한 마리당 증가 속도가 똑같다고 보는 셈이니, 그래프는 위로 끝없이 치솟는 J자 곡선이 됩니다.
2. 환경수용력을 반영한 로지스틱 성장 — S자형
실제로는 개체수가 늘어날수록 먹이·서식 공간이 부족해지고, 노폐물이 쌓이고, 개체 간 경쟁이 치열해집니다. 이런 요인을 통틀어 환경저항이라 부르고, 수식으로는 지수 성장식에 (1 − N/K)라는 제동항을 곱해서 표현합니다.
dN/dt = rN(1 − N/K)
K는 그 서식지가 지속적으로 먹여 살릴 수 있는 최대 개체수, 즉 환경수용력입니다. N이 K보다 훨씬 작으면 (1−N/K)가 거의 1이라서 지수 성장과 거의 똑같이 움직이지만, N이 K에 가까워질수록 이 항이 0에 가까워지면서 증가 속도 자체가 줄어듭니다. 이제 성장률이 개체군 밀도에 따라 달라지므로 밀도 의존적(density-dependent) 성장이라 부르고, 그래프는 초반엔 J자와 비슷하다가 K 근처에서 완만해지는 S자 곡선이 됩니다. 이 방정식은 변수를 분리해서 적분하면 닫힌 형태의 해(N(t) = K / (1+((K−N₀)/N₀)e^(−rt)))로 정확히 풀리는데, 시뮬레이션의 초록 점선이 바로 이 식으로 그린 곡선입니다.
3. 그런데 실제 개체군은 왜 이 S자 곡선조차 정확히 따르지 않을까 — 수리생태학의 답
로지스틱 곡선은 개체군이 "지금 이 순간의" 밀도에 맞춰 성장률을 즉각 조정한다고 가정합니다. 하지만 현실의 개체군은 그렇게 즉각 반응하지 못합니다. 임신·발생·성장에 걸리는 시간, 포식자가 늘어난 먹이에 맞춰 개체수를 불리는 데 걸리는 세대 시간 등, 환경 변화와 개체군의 반응 사이에는 항상 시차(time lag)가 있습니다.
1948년 조지 허친슨(G. E. Hutchinson)은 이 시차를 로지스틱 방정식에 직접 집어넣었습니다 — 지금 개체수가 느끼는 "혼잡함"을 현재 밀도가 아니라 τ만큼 과거의 밀도로 판단한다고 본 것입니다.
dN/dt = rN(t)・(1 − N(t−τ)/K)
τ가 0이면 방금 본 로지스틱 방정식과 완전히 같아집니다. 그런데 τ가 커지면 개체군은 "이미 K를 넘어섰다는 사실을 뒤늦게 알아차리고" 뒤늦게 성장을 멈추기 때문에, 실제로는 K를 넘어섰다가 다시 떨어지는 초과(overshoot)가 생깁니다. 수학적으로 정리하면 다음과 같은 경계가 나옵니다.
- rτ < π/2 (≈ 1.57) — 시차가 있어도 크지 않아서, 약간 흔들리다가 결국 K로 부드럽게 수렴합니다.
- rτ > π/2 — 시차가 충분히 커서 평형 자체가 불안정해지고, K를 중심으로 계속 진동하는 리듬으로 바뀝니다(수학적으로는 호프 분기, Hopf bifurcation라고 부르는 현상입니다).
시뮬레이션의 rτ 지표가 바로 이 경계값을 보여주기 위한 것입니다. τ 슬라이더를 0에서부터 천천히 올려보면, 어느 순간부터 실제 곡선(파란 실선)이 초록 점선(이론적 로지스틱)을 벗어나 K 위아래로 출렁이기 시작하는 걸 확인할 수 있습니다.
4. 실제 생태계에서 관찰되는 사례
이런 지연 진동은 실험실과 야외 모두에서 확인됩니다. 니콜슨(A. J. Nicholson)의 검정파리(blowfly) 개체군 실험은 먹이를 일정하게 공급해도 개체수가 매끄러운 S자로 안정되지 않고 몇 세대 주기로 크게 출렁이는 걸 보여준 고전적인 사례입니다. 베링해의 세인트폴 섬에 도입된 순록 개체군도 초기에 환경수용력을 크게 초과할 때까지 늘어났다가 이끼(주 먹이) 고갈로 개체수의 대부분이 붕괴하는 "초과와 붕괴(overshoot-and-crash)" 패턴을 실제로 보였습니다 — 반응 시차가 큰 경우 나타나는 전형적인 결과입니다.
5. 참고: 세대가 겹치지 않는 개체군과 혼돈(chaos)
지금까지 본 시차 로지스틱은 개체군이 연속적으로 번식하는 경우를 다룹니다. 반대로 한해살이 곤충처럼 세대가 겹치지 않고 한 번에 갱신되는 개체군은 연속 시간 방정식 대신 이산 시간 로지스틱 지도(discrete logistic map)로 다룹니다.
Nt+1 = Nt + rNt(1 − Nt/K)
1976년 생태학자 로버트 메이(Robert May)는 이 식 하나만으로도 r 값을 키워가면 개체군이 K로 안정적으로 수렴하다가 → 두 값 사이를 오가는 진동으로 바뀌고 → 결국 예측이 사실상 불가능한 혼돈(chaos) 상태로 접어든다는 걸 보여서 큰 반향을 일으켰습니다. 이 시뮬레이션이 다루는 시차 로지스틱과는 수학적으로 다른 메커니즘이지만, 결론은 비슷합니다 — 아주 단순한 규칙만으로도 실제 개체군 데이터가 매끄러운 이론 곡선보다 훨씬 들쭉날쭉해 보이는 이유를 설명할 수 있다는 것입니다.
6. 그래프 읽는 법
- 회색 점선(지수)은 환경저항이 전혀 없다고 가정했을 때, 파란 실선(실제)과 비교하면 환경저항이 얼마나 큰 차이를 만드는지 보여줍니다.
- 초록 점선(로지스틱, τ=0)은 "환경저항은 있지만 반응 지연은 없는" 이상적인 경우입니다. τ=0으로 두면 파란 실선과 완전히 겹칩니다.
- 파란 실선(실제)이 지금 설정한 τ값을 반영한 곡선입니다 — rτ가 커질수록 초록 점선에서 점점 더 벗어나 K 위아래로 출렁입니다.
7. 이 모델의 가정과 한계
- 단일 종만 고려 — 다른 종과의 경쟁·포식 관계는 반영하지 않습니다(포식자-피식자 상호작용은 로트카-볼테라 시뮬레이션에서 다룹니다).
- K가 고정값 — 실제로는 계절·기후·자원량 변화에 따라 환경수용력 자체가 계속 바뀝니다.
- 확률적 요동 미반영 — 실제 개체군은 출생·사망이 확률적으로 일어나서 개체수가 적을 때는 우연에 의한 변동(확률적 소멸 위험 포함)이 큰 영향을 미치지만, 이 모델은 그런 무작위성을 다루지 않습니다.