Arvutisimulatsioon

**Arvutisimulatsiooniks** nimetatakse simulatsiooni (vaata ka simuleerimine), mille eesmärgiks on matkida mingi uuritava süsteemi käitumist ning mille simuleerimine toimub kas ühes arvutis või koguni terves arvutite võrgus.

Tänapäeval on arvutisimulatsioonid muutunud väga tähtsaks modelleerimise viisiks erinevate looduslike süsteemide modelleerimises. Modelleerimisvaldkondadeks võivad olla näiteks füüsika, arvutiteadus, astrofüüsika ja keemia, aga ka bioloogia, majandus, psühholoogia ja sotsiaalteadused. Neid simulatsioone saab kasutada uute teadmiste produtseerimiseks, uute tehnoloogiate disainimiseks, süsteemi keerukuse hindamiseks ja paljuks muuks.

Arvutisimulatsioone võivad läbi viia arvutiprogrammid, mida käitab üks arvuti ja mille simuleerimiseks kuluv aeg on minutites, aga ka programmid, mille simulatsiooni käitab kogu arvutite võrgustik ning mille simuleerimiseks kuluv aeg on päevades, nädalates või veelgi kauem. Arvutisimulatsioonide mudelid ületavad tihtipeale keerukuselt traditsioonilist paberi ja pliiatsi stiilis modelleerimist ja esineb ka mudeleid, mida ei olegi paberi ja pliiatsi meetodil võimalik modelleerida. Näiteks detsembris 1997 korraldati Ameerika Ühendriikides simulatsioon, mis matkis ühe väe pealetungi teisele kõrbealal, kusjuures simulatsioonis modelleeriti kokku 66 239 tanki, veoautot ja teisi sõidukeid. Selleks kasutati USDoDi superarvuteid, kuna tavaarvutite arvutusvõimekus ei olnud nii keeruka simulatsiooni jaoks piisav. Teiseks selliseks näiteks on materjali deformatsiooni mudel, mille simuleerimiseks kasutati 1 000 000 000 aatomit.

## Simulatsioon või mudel
Termini arvutimudel all mõeldakse algoritme ja võrdusi, mis kirjeldavad modelleeritava süsteemi käitumist. Arvutisimulatsioon seevastu tähendab sellise programmi tööd, mis sisaldab andmeid ülalkirjeldatud algoritmide ja võrduste kohta. Arvutisimulatsioon on seega arvutimudeli arvutis käitamine ehk simuleerimine.

## Ajalugu
Arvutisimulatsioonide ja arvutite kiire areng käivad käsikäes. Mida täiuslikumad on arvutid, seda keerukamaid simulatsioone saab käitada. Esimeseks suuremaks arvutisimulatsiooniks oli Manhattani projekt. Selle eesmärk oli teise maailmasõja ajal tuumarelva plahvatuse protsessi simuleerimine. Selle teostamiseks simuleeriti 12 mittekattuvat kera Monte Carlo algoritmiga.

## Sisendandmed ja nende ettevalmistamine
Simulatsioonide ja mudelite jaoks vajalik andmete hulk varieerub. Mõne simulatsiooni jaoks on vaja sisestada vaid paar numbrit (näiteks vahelduvvoolu lainekuju juhtmes), kuid mõne teise jaoks on vaja terabaitides andmeid (näiteks ilmastiku- ja kliimamudelid).

