Olen pienen ikäni varrella ehtinyt pelata jokusen (sataa) tuntia SimCityä, peliä, joka asettaa pelaajan kaupunginjohtajan paikalle. Jonkun aikaa sitten pohdiskelin, millaisia elementtejä kaupunkisimulaatioon tarvitaan. Peliä ei kannata odotella tältä suunnalta — se vaatisi liikaa pitkäjänteisyyttä minulta! — mutta blogimateriaaliksi aihe kyllä sopii.
Ensimmäinen ja isoin kysymys on, kuinka asukkaat mallinnetaan. Tähän on kaksi isoa lähestymistapaa: jokaisen asukkaan simulointi erikseen (nykyään suosittu) tai jonkinlainen tilastollinen malli (epätarkka mutta hitaille koneille sopiva). Minua kiinnostaa jälkimmäinen.
Pelin kannalta kiinnostavat asukkaiden ikä ja tulo-/koulutustaso (yhdistin nämä yksinkertaisuuden vuoksi). Ikä siksi, että se vaikuttaa opiskelijoihin, työvoimaan ja väestönkasvuun; tulo- ja koulutustaso puolestaan verotukseen ja työpaikkojen rakenteeseen. Minusta loogisin idea oli luoda näistä taulukko:
Väki voi liikkua ruutujen välillä helppojen sääntöjen mukaan:
- Lapsista tietty osuus (joka kuukausi $\frac{1}{12 \cdot 18}$) kasvaa aikuisiksi. Rivi määräytyy tarjolla olevan koulutuksen perusteella jollakin säännöllä.
- Aikuisista tietty osuus lisääntyy, mikä muuttaa lasten määrää. Samoin tietty osa siirtyy eläkkeelle.
- Eläkeläisistä tietty osuus menehtyy vanhuuteen. Terveydenhuollon taso eli eläkeiän kesto vaikuttaa osuuteen.
Erittäin rajuksi yksinkertaistukseksi tämä tuntui Excel-leikkien perusteella suhteellisen toimivalta. Tietenkin siinä on puutteensa: esimerkiksi vauvabuumi ei näy viiveellä vaan välittömästi aikuisten määrässä — varsin pieni ongelma kaupunkipelissä. Juuri tätä pidemmälle en jaksanut mallia kehittääkään, mutta tehdään siihen vielä pari muutosta.
Ensimmäinen muutos saadaan aikaan tarkasteluväliä kaventamalla. Muutetaan lapsi-aikuinen-eläkeläinen-järjestelmä ikävuosittaiseksi. Nyt vauvabuumit heijastuvat oikeantasoisella viiveellä, ja esimerkiksi kuolleisuutta voidaan tutkia ikävuosittain. Entä miten olisi kuukausittain? Tai päivittäin? Tai vaikka sekunnin tarkkuudella, jolloin yhdellä tarkastelujaksolla on enintään yksi asukas. Mitenkään käytännöllistä se ei olisi, mutta teoriassa tilastollinen menetelmä on muutettavissa yksilötasoiseksi.
Otetaan esiin kaava
Siitä onkin aikaa, kun olen puhunut logaritmeista.
Edellinen malli oli diskreetti: se etenee aikayksikkö kerrallaan, ja tarkkuutta voi parantaa aikavälejä pienentämällä. Jos välejä pienennetään loputtomiin niin kauan, että ne sulautuvat toisiinsa, saadaan jatkuva malli. Kaavan muodossa väestö kehittyy suunnilleen tällä tavalla:
\[ \text{populaatio} = \text{edellinen populaatio} + \text{syntyneet} - \text{kuolleet}. \]Yhtä ihmistä kohti syntyy $S$ lasta ja kuolleisuuden osuus on $K$. Merkitään väkilukua ajan funktiona $f(t)$. Väkiluvun muutos — eli sen derivaatta — koostuu syntymistä ja kuolemista ja näyttää lukiosta tutuilla merkinnöillä siis tältä:
\[ f'(t) = (S-K)f(t). \]Kyseinen yhtälö on differentiaaliyhtälö, johon kuuluu sekä funktio että sen derivaatta. Pitkän matematiikan logaritmikurssin käyneet tietävät, minkä funktion derivaatta on funktio itse: eksponenttifunktion $e^x$. Yhtälön ratkaisuksi saadaan
\[ f(t) = Ce^{(S-K)t}. \]$C$ on vakio, jonka arvo täytyy vielä määrittää. Hetkellä $t=0$ eksponentti on nolla eli $f(t)=C$. Vakion arvo on siis alustava väkiluku.
Kokeillaan tätä kaavaa jotenkin. Nyky-Suomen tiedoilla kuvaaja näyttäisi sangen tylsältä — ilman maahanmuuttoa väkiluku olisi erittäin loivassa laskussa — mutta 40-luvun vauvabuumin luvuilla käppyrään saadaan jotain muotoa. Vuoden 1947 alussa väkiluku oli 4,05 miljoonaa, vuosittainen syntyvyys 0,027 lasta asukasta kohti ja kuolleisuus 0,011 per asukas. Lausekkeen $4050000e^{0.016t}$ kuvaaja näyttää seuraavien 70 vuoden ajalla tältä:
Jos syntyvyys ei olisi laskenut normaaliksi, väkiluku olisi nyt reippaat 12 miljoonaa!
Tutkittaessa eläinpopulaatioita otetaan usein huomioon myös petojen ja saaliiden suhde. Seurauksena syntyvissä kuvaajissa on usein jaksollisia ja lievästi kaoottisia vaihteluita. Samoin voidaan ottaa huomioon ympäristön kantokyky — ravinnon määrä rajoittaa populaation johonkin arvoon. Ihmisväestöä ennustettaessa ei tietenkään välitetä pedoista, mutta kantokyvyllä on merkitystä. Suomessa laskenut syntyvyys on jo tasannut väkiluvun lähes vakioksi, mutta milloin maailmanlaajuinen eksponentiaalinen kasvu loppuu?
Ei kommentteja:
Lähetä kommentti
Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.