# Computersimulatie

Een computersimulatie is een simulatie waarbij men een deel van de werkelijkheid nabootst met een model in een computerprogramma.

## Ontstaan

Computersimulatie ontwikkelde zich parallel met de snelle groei van de computer. Wellicht de eerste toepassing op grote schaal gebeurde tijdens het Manhattan Project in de Tweede Wereldoorlog om het proces van nucleaire detonatie te modelleren. Het was een simulatie van 12 harde bollen met behulp van een Monte-Carlosimulatie.

## Inleiding

Computersimulaties zijn vooral van belang voor continu veranderende systemen, waarvan elke volgende toestand (mede) afhankelijk is van de vorige toestand. Bijvoorbeeld: de toestand in de atmosfeer (het weer) is afhankelijk van de toestand van de atmosfeer in het verleden, maar ook van enkele externe factoren zoals zonneschijn.
Er zijn twee hoofdgroepen van computersimulaties: dynamische en statische.
In dynamische computersimulaties worden de veranderingen van het systeem in de tijd nagebootst. Om deze continue veranderingen goed op een computer te kunnen berekenen wordt meestal gekozen voor een discrete benadering. Hierbij wordt de tijd opgedeeld in kleine blokjes. De toestand van het systeem wordt op basis hiervan stapsgewijs berekend, door middel van iteratie. De optimale grootte van deze blokjes kan proefondervindelijk worden vastgesteld of op basis van statistische methoden (afhankelijk van de gewenste betrouwbaarheid). Naast de tijd kan bij bepaalde ruimtelijke modellen ook de ruimte opgedeeld worden in kleine blokjes. We noemen dit cellulaire automaten.
In statische computersimulaties wordt de verandering van het systeem in één rekenslag berekend. Het systeem vervalt dan in een keer van de ene toestand in de andere. Deze simulaties zijn vooral bekend uit de technische wereld en worden vooral gebruikt voor ontwerp-toepassingen, waar veranderingen van het ontwerp in afhankelijkheid van omgevingsfactoren worden doorgerekend (bijvoorbeeld in de architectuur).

## Toepassingen van computersimulatiemodellen

Er zijn verschillende soorten toepassingen van computersimulaties:
* Wetenschappelijke modellen. Het doel hiervan is uiteindelijk om continue processen in hun geheel te begrijpen. In eerste instantie wordt geprobeerd om de op elkaar inwerkende processen in een formule te beschrijven. In een later stadium kan geprobeerd worden om de beschreven processen te verklaren uit onderliggende processen.
* Voorspellende simulaties. Een voor de hand liggend voorbeeld hiervan zijn weersvoorspellingen, maar ook bijvoorbeeld voorspellingen van maansverduisteringen.
* Simulaties ten behoeve van technische ontwerpen. Bij de ontwikkeling van vliegtuigen wordt gebruikgemaakt van windtunnels. In een eerder ontwikkelingsstadium wordt vaak gebruikgemaakt van een simulatie van een windtunnel.
* Simulaties ten dienste van onderwijs. In plaats van met een echt systeem kunnen leerlingen een simulatie gebruiken om iets te leren. Dan kan bijvoorbeeld omdat het veiliger is (denk aan leren over radioactieve processen) of goedkoper. Ook kun je in de simulatie zelf allerlei vormen van instructie inbouwen. SimQuest is een programma waarmee dergelijke simulaties kunnen worden ontwikkeld.
* Simulaties in het bank- en beleggingswezen om beurskoersen te voorspellen voor risicobeheer van geïnvesteerd geld.
De modellen kunnen veel verschillende aspecten van het dagelijks leven representeren:
* Voorspellingen van de ontwikkelingen van landbouwsystemen (boerderijen), om snel de gevolgen van nieuwe beheersmaatregelen (bijvoorbeeld veranderingen in het bouwplan) te kunnen overzien (het gewas groeit altijd sneller in de computersimulatie dan op het veld)
* Simulaties van natuurlijke systemen (ecosystemen), die bijvoorbeeld gebruikt worden om te onderzoeken hoe de waterkwaliteit in een zoetwatermeer kan worden verbeterd door biomanipulatie, of hoe de visproductie in een visvijver kan worden verhoogd
* Proefdiervervangende simulaties. Experimenten met echte proefdieren worden hier vervangen door experimenten met gesimuleerde proefdieren.
* Weervoorspellingen worden gemaakt met behulp van een simulatie van de atmosfeer.
* Vloeistofstromen en warmtestromen in het algemeen worden gesimuleerd volgens de 'eindige-elementen-methode' (finite element analysis).
* Sterkteberekeningen in een mechanisch ontwerp, eveneens volgens de 'eindige-elementen-methode'.
* Botssimulaties voor de automobielindustrie
* Voorspellingen over de verkeersafwikkeling op wegen in het vakgebied van de verkeerskunde
* Nabootsing van menselijke gedragingen, zoals verkeersafwikkeling van voetgangersstromen. Hierdoor kan bijvoorbeeld nagegaan worden hoe mensen zich gedragen bij een noodtoestand. Een praktisch resultaat is bijvoorbeeld de plaatsing van 'drukmuren' voor uitgangen bij massamanifestaties, om het dooddrukken van mensen tijdens de vlucht naar een smalle uitgang te voorkomen.
* In de scheikunde worden computersimulaties gebruikt in de moleculaire mechanica en moleculaire dynamica om eigenschappen van moleculen te voorspellen.
* In de opleiding van piloten worden computersimulaties gebruikt om te leren omgaan met een bepaald vliegtuig of met een bepaalde situatie.
* In de astrofysica worden simulaties gemaakt van veel-deeltjes modellen.
* In de procesindustrie worden computersimulaties gebruikt om processen en stromen te optimaliseren.
Andere voorbeelden van toepassingen van een computersimulator:
* pilotenopleidingen: vliegtuigsimulators
* simulatiegames voor de PC-markt zoals SimCity, Civilization en BAHN.

### Beschrijvende en verklarende simulaties

In de wetenschap worden computersimulaties ook gebruikt na te gaan of processen voldoende worden begrepen.
In de economie worden simulaties gebruikt om een voorspelling te maken van de winst / cashflow die een bepaalde beslissing oplevert.

### Simulatie van een raffinaderij

Een voorbeeld van een computersimulatie in de procesindustrie is een raffinaderij. Deze raffinaderijsimulatie geeft de mogelijkheid na te gaan:
* wat de verschillende productiestromen (eindproducten) zullen zijn voor een bepaalde aardoliesoort (beginproduct)
* een aardoliesoort te kiezen die het best geschikt is voor de gesimuleerde raffinaderij (maximum financiële opbrengst)
* hoe operators van de raffinaderij moeten reageren op noodtoestanden, met de mogelijkheid computeroperators van de raffinaderij noodtoestanden te laten inoefenen, zonder het echte raffinageproces te verstoren

## Maken van computersimulatie-programma's

Een computersimulatie is een logisch - wiskundig model, dat de wetten van de natuurkunde, scheikunde en andere natuurwetenschappen die van toepassing zijn op het nagebootste model zo nauwkeurig mogelijk tracht te analyseren en na te bootsen.
Voor sommige simulaties zal de werking nagebootst worden met eenzelfde tijdsverloop. Andere modellen zullen een versneld of vertraagd verloop van de werkelijkheid laten zien om het resultaat van trage en langdurende processen te kunnen voorspellen.
Door deze theoretische beschrijvingen (vaak in de vorm van vergelijkingen en wetten) in een bepaalde computeromgeving in te voeren kan een systeem nagebootst worden op een computer.
Een computersimulatie wordt steeds bijgewerkt aan de hand van de waarnemingen van het nagebootste systeem die verschillen van de waarnemingen van de computersimulatie. Hierdoor kan men de realiteit steeds beter benaderen. Dit noemt men kalibreren. Het controleren of het model juist functioneert in situaties die niet zijn gebruikt voor de kalibratie noemt men validatie.

## Onderverdeling ontwikkelomgevingen computersimulaties

Grofweg zijn er drie computersimulatie-ontwikkelomgevingen aan te geven:
* vakspecifieke simulaties
* blokgeoriënteerde simulaties
* object-georiënteerde simulaties.
Computersimulaties worden vaak in geavanceerde computersimulatie-omgevingen uitgevoerd, veelal op speciale computers.
Ze kunnen echter in elke programmeeromgeving, bijvoorbeeld Visual Studio of Delphi worden gemaakt. De reden waarom men echter voor speciale simulatie-omgevingen kiest, is dat deze veel handelingen en onderdelen kunnen vereenvoudigen en stroomlijnen en vaak voorgeprogrammeerde bibliotheken bevatten. Dit zijn pakketjes die gericht zijn op het simuleren van een specifiek onderdeel. Zo hoeft iemand die bijvoorbeeld de processen op een raffinaderij simuleert niet alle pompen, kleppen en andere onderdelen opnieuw in te voeren, maar kunnen deze direct uit de bibliotheek worden gehaald. Een open source-pakket voor simulaties is GNU Scilab.