Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Modellezés és szimuláció / Szimulációs modellek a biológiában /3. Demográfiai modellek

Szimulációs modellek a biológiában

3. Demográfiai modellek

Egyetlen populációt vizsgálunk, amelyet korcsoportok szerint osztályokra bontunk. Megadjuk minden korcsoport szaporodásának és halálozásának szabályait, majd a populáció növekedését, illetve korcsoporteloszlását vizsgáljuk.

3.1. Alapmodell

Vizsgáljuk meg, milyen objektumokra és paraméterekre van szükség a modellünk megalkotásához (a generációs keretmodellre építjük modellünket, s benne az exponenciális növekedést használjuk)!

Legyen N a populáció egyedszáma, K pedig korcsoportjainak száma! Egyszerű esetben – és mi ezt vizsgáljuk – a korcsoportok egyenlő időtartamot ölelnek fel, méghozzá 1 évet. T(N) -ben tároljuk a modell objektumainak, az egyes egyedeknek a jellemző tulajdonságát: a kort. E(i) jelenti azt, hogy valaki i éves korában milyen valószínűséggel hal meg, M(i) pedig azt, hogy milyen valószínűséggel van – egyetlen – utódja.

A modell algoritmusa:

Szimulációs lépés:

j:=N [a jelenlegi utolsó egyed]

Ciklus i=1-től N-ig

Ha véletlenszám<E(T(i)) akkor

T(i):=0 [halál]

különben

Ha véletlenszám<M(T(i)) akkor j:=j+1; T(j):=1 [születés]

T(i):=T(i)+1 [öregedés]

Elágazás vége

Ciklus vége

T-táblázat tömörítése

Eljárás vége.

Példa - korcsoporteloszlás az év elején.Példa - korcsoporteloszlás az év elején.
Példa - korcsoporteloszlás az év végén.Példa - korcsoporteloszlás az év végén.

Módosítsuk modellünket úgy, hogy egy évben több utód is születhessen! Ekkor M(i) az évi utódszám várható értékét (átlagos értékét) jelenti. Az algoritmusban ilyen várható értékű, Poisson eloszlású véletlenszámot használunk:

Szimulációs lépés:

j:=N

Ciklus i=1-től N-ig

Ha véletlenszám<E(T(i)) akkor

T(i):=0 [halál]

különben

X:=Poisson( M(T(i)) )

Ciklus y=1-től X-ig [születés]

j:=j+1; T(j):=1

Ciklus vége

T(i):=T(i)+1 [öregedés]

Elágazás vége

Ciklus vége

T-táblázat tömörítése

Eljárás vége.

Modellünk használatakor megfigyelhetjük, hogy a populációban stabil kormegoszlás alakul ki: a különböző korosztályokhoz tartozó egyedek aránya nemzedékről nemzedékre változatlan marad. Az egyensúly elérésének ideje attól függ, hogy kezdetben milyen messze volt a populáció a – dinamikus – egyensúlytól. Ez a stabilitás akkor is fennmarad, ha a populáció egyedszáma nem állandó, hanem csökken vagy növekszik. Olyan paraméter meghatározása, amelyre a populáció létszáma stabil értéket vesz fel, elég nehéz feladat.

A korcsoporteloszlás.A korcsoporteloszlás.

Jelöljük Ri -vel az aktuális időegységbeli korcsoporteloszlást, Ui -vel pedig a következő időegységbelit! Ekkor egyensúly esetén a korcsoportok létszámának egyensúlyát a következőképpen fogalmazhatjuk meg ( si születési, hi halálozási rátákkal):

Ui+1 = (1-hi)*Ri = Ri+1 és

U1 = ∑i=1..n-1(1-hi)*si*Ri = R1 → R1 = ∑i=1..n-1si*Ri+1 és

Ui+1 = ∏j=1..i(1-hj)*R1 → 1 = ∑i=1..n-1si*∏j=1..i(1-hj)

Egyszerű egyensúlyi feltétel tehát az s1=1/(1–h1) , a többi si legyen 0, hi -k pedig tetszőlegesek, vagy a hi=0 eset. Ezek azonban a természetben nem egy gyakori esetek, a valószerűbbek pedig nehezebben számíthatók ki. Ha a fenti, eredményül kapott szumma értéke kisebb 1-nél, akkor a populáció létszáma exponenciálisan csökkenni, ha viszont nagyobb 1-nél, akkor exponenciálisan növekedni fog.

Összlétszám alakulása, 20%-os átlagos bővülés mellett.Összlétszám alakulása, 20%-os átlagos bővülés mellett.

Ebből láthatjuk, hogy modellünk bizony meglehetősen kezdetleges, hiszen a valóságban vég nélkül növekvő populáció nincs. Figyeljünk fel a korlátlan növekedési modellekkel való hasonlatosságra!