Samuti varieeruvad nende andmete allikad. Nendeks võivad olla näiteks sensorid ja teised mudeliga ühendatud seadmed; kontrollpinnad, mida kasutatakse simulatsiooni suunamiseks; käsitsi sisestatud andmed ja teiste simulatsioonide tulemusena saadud andmed. Lisaks sellele võivad varieeruda veel sisendandmete sisestamise ajad. Invariantsed andmed on tavaliselt juba eelnevalt mudeli koodis defineeritud (näiteks π väärtus), eelnevalt kogutud andmed sisestatakse simulatsiooni alguses (nt juba tehtud katse tulemused või mõne teise simulatsiooni tulemused), jooksvad andmed sisestatakse simulatsiooni ajal (sensoritelt tuleb pidevalt uut informatsiooni, mis edastatakse jooksvalt simulatsiooni sisendisse). Välistest allikatest andmeid sisestades peab kasutaja teadma, millises vormingus tuleks andmed sisestada, vastasel juhul ei pruugi simulatsiooni süsteem neid õigesti lugeda osata. Isegi väikesed vead algandmetes võivad viia suurte vigadeni simulatsiooni tulemustes. Selline simuleerimisele omane viga oli peamiseks kaoseteooria loomise põhjuseks.
## Arvutisimulatsioonide ja mudelite tüübid
Arvutimudelid saab jaotada rühmadesse vastavalt atribuutide paaridele: stohhastiline või deterministlik (selle erijuhuna ka kaootiline), fikseeritud või dünaamiline olek, pidev või diskreetne, lokaalne või hajutatud. Võrrandid defineerivad elementidevahelised sidemed konkreetses mudelis ja üritavad leida oleku, mille korral süsteem on tasakaalus. Selliseid mudeleid kasutatakse tihti füüsikaliste süsteemide simuleerimiseks, kuna see on võrreldes dünaamilise simulatsiooniga lihtsam.

Simulatsiooni tüüpe iseloomustavad järgmised kirjeldused:
*Dünaamilise süsteemi simulatsiooni mudel muutub vastavalt sisendandmete muutustele.
*Stohhastilised mudelid kasutavad juhuslike arvude generaatoreid, modelleerimaks tõenäosusi või juhuslikke sündmusi.
*Diskreetse sündmuse simulatsioon tegeleb sündmuste ajalise järjestusega (enamik arvutisimulatsioone on seda tüüpi). Selles simulatsioonitüübis on simulaatori ülesandeks hallata erinevatest sündmustest moodustuvat järjekorda, mis on ajaliselt õiges järjekorras. Simulaator loeb järjekorda ja käivitab uue sündmuse pärast eelmise valmissaamist, kusjuures ei ole tähtis, kas simulatsioon käivitatakse reaalajas või mitte. Tavaliselt on tähtsam juurdepääs simulatsiooni tekitatud andmetele, et näha protsessi erinevaid samme.
*Kestev dünaamiline simulatsioon on simulatsioon, mis otsib numbrilisi lahendusi regulaarsetele (ODE) või algebralistele diferentsiaalvõrranditele (DAE). Simulatsioon lahendab perioodiliselt kõik võrrandid ja kasutab lahendiks saadud numbreid simulatsiooni oleku ja väljundi muutmiseks. Seda simulatsiooni tüüpi kasutatakse näiteks lennusimulaatorites, keemiliste protsesside modelleerimises ja elektriahelate simuleerimises. Algselt kasutati selliste simulatsioonide jaoks analoogarvuteid, kuid 1980. aastate lõpus mindi analoogarvutitelt üle digitaalarvutitele, millel on võimalik emuleerida analoogarvuti käitumist.
* Jagatud simulatsioonid on sellised simulatsioonid, mille arvutamiseks jagatakse töö iseseisvateks alamosadeks, mis omakorda jagatakse laiali arvutite võrgustikus. Sellise arvutamiseks on kasutusel standardid: koondtasandi simulatsiooni protokoll (*Aggregate Level Simulation Protocol* ehk ALSP), jagatud interaktiivne simulatsioon (*Distributed Interactive Simulation* ehk DIS), kõrgtaseme arhitektuur (*High Level Architecture* ehk HLA) ning testimist ja õpetamist võimaldav arhitektuur (*Test and Training Enabling Architecture* ehk TENA).

## Visualiseerimine
Algselt esitati simulatsiooni tulemusena saadud andmeid tabeli või maatriksina. Selle esituse eesmärgiks oli näidata, kuidas väljundandmed sõltusid simulatsiooni parameetrite muutumisest. Psühholoogid on aga kindlaks teinud, et inimesed tajuvad trende kiiremini, kui nad vaatavad maatriksite asemel graafikuid, animatsioone või simulatsiooni tulemustest valmistatud liikuvaid pilte (CGI). Liikuvalt pildilt ei saa alati välja lugeda numbreid või matemaatilisi võrrandeid, kuid liikuvat ilmastiku kaarti jälgides saab kindlaks teha, millises suunas liigub vihm väga kiiresti. Kui aga vihma suuna kindlakstegemiseks kasutatakse ainult numbritest koosnevat maatriksit, siis võtaks see protsess kindlasti kauem aega.

## Arvutisimulatsioonid teaduses

Geneerilise arvutisimulatsiooni tüübi üheks näiteks teaduses on numbriline diferentsiaalvõrrandite simulatsioon, mida ei saa analüütiliselt lahendada. Sellesse kategooriasse kuuluvad näiteks pidevaid süsteeme hõlmavaid teooriaid nagu kosmoloogia, vedelike dünaamika, katkematu mehaanika ja keemiline kineetika. Teiseks näiteks on stohhastiline simulatsioon, mida kasutatakse tavaliselt diskreetsete süsteemide simuleerimiseks. Nendes süsteemides toimuvad sündmused tõenäosuslikult ja seega ei saa neid otseselt kirjeldada diferentsiaalvõrrandite abil. Sellesse kategooriasse kuuluvad näiteks geneetiline triiv ja biokeemilised või geeniregulatsiooni võrgustikud väikese arvu molekulide puhul.

Spetsiifilised arvutisimulatsioonide näited:
* Statistilised simulatsioonid, mille aluseks on suure arvu sisendandmete kokkulangevus (näiteks tasakaalulise temperatuuri ennustamine veekogus pärast sadu). 
* Üksikindiviidi põhist modelleerimist kasutatakse olukordades, kus üksikud simulatsiooni osad ei ole mitte kõik ühesugused, vaid varieeruvad, näiteks kalade rahvastikudünaamika (matemaatilised mudelid eeldaksid, et kõik kalad käituvad antud situatsioonis alati täpselt ühtemoodi, üksikindiviidi põhine aga mitte).
* Etapiline dünaamiline mudel, mille üheks kasutusvaldkonnaks on hüdroloogia transpordi mudelid, mis kirjeldavad jõgede ja ojade voolamist, arvutades seeläbi välja vee kvaliteedi parameetrid. 
* Arvutisimulatsioon, mis kasutab molekulaarset modelleerimist uute ravimite avastamiseks.
* Arvutuslikke vedelikudünaamika simulatsioone kasutatakse õhuringluse, vee ja muude vedelike käitumise simuleerimiseks. Simulatsioonid võivad olla kahemõõtmelised, kuid ka ühe- ja kolmemõõtmelised (näiteks õhuringluse simulatsioon toas küttekeha tõttu).

### Simulatsioonikeskkonnad füüsikas
Tänapäevaks on välja töötatud palju graafilisi simulatsioonikeskkondi. Sellised on näiteks COMSOL Multiphysics, simulationHub ja OpenModelica. Mõned keskkonnad visualiseerivad simulatsiooni ise, mõne puhul tuleb aga visualiseerimine teha eraldi programmiga. Üks selline vabavaraline visualiseerimistarkvara on Ovito.

## Vaata ka
* Emulaator

## Viited

## Kirjandus

* http://www.cuideas.org/publications/ "A Resource Allocation Framework for Experiment-Based Validation of Numerical Models," Journal of Mechanics of Advanced Materials and Structures (Taylor & Francis).
* Young, Joseph and Findley, Michael. 2014. "Computational Modeling to Study Conflicts and Terrorism." Handbook of Research Methods in Military Studies edited by Soeters, Joseph; Shields, Patricia and Rietjens, Sebastiaan. pp.&nbsp;249–260. New York: Routledge,
* R. Frigg and S. Hartmann, Models in Science. Entry in the *[[Stanford Encyclopedia of Philosophy]]*.
*E. Winsberg Simulation in Science. Entry in the* [[Stanford Encyclopedia of Philosophy]]*.
* A.K. Hartmann, Practical Guide to Computer Simulations, Singapore: World Scientific, 2009
* S. Hartmann, The World as a Process: Simulations in the Natural and Social Sciences, in: R. Hegselmann et al. (eds.), *Modelling and Simulation in the Social Sciences from the Philosophy of Science Point of View*, Theory and Decision Library. Dordrecht: Kluwer 1996, 77–100.
* E. Winsberg, *Science in the Age of Computer Simulation*. Chicago: University of Chicago Press, 2010.
* P. Humphreys, *Extending Ourselves: Computational Science, Empiricism, and Scientific Method*. Oxford: Oxford University Press, 2004.
* James J. Nutaro, *Building Software for Simulation: Theory and Algorithms, with Applications in C++*. Wiley, 2010.