Mi történik, ha a szimulációs lépés számára választott időegység nem egy év, hanem kisebb, pl. egy évszak, mit kell másképpen csinálni? Sok állatfajnál a szaporodás csak az év bizonyos időszakában történik, másoknál több évszakban is lehet, de különböző szaporodási rátákkal. A halálozási ráták is sokszor évszakfüggők. Számoljuk, hogy hányadik évszakban tartunk, s mindegyiknél a maga halálozási, illetve szaporodási rátáját használjuk!

Szimulációs lépés:

j:=N

Ciklus i=1-től N-ig

T:=egészrész(T(i))

Ha véletlenszám<E(T,EVS) akkor

T(i):=0 [halál]

különben

X:=Poisson( M(T,EVS) )

Ciklus y=1-től X-ig [születés]

y:=y+1; T(y):=0,25

Ciklus vége

T(i):=T(i)+0,25 [öregedés]

Elágazás vége

Ciklus vége

Ha EVS=4 akkor EVS:=1 különben EVS:=EVS+1

T-táblázat tömörítése

Eljárás vége.

Ha csak egyetlen évszakban lehet szaporodás, akkor az algoritmus egyszerűsödik, s a születési ráták tárolásához elég egyetlen vektort használni. A megoldásban SZAP jelöli a szaporodási évszakot.

Szimulációs lépés:

j:=N

Ciklus i=1-től N-ig

T:=egészrész(T(i))

Ha véletlenszám<E(T,EVS) akkor T(i):=0 [halál]

különben T(i):=T(i)+0,25 [öregedés]

Ciklus vége

Ha EVS=SZAP akkor

Ciklus i=1-től N-ig

T:=egészrész(T(i))

X:=Poisson( M(T) )

Ciklus y=1-től X-ig [születés]

j:=j+1; T(j):=0,25

Ciklus vége

Ciklus vége

Elágazás vége

Ha EVS=4 akkor EVS:=1 különben EVS:=EVS+1

T-táblázat tömörítése

Eljárás vége.

Vissza a tartalomjegyzékhez

3.2. Járvány

Modellünkön további módosításokat végzünk. Először nézzük meg, hogyan hatnak a populációra a járványok! Legyen JV annak a valószínűsége, hogy egy évben van járvány, s ilyenkor a betegség miatti halálozások relatív gyakorisága JH !

A módosított algoritmus:

Szimulációs lépés:

j:=N

Ciklus i=1-től N-ig

Ha véletlenszám<E(T(i)) akkor

T(i):=0 [halál]

különben

X:=Poisson( M(T(i)) )

Ciklus y=1-től X-ig [születés]

j:=j+1; T(j):=1

Ciklus vége

T(i):=T(i)+1 [öregedés]

Elágazás vége

Ciklus vége

T-táblázat tömörítése

Járvány

Eljárás vége.

Vizsgáljuk meg, hogy ebben az évben van-e járvány, s ha van, akkor végezzük el a járvány miatti vizsgálatokat (halálozás)!

Járvány:

Ha véletlenszám<JV akkor

Ciklus i=1-től N-ig

Ha véletlenszám<JH akkor T(i):=0

Ciklus vége

T-táblázat tömörítése

Elágazás vége

Eljárás vége.

Elképzelhető, hogy járvány esetén az egyes korcsoportokban mások a halálozási ráták. Ebben az esetben JH(K) tárolja a halálozási rátákat, s a járvány algoritmusa:

Járvány:

Ha véletlenszám<JV akkor

Ciklus i=1-től N-ig

Ha véletlenszám<JH(T(i)) akkor T(i):=0

Ciklus vége

T-táblázat tömörítése

Elágazás vége

Eljárás vége.

Populációlétszám - "járványos" modellben.Populációlétszám - „járványos” modellben.

Vissza a tartalomjegyzékhez

3.3. Létszámfüggő paraméterek

A halálozási ráták itt is (úgy, mint a populációdinamikai modelleknél) függjenek a létszámtól:

E(j) := E0(j) + c1 * N

M(j) := M0(j) + c2 * N

Szimulációs lépés:

j:=N

Ciklus i=1-től N-ig

Ha véletlenszám<E0(T(i))+C1*N akkor

T(i):=0 [halál]

különben

X:=Poisson(M0(T(i))+C2*N)

Ciklus y=1-től X-ig [születés]

j:=j+1; T(j):=1

Ciklus vége

T(i):=T(i)+1 [öregedés]

Elágazás vége

Ciklus vége

Eljárás vége.

Ezzel elérhető, hogy az egyébként exponenciálisan növekedő populációt is egyensúlyban tartsuk.

Populációlétszám - létszámfüggő paraméterek esetén.Populációlétszám - létszámfüggő paraméterek esetén.

Vissza a tartalomjegyzékhez

3.4. Mesterséges beavatkozás

Ha a populáció egy állattenyésztő telep állataiból áll, akkor van értelme egy másfajta kérdés feltevésének is. Mennyi, s milyen korú állatot célszerű levágni, hogy a létszám állandó maradjon, a szaporodás pedig a lehető legnagyobb ütemű legyen? Módosítsuk az eredeti algoritmust úgy, hogy a programmal kísérletezhessünk, s a program különböző, általunk adott vágási stratégiák alapján mutassa be a változásokat!

Jelölje V(i) az adott évben az i . korcsoportból levágandó egyedek számát!

Szimulációs lépés:

j:=N

Ciklus i=1-től N-ig

Ha véletlenszám<E(T(i)) akkor

T(i):=0 [halál]

különben

X:=Poisson( M(T(i)) )

Ciklus y=1-től X-ig [születés]

j:=j+1; T(j):=1

Ciklus vége

T(i):=T(i)+1 [öregedés]

Elágazás vége

Ciklus vége

T-táblázat tömörítése

Vágás

Eljárás vége.

Vágás:

Ciklus i=1-től N-ig

Ha V(T(i))>0 akkor V(T(i)):=V(T(i))-1; T(i):=0

Ciklus vége

T-táblázat tömörítése

Eljárás vége.

Vissza a tartalomjegyzékhez

3.5. A modell metamorfózisai

A modell használatakor felmerült probléma a memória. A modellbeli objektumok ilyen ábrázolásával hamar korlátokba ütközünk. Használjunk a T() vektor helyett egy másik értelmezésű vektort ( S(K) )! Ebben azt tároljuk, hogy melyik korcsoportnak mennyi éppen a létszáma. Most nem egyedeket tárolunk, hanem egyes osztályok darabszámát. Ekkor a születés, illetve az öregedés (transzformációk az egyes osztályok között) hatása zavarná a következőkkel való foglalkozást, ezért az egy időegységgel későbbi állapot időleges tárolására egy másik vektorra is szükség van ( U(K) ). A módosított algoritmus:

Szimulációs lépés:

U():=0

Ciklus i=1-től K-ig

Ciklus j=1-től S(i)-ig

Ha véletlenszám≥E(i) akkor

U(1):=U(1)+Poisson(M(i)) [születés]

U(i+1):=U(i+1)+1 [öregedés]

Elágazás vége

Ciklus vége

Ciklus vége

S():=U()

Eljárás vége.

Ez a program most már kevés adatot használ, de még nagyon lassú nagy létszámú populációkra. Meg kell tehát oldani a sebesség kérdését is! Ne kezeljük egyedenként a populációt, hanem foglalkozzunk egyszerre egy korcsoporttal. Számítsuk ki, hogy mennyi a korcsoport utódszámának várható értéke, valamint mennyi a közülük következő korcsoportba lépők számának várható értéke, s ez adja meg a következő évi állapotot!

Szimulációs lépés:

U:=0

Ciklus i=K-tól 2-ig -1-esével

S(i):=S(i-1)*(1-E(i-1))

U:=U+S(i)*M(i-1)

Ciklus vége

S(1):=U

Eljárás vége.

Ez a biológiai probléma az alábbi ún. Leslie-mátrixra vezet.

Definíció

Ha tudjuk, hogy az egyes korcsoportokba tartozó egyedek milyen szaporák (azaz hány utóddal járulnak a népességhez), és milyen eséllyel léphetnek át a következő korcsoportba, akkor a korcsoportok létszámváltozását egy alábbi alakú mátrixszal való szorzással számíthatjuk ki:

A Leslie-mátrix szerkezete.A Leslie-mátrix szerkezete.

ahol M1, M2, M3, ...Mk az i. korcsoportba tartozók utódainak átlagos száma; á2, á3, ...ák az i. korcsoportba való „átlépés” valószínűsége (ái = 1 – E(i – 1)).

Ekkor tehát az új korcsoporteloszlást így számíthatjuk ki ( S , U legyen a populáció egyedszám-eloszlása az aktuális és a következő időegységben, L jelölje a Leslie-mátrixot):

Szimulációs lépés:

U:=L*S [ mátrix szorzása vektorral ]

S:=U

Eljárás vége.

Az L*S mátrix szorzás matematikai értelmezése.Az L*S mátrix szorzás matematikai értelmezése.

Természetesen e szokásos biológiai ábrázolás számítástechnikai szempontból célszerűtlen, ugyanis nagyon hely- és időpazarló megoldást tesz lehetővé: a mátrix elemeinek nagy része 0 értékű, amit felesleges tárolni, valamint az eredmény kiszámításában sem játszik szerepet. Tehát számítástechnikai szempontból az ezt megelőző megoldást kell választanunk.

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.
(ISBN 978-963-284-631-6)

A tananyag az ELTESCORM keretrendszerrel készült