ModEst:Q&A lopende estafette: verschil tussen versies
(106 tussenliggende versies door 2 gebruikers niet weergegeven) | |||
Regel 1: | Regel 1: | ||
− | <div style="padding:4px; background-color:#e0f8ff;border:2px dotted #90c0e0"> | + | <div style="font-size: 12pt; padding:4px; background-color:#e0f8ff;border:2px dotted #90c0e0";margin-bottom: 8px> |
− | + | '''''Het modelleerpracticum wordt niet meer in estafettevorm aangeboden!''''' | |
− | + | <small>Op deze pagina verzamelden we antwoorden op vragen die n.a.v. de lopende estafette werden gesteld.<br> | |
+ | We hebben deze pagina voor dit collegejaar (2024-2025) opgeschoond door alle organisatorische en technische vragen te verwijderen.</small> | ||
</div> | </div> | ||
− | + | <div><br></div> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Onderzoeksvraag == | == Onderzoeksvraag == | ||
'''Mag je bij "... gegeven ''x'', ''y'' en ''z''" veronderstellen dat die gegeven grootheden constant zijn?''' | '''Mag je bij "... gegeven ''x'', ''y'' en ''z''" veronderstellen dat die gegeven grootheden constant zijn?''' | ||
− | :Indien er geen reden is om aan te nemen dat exogene grootheden dynamisch zijn, dan mag je ze constant | + | :Indien er geen reden is om aan te nemen dat exogene grootheden dynamisch zijn, dan mag je veronderstellen dat ze constant zijn ''tijdens een run''. |
+ | :Het is wel de bedoeling dat je ze opneemt in het experimenteel ontwerp, dus van run tot run kunnen ze wel een andere waarde krijgen. | ||
:Bij sommige vraagstukken wordt expliciet aangegeven welke exogene grootheden tijdsafhankelijk zijn en daarom bij de operationalisatie (estafettestap 2) als een functie van de tijd moeten worden gedefineerd, d.w.z. x = f(t) (zie [[Functievoorschrift]]). | :Bij sommige vraagstukken wordt expliciet aangegeven welke exogene grootheden tijdsafhankelijk zijn en daarom bij de operationalisatie (estafettestap 2) als een functie van de tijd moeten worden gedefineerd, d.w.z. x = f(t) (zie [[Functievoorschrift]]). | ||
Regel 57: | Regel 34: | ||
::D ~ U(1, C) | ::D ~ U(1, C) | ||
:dan is D een stochastische ''variabele'', en hoort daarom in het modelschema te staan. | :dan is D een stochastische ''variabele'', en hoort daarom in het modelschema te staan. | ||
+ | |||
+ | '''Als om een kans of een kansverdeling wordt gevraagd, worden dat dan uitvoervariabelen in het modelschema?''' | ||
+ | :Als je een modelvergelijking voor een gevraagde kans ''p'' opneemt in je operationele model (bijvoorbeeld ''p'' = Σ<sub>t</sub>X<sub>t</sub>/N bij een simulatietijd van N tijdstappen), dan wordt daarmee ''p'' een uitvoervariabele, en die hoort dan als zodanig in je modelschema te staan. | ||
+ | :Een [[kansverdeling]] is zelf geen variabele, maar een ''eigenschap'' van een stochastische variabele. Die [[stochast]] is dan een uitvoervariabele van je model. | ||
+ | :N.B. Uitvoervariabelen zijn per definitie "de variabelen waarvan je de waarden wilt zien", dus ook de variabelen die volgens de opdracht je in een grafiek moet weergeven zijn uitvoervariabelen. | ||
== Systeemschets == | == Systeemschets == | ||
'''Mag je in de systeemschets gebruik maken van een legenda of moet alles in de schets zelf staan?''' | '''Mag je in de systeemschets gebruik maken van een legenda of moet alles in de schets zelf staan?''' | ||
:Een systeemschets moet direct herkenbaar zijn, dus zou er geen legenda nodig moeten zijn (een legenda is nodig voor ''[[Representatie#Symbolisch|symbolische]]'' representatie, en afgezien van de tekst van de labels hoort een systeemschets geen symbolische elementen te bevatten). | :Een systeemschets moet direct herkenbaar zijn, dus zou er geen legenda nodig moeten zijn (een legenda is nodig voor ''[[Representatie#Symbolisch|symbolische]]'' representatie, en afgezien van de tekst van de labels hoort een systeemschets geen symbolische elementen te bevatten). | ||
− | |||
− | |||
− | |||
== Conceptueel model == | == Conceptueel model == | ||
Regel 72: | Regel 51: | ||
:De genoemde modellen kunnen ieder afzonderlijk voldoende zijn als conceptueel model, maar je [[conceptueel model|conceptuele model]] moet ''alle'' concepten en onderlinge relaties weergeven die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Het kan dus goed zijn dat je meerdere diagrammen nodig hebt in je representatie van je conceptuele model. | :De genoemde modellen kunnen ieder afzonderlijk voldoende zijn als conceptueel model, maar je [[conceptueel model|conceptuele model]] moet ''alle'' concepten en onderlinge relaties weergeven die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Het kan dus goed zijn dat je meerdere diagrammen nodig hebt in je representatie van je conceptuele model. | ||
+ | |||
+ | '''Is een causalerelatiediagram / toestandsdiagram / voorraad-stroomdiagram verplicht?''' | ||
+ | |||
+ | :Nee. De conceptualisatie moet ''alle'' concepten en onderlinge relaties weergeven. Als dat kan met één type diagram, is het niet nodig er meer op te nemen. Mocht dat het gekozen conceptuele model erg verduidelijken, dan ''mag'' het uiteraard wel. | ||
+ | :Wanneer gevraag wordt een cybernetisch model te construeren, is het niet verplicht dit ook te tekenen. Het kan duidelijk zijn om een plaatje toe te voegen (en dan een op de casus toegespitst plaatje, niet van het [[Cybernetisch_model|standaard CM]]), maar noodzakelijk is dit niet: het kan ook duidelijk in tekst weergegeven worden (zie het voorbeeld bij [[ModEst:Conceptueel_model|de instructies voor Stap 1]]). | ||
+ | |||
+ | '''Gevraagd wordt om een ''dynamisch'' model. Moet een CRD dan altijd een feedbacklus bevatten?''' | ||
+ | |||
+ | :Nee. De dynamiek kan ook een "externe" oorzaak hebben. Denk bijv. aan de dag-nachtcyclus die voor een dynamische opwekking van elektriciteit door een zonnepaneel zorgt. Maar ook een grootheid waarvan de waarde niet varieert (bijv. de valversnelling) kan voor dynamiek zorgen. De snelheid van een vallend voorwerp neemt immers per tijdstap toe. | ||
+ | :Kenmerk van een dynamisch model is dat het de toestandsverandering van het systeem in de loop van de tijd laat zien. Wat die verandering veroorzaakt kan van model tot model heel verschillend zijn. Daarbij kan een feedbacklus een rol spelen, maar dat hoeft niet. | ||
+ | :Omgekeerd geldt wel altijd dit: Als een [[Causalerelatiediagram|CRD]] een feedbakclus bevat, dan beschrijft het een dynamisch systeem. | ||
+ | |||
+ | '''Moet je in een conceptueel model ook natuurconstanten opnemen?''' | ||
+ | |||
+ | :Je conceptuele model moet ''alle'' relevante grootheden in het systeem benoemen. Het maakt niet uit of ze constant zijn of van waarde kunnen veranderen. Natuurconstanten zoals bijv. de valversnelling zijn [[Grootheid|grootheden]] die meestal niet expliciet als "gegeven" in de onderzoeksvraag worden vermeld, maar wel relevant kunnen zijn en dan dus in je model benoemd moeten worden. | ||
+ | :N.B. Wiskundige constanten zoals π zijn geen natuurconstanten, dus die laat je weg. | ||
'''Alle concepten en relaties in een toestandsdiagram?''' | '''Alle concepten en relaties in een toestandsdiagram?''' | ||
Regel 77: | Regel 72: | ||
Wij hebben voor een toestandsdiagram gekozen, en het wordt daarin heel onoverzichtelijk om alle grootheden toe te voegen. Op de wikipagina wordt niet echt goed duidelijk hoe dit moet met de toestandsdiagram. Moeten ''alle'' grootheden uit de systeemschets aangegeven worden in het toestandsdiagram? | Wij hebben voor een toestandsdiagram gekozen, en het wordt daarin heel onoverzichtelijk om alle grootheden toe te voegen. Op de wikipagina wordt niet echt goed duidelijk hoe dit moet met de toestandsdiagram. Moeten ''alle'' grootheden uit de systeemschets aangegeven worden in het toestandsdiagram? | ||
:Je conceptuele model moet ''alle'' concepten en onderlinge relaties weergeven die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Als dit niet duidelijk kan in een toestandsdiagram, dan is een toestandsdiagram in dit geval blijkbaar niet voldoende als conceptueel model (dat geldt wel vaker voor een toestandsdiagram overigens). Je zult daarnaast dus nog een andere representatie moeten gebruiken. | :Je conceptuele model moet ''alle'' concepten en onderlinge relaties weergeven die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Als dit niet duidelijk kan in een toestandsdiagram, dan is een toestandsdiagram in dit geval blijkbaar niet voldoende als conceptueel model (dat geldt wel vaker voor een toestandsdiagram overigens). Je zult daarnaast dus nog een andere representatie moeten gebruiken. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
'''Moet je bij grootheden in een conceptueel model aangeven of het om een kans of een kansverdeling gaat?''' | '''Moet je bij grootheden in een conceptueel model aangeven of het om een kans of een kansverdeling gaat?''' | ||
Regel 139: | Regel 129: | ||
:Ja. Als je bijvoorbeeld de functie b·sin(c·t) hebt, moet c·t dimensieloos zijn. De grootheid c moet dus de dimensie tijd<sup>-1</sup> hebben, ofwel een frequentie zijn. | :Ja. Als je bijvoorbeeld de functie b·sin(c·t) hebt, moet c·t dimensieloos zijn. De grootheid c moet dus de dimensie tijd<sup>-1</sup> hebben, ofwel een frequentie zijn. | ||
:Dit geldt voor meer wiskundige functies: ook het argument (= dat wat tussen haakjes staat) van een cosinus, of de exponent van een e-macht, moeten dimensieloos zijn. | :Dit geldt voor meer wiskundige functies: ook het argument (= dat wat tussen haakjes staat) van een cosinus, of de exponent van een e-macht, moeten dimensieloos zijn. | ||
− | |||
'''Wij hebben een tijdsafhankelijke exogene variabele m.b.v. een functie geoperationaliseerd. Moeten we ook op die functie dimensieanalyse uitvoeren?''' | '''Wij hebben een tijdsafhankelijke exogene variabele m.b.v. een functie geoperationaliseerd. Moeten we ook op die functie dimensieanalyse uitvoeren?''' | ||
: Ja. Lees de uitleg bij de voorgaande vraag en daarna dit voorbeeld. Wanneer je een flucturerende waterstand weergeeft als W<sub>t</sub> = A·cos(2π·t / T), dan wordt W<sub>t</sub> (in m t.o.v [https://www.rijkswaterstaat.nl/zakelijk/open-data/normaal-amsterdams-peil NAP]) endogeen, en zijn de [[parameter]]s A en T exogeen. Je moet dan laten zien dat A de ''amplitude'' (in m) van de fluctuatie in de waterstand weergeeft, en T (in h) de ''periode'' van de fluctuatie. Als de tijd t ook eenheid h heeft is de vergelijking dimensioneel correct. | : Ja. Lees de uitleg bij de voorgaande vraag en daarna dit voorbeeld. Wanneer je een flucturerende waterstand weergeeft als W<sub>t</sub> = A·cos(2π·t / T), dan wordt W<sub>t</sub> (in m t.o.v [https://www.rijkswaterstaat.nl/zakelijk/open-data/normaal-amsterdams-peil NAP]) endogeen, en zijn de [[parameter]]s A en T exogeen. Je moet dan laten zien dat A de ''amplitude'' (in m) van de fluctuatie in de waterstand weergeeft, en T (in h) de ''periode'' van de fluctuatie. Als de tijd t ook eenheid h heeft is de vergelijking dimensioneel correct. | ||
+ | |||
+ | ==Vroegste tijdstip bepalen waarop een conditie WAAR wordt== | ||
+ | '''Hoe formuleer je wiskundig het tijdstip waarop bijv. de maximale snelheid bereikt wordt?''' | ||
+ | :Meer algemeen ben je op zoek naar een tijdstip waarop het systeem in een specifieke toestand verkeert. Zo'n toestand kun je altijd noteren m.b.v. van een [[Logische symbolen|logische conditie]] net zoals die langs de pijlen van een [[eindigetoestandsautomaat]]. In dit geval wil je noteren dat de snelheid van iets (bijv. een fietser die een helling afrijdt) op tijdstip ''t'' groter of gelijk is aan de hoogste snelheid die die fietser gedurende de afdaling bereikt. Je moet dan dus eerst die hoogst bereikte snelheid ''v''<sub>max</sub> bepalen. Zoals [[Notatie van vergelijkingen|hier]] uitgelegd noteer je dat met de functie ''max'' zo: | ||
+ | ::''v''<sub>max</sub> = max(''v''<sub>0</sub>, ..., ''v''<sub>''t''<small>eind</small>) | ||
+ | :waar ''t''<sub>eind</sub> het laatste tijdstip van de simulatie is. | ||
+ | :Nu kun je de toestand "de fietser rijdt met de hoogste snelheid" noteren als de conditie ''v''<sub>t</sub> = ''v''<sub>max</sub>. | ||
+ | :Tenslotte wil je weten: op welk tijdstip rijdt de fietser voor het eerst zo hard? Met andere woorden: wat is de laagste waarde van tijd t waarop ''v''<sub>t</sub> = ''v''<sub>max</sub>? Zoals [[Verzameling|hier]] uitgelegd noteer je de verzameling van '''alle''' tijdstippen waarop de fietser zo hard rijdt als {t: v<sub>t</sub> = v<sub>max</sub>}. De laagste waarde van ''t'' krijg je dan zo: | ||
+ | ::t<sub>msb</sub> = min({t: v<sub>t</sub> = v<sub>max</sub>}) | ||
+ | :("msb" staat voor "maximale snelheid bereikt"). | ||
+ | |||
+ | '''Hoe bereken je in Excel het tijdstip waarop bijv. de maximale snelheid bereikt wordt?''' | ||
+ | :Eerst bereken je de hoogste snelheid m.b.v. de functie <tt>MAX</tt>. Als die snelheid bijv. in kolom H staat en rij 10 overeenkomt met t=0, dan is de Excelformule bijvoorbeeld <tt>=MAX(H10:H310)</tt> wanneer je in totaal 300 tijdstappen simuleert. | ||
+ | :Daarna zoek je de "index" van die hoogste waarde in de kolom met snelheid m.b.v. de functie <tt>VERGELIJKEN</tt>. | ||
+ | :Als je de waarde van v<sub>max</sub> bijvoorbeeld in cel C3 berekent en de snelheid v<sub>t</sub> dus in kolom H staat met in rij 10 de waarde voor t=0, rij 11 voor t=1, enzovoorts t/m bijv. rij 310, dan gebruik je als formule <tt>=VERGELIJKEN(C3; H10:H310)</tt> | ||
+ | :De ''index''waarde die je krijgt is de positie van de gezochte waarde in de tijdreeks (in dit voorbeeld een getal tussen 1 en 300). | ||
+ | : Het tijdstip is dan (deze indexwaarde min 1) maal de tijdstap Δt. De "min 1" is nodig omdat index 1 tijd t=0 aangeeft. | ||
+ | |||
+ | '''Hoe krijg je dan de waarde van een bepaalde variabele, bijvoorbeeld de verplaatsing, op dat tijdstip?''' | ||
+ | :Als je de index hebt gevonden, dan zoek je ''in de kolom voor de verplaatsing'' de waarde die bij die index hoort m.b.v. de funtie VERSCHUIVING. | ||
+ | :Staat de indexwaarde in cel C3 en de verplaatsing s<sub>t</sub> bijvoorbeeld in kolom D (met in rij 10 weer de waarde voor t=0, rij 11 voor t=1, enzovoorts t/m rij 310) dan is de formule die de gezochte verplaatsing geeft <tt>=VERSCHUIVING(D15; C3-1; 0)</tt> | ||
+ | :Je trekt dus 1 af van de index omdat 1 overeenkomt tijdstip met t=0. | ||
+ | |||
+ | '''In het voorbeeldmodel wordt een andere methode gebruikt om het tijdstip van een gebeurtenis te bepalen. Hoe werkt die?''' | ||
+ | :Je kunt in Excel ook een extra kolom aanmaken waarin je als de conditie WAAR is de tijd zet en anders een lege string. Als de tijd t in kolom A staat dan is voor het hierboven gegeven voorbeeld de formule in de extra kolom voor rij 10 <tt>=ALS(H10=C$3; A10; "")</tt>. Als je deze formule hebt gekopieerd naar alle cellen in de extra kolom (dus rij 11 t/m 310) dan zie je in die kolom eerst een aantal schijnbaar lege cellen (de lege strings "") en vanaf het tijdstip waarop de hoogste snelheid wordt bereikt de tijd zoals die in kolom A staat. Het vroegste tijdstip bereken je dan door over die hele kolom (bijv. kolom K) het minimum te berekenen m.b.v. <tt>=MIN(K10:K310)</tt>. | ||
==Regelmatig terugkerende gebeurtenis== | ==Regelmatig terugkerende gebeurtenis== | ||
'''Hoe geef je in vergelijkingen (en in Excel) weer dat een gebeurtenis met een vaste frequentie optreedt?''' | '''Hoe geef je in vergelijkingen (en in Excel) weer dat een gebeurtenis met een vaste frequentie optreedt?''' | ||
:Als die gebeurtenis ''f'' keer per uur optreedt, dan betekent dat dat er tussen twee opeenvolgende gebeurtenissen steeds 1/''f'' uur zit. Je kunt dat dan modelleren door behalve een binaire variabele (met 1 = "de gebeurtenis treedt op") een ''timer''-variabele aan je model toe te voegen. Zo'n ''timer'' kun je dan zien als een voorraadgrootheid (in uren) die per tijdstap Δt uur afneemt. Op het moment dat die voorraad dan "op" zou raken is, vul je hem weer met de tussentijd 1/''f''. Zie [[Excel:Timer voor regelmatige gebeurtenis]] voor een voorbeeld. | :Als die gebeurtenis ''f'' keer per uur optreedt, dan betekent dat dat er tussen twee opeenvolgende gebeurtenissen steeds 1/''f'' uur zit. Je kunt dat dan modelleren door behalve een binaire variabele (met 1 = "de gebeurtenis treedt op") een ''timer''-variabele aan je model toe te voegen. Zo'n ''timer'' kun je dan zien als een voorraadgrootheid (in uren) die per tijdstap Δt uur afneemt. Op het moment dat die voorraad dan "op" zou raken is, vul je hem weer met de tussentijd 1/''f''. Zie [[Excel:Timer voor regelmatige gebeurtenis]] voor een voorbeeld. | ||
+ | |||
+ | ==Activiteit met variabele tijdsduur== | ||
+ | '''Hoe geef je weer dat een activiteit binnen het systeem soms kort en soms ook lang kan duren?'''<br> | ||
+ | Als bijvoorbeeld in een [[wachtrijmodel]] de ''bedieningstijd'' een [[stochast]] is, dan kun je dat niet meer eenvoudig weergeven door de tijdstap van je model gelijk te stellen aan de constante bedieningstijd. Hoe los je dit op? | ||
+ | :Net als bij een regelmatig terugkerende gebeurtenis (zie vorige vraag) kun je dan een ''timer''-variabele gebruiken. Op het tijdstip ''t'' dat de activiteit van start gaat bepaal je de duur ''d'' van die activiteit door een toevalsgetal uit de [[kansverdeling]] van de tijdsduur te trekken, en dan gebruik je de ''timer''-variabele ''b'' om bij te houden of de bedieningseenheid "bezig" is. | ||
+ | :Dus bijvoorbeeld ''d''<sub>t</sub> ~ Tri(1, 10, 3) als de activiteit start, en 0 anders (dus een [[Notatie_van_vergelijkingen#Conditionele_vergelijkingen|conditionele vergelijking]] met twee mogelijkheden), en dan ''b''<sub>t+Δt</sub> = ''b''<sub>t</sub> - Δt als ''b''<sub>t</sub> > 0, en ''d''<sub>t</sub> anders (dus ook een conditionele vergelijking met twee mogelijkheden). De bedieningseenheid is "bezig" zolang de ''timer''-variabele ''b'' een positieve waarde heeft. | ||
+ | :Denk goed na over wat de conditie "als de activiteit start" is. Bij een wachtrijmodel is dat als (1) er een nieuwe aankomst is, of de wachtrijlengte > 0 is, '''en''' (2) de bedieningseenheid vrij is. Als variabele ''a'' het aantal aankomsten weergeeft dan is die conditie dus ''a''<sub>t</sub> + ''w''<sub>t</sub> > 0 ∧ ''b''<sub>t</sub> ≤ 0. | ||
== Gevoeligheidsanalyse == | == Gevoeligheidsanalyse == | ||
+ | '''Voor gevoeligheidsanalyse worden twee verschillende methoden gegeven. Hoe zit dat?''' | ||
+ | |||
+ | Volgens de wikipagina moet je zowel +10% als -10% veranderen. De voorbeelden op college en Brightspace veranderen alleen met +20%. Welke methode moet je gebruiken? | ||
+ | |||
+ | :Het basisidee van gevoeligheidsanalyse is dat je wilt weten hoe je model reageert op een kleine verandering in 1 invoervariabele. Dat idee kun je op verschillende manieren uitwerken. De methode [[Gevoeligheidsanalyse|op de wikipagina]] is iets uitgebreider: door zowel effect van een kleine toename als het effect van een kleine afname te berekenen krijg je (samen met de basiswaarde) 3 waarden. Daaraan kun je dan zien of de verandering in beide richtingen evenredig is, en daaraan kun je zien dat het om een lineair verband gaat. Bij het [[Netto contante waarde]]-voorbeeld op de wiki is dat zo voor alle parameters behalve de discontovoet en de termijn. | ||
+ | :De methode op de wiki is 2x zoveel werk, want je moet per invoervariabele 2 runs doen en de uitkomsten daarvan noteren. De methode die we aanbevelen voor de estafette is voldoende om te bepalen of het model gevoelig is. Of die gevoeligheid lineair is, is minder belangrijk om te weten. | ||
+ | |||
'''Hoe doe je gevoeligheidsanalyse bij een dynamisch model?''' | '''Hoe doe je gevoeligheidsanalyse bij een dynamisch model?''' | ||
Regel 224: | Regel 252: | ||
:Dit kun je voorkomen door de één van de twee te baseren op de ''vorige'' waarde. In dit geval is het logisch om de ''nieuwe'' rijlengte te bepalen op basis van de ''vorige'' bereidheid. Je kunt het je als volgt voorstellen: de ''nieuwe'' rijlengte is het resultaat van de ''oude'' rijlengte en de bereidheid die er op dat moment (in de vorige tijdstap dus) was. De ''nieuwe'' bereidheid (die weer zal gelden tot de volgende tijdstap) volgt uit de ''nieuwe'' rijlengte. | :Dit kun je voorkomen door de één van de twee te baseren op de ''vorige'' waarde. In dit geval is het logisch om de ''nieuwe'' rijlengte te bepalen op basis van de ''vorige'' bereidheid. Je kunt het je als volgt voorstellen: de ''nieuwe'' rijlengte is het resultaat van de ''oude'' rijlengte en de bereidheid die er op dat moment (in de vorige tijdstap dus) was. De ''nieuwe'' bereidheid (die weer zal gelden tot de volgende tijdstap) volgt uit de ''nieuwe'' rijlengte. | ||
+ | '''Is een differentievergelijking niet altijd cyclisch?''' | ||
+ | :Nee, zeker niet. Een [[Discretetijdmodel|differentievergelijking]] stelt immers dat de waarde van een variabele X voor tijdstip t+Δt (dus het volgende tijdstip) gelijk is aan de waarde van X voor tijdstip t (het huidige tijdstip) plus ( (instroom op tijdstip t min uitstroom op tijdstip t) maal de duur van 1 tijdstap). | ||
+ | :Bij implementatie in Excel moet je zorgen dat elk tijdstip een eigen rij heeft. Als je de formule voor X<sub>t+Δt</sub> dan bijv. in rij 20 zet, dan wordt (als je het correct doet) in die formule alleen verwezen wordt naar cellen in rij 19 (het vorige tijdstip t dus) of naar vaste parameters (celreferenties die je vastzet met $, dus bijv. C$5). | ||
− | = | + | == Excel wordt traag == |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | + | '''Excel doet er heel lang over om het model te laden / door te rekenen / op te slaan. Wat kan ik daaraan doen?''' |
+ | :Excel wordt traag wanneer het heel veel berekeningen moet doen. Probeer daarom altijd om je model niet groter te maken dan nodig is: | ||
+ | :* niet meer tijdstappen dan nodig; | ||
+ | :* ''bij een probabilistisch model:'' niet meer replicaties dan nodig. | ||
+ | :Als je model dan nog steeds veel rekentijd vraagt, dan kun je het automatisch doorrekenen uitzetten. Normaal rekent Excel na elke wijziging het model door. In het hoofdmenu '''Formulas''' vind je de optie '''Calculation Options''' waarmee je Excel zo kunt instellen dat het alleen formules berekent nadat je op functietoets F9 drukt (''Manual'') of dat Excel het model wel doorrekent maar niet de datatabel met replicaties (''Automatic Except for Data Tables''). | ||
+ | :'''Let op:''' Als je het automatisch doorrekenen uitzet, geef dat dan duidelijk aan in het werkblad (bijv. met links bovenaan de tekst "<span style="color:red">LET OP: Automatisch doorrekenen staat UIT. Druk op F9 om door te rekenen</span>") zodat anderen die met jouw model moeten werken snappen waarom het model niet lijkt te reageren op veranderingen in invoervariabelen. |
Huidige versie van 14 nov 2024 om 06:50
Het modelleerpracticum wordt niet meer in estafettevorm aangeboden!
Op deze pagina verzamelden we antwoorden op vragen die n.a.v. de lopende estafette werden gesteld.
We hebben deze pagina voor dit collegejaar (2024-2025) opgeschoond door alle organisatorische en technische vragen te verwijderen.
Inhoud
- 1 Onderzoeksvraag
- 2 Modelschema
- 3 Systeemschets
- 4 Conceptueel model
- 5 Cybernetisch model
- 6 Voorraad-stroomdiagram
- 7 Tijdsafhankelijke exogene grootheden als functies weergeven
- 8 Dimensieanalyse
- 9 Vroegste tijdstip bepalen waarop een conditie WAAR wordt
- 10 Regelmatig terugkerende gebeurtenis
- 11 Activiteit met variabele tijdsduur
- 12 Gevoeligheidsanalyse
- 13 Differentievergelijking
- 14 Poisson-verdeling
- 15 Replicaties
- 16 Histogrammen in verslaglegging
- 17 Notatie in verslag
- 18 Voorkomen van kringverwijzing
- 19 Excel wordt traag
Onderzoeksvraag
Mag je bij "... gegeven x, y en z" veronderstellen dat die gegeven grootheden constant zijn?
- Indien er geen reden is om aan te nemen dat exogene grootheden dynamisch zijn, dan mag je veronderstellen dat ze constant zijn tijdens een run.
- Het is wel de bedoeling dat je ze opneemt in het experimenteel ontwerp, dus van run tot run kunnen ze wel een andere waarde krijgen.
- Bij sommige vraagstukken wordt expliciet aangegeven welke exogene grootheden tijdsafhankelijk zijn en daarom bij de operationalisatie (estafettestap 2) als een functie van de tijd moeten worden gedefineerd, d.w.z. x = f(t) (zie Functievoorschrift).
De casus vraagt een probabilistisch model en in de onderzoeksvraag wordt naar een kansverdeling gevraagd. Als wij in de vergelijkingen al weergeven welke kansverdeling gebruikt moet worden, geven wij al antwoord op de onderzoeksvraag. Wat wordt hier bedoeld?
- Als in de onderzoeksvraag naar een kansverdeling wordt gevraagd (zoals "Wat is de kansverdeling van de wachttijd?"), wordt een empirische verdeling bedoeld: een verdeling die is gebaseerd op de uitkomsten van het model.
- Stel dat dit de berekende wachttijden zijn in minuten (op grootte gesorteerd): 1,3; 1,5; 1,5; 1,9; 2,1; 2,3; 2,7; 3,1; 3,9; 4,4.
- Dan kun je bijvoorbeeld een histogram maken voor de wachttijden binnen intervallen [0, 1>, [1, 2>, [2, 3>, [3, 4> en [4, 5>, die respectievelijk 0%, 40%, 30%, 20% en 10% hoog zijn.
Wanneer wij een reeks uitkomsten hebben, welke functie in Excel kan dan worden gebruikt om hier een kansverdeling uit te halen?
- Daar is geen functie voor in Excel. Het is dan de bedoeling dat je de empirische verdeling laat zien in een histogram zoals beschreven in de vraag hierboven. Lees deze tekst hier op de wiki.
Modelschema
Hoe kunnen wij het onderscheid tussen invoervariabelen en interne variabelen het best zien?
- Een interne variabele wordt door het model berekend op basis van de gekozen waarden van de invoervariabelen. De invoervariabelen zélf worden door het model niet veranderd.
- Als je bijvoorbeeld een discretetijdmodel maakt om te bepalen hoe lang het duurt om water aan de kook te brengen om thee te zetten, zijn de begintemperatuur van het water en het vermogen van de waterkoker invoervariabelen, zijn de temperatuur van het water op een bepaald moment (die dus door het model berekend wordt) en de verstreken tijd interne variabelen, en is de tijd die nodig is om 100 °C te bereiken (die dus ook berekend wordt) de uitvoervariabele.
Moet je in het modelschema al stochasten zetten of pas in de modelvergelijkingen?
- Een stochastische variabele hoort in het modelschema te staan. Schrijf je in een vergelijking bijvoorbeeld:
- A = 123 + B / U(1, C)
- dan is U(1, C) wel stochastisch, maar geen variabele maar een "anoniem" toevalsgetal uit een uniforme kansverdeling, vergelijkbaar met de "anonieme" constante 123: die vermeld je ook niet in het modelschema. De parameter C is wél een variabele die in het modelschema moet staan.
- Noteer je deze vergelijking als twee aparte, dus bijvoorbeeld:
- A = 123 + B/D
- D ~ U(1, C)
- dan is D een stochastische variabele, en hoort daarom in het modelschema te staan.
Als om een kans of een kansverdeling wordt gevraagd, worden dat dan uitvoervariabelen in het modelschema?
- Als je een modelvergelijking voor een gevraagde kans p opneemt in je operationele model (bijvoorbeeld p = ΣtXt/N bij een simulatietijd van N tijdstappen), dan wordt daarmee p een uitvoervariabele, en die hoort dan als zodanig in je modelschema te staan.
- Een kansverdeling is zelf geen variabele, maar een eigenschap van een stochastische variabele. Die stochast is dan een uitvoervariabele van je model.
- N.B. Uitvoervariabelen zijn per definitie "de variabelen waarvan je de waarden wilt zien", dus ook de variabelen die volgens de opdracht je in een grafiek moet weergeven zijn uitvoervariabelen.
Systeemschets
Mag je in de systeemschets gebruik maken van een legenda of moet alles in de schets zelf staan?
- Een systeemschets moet direct herkenbaar zijn, dus zou er geen legenda nodig moeten zijn (een legenda is nodig voor symbolische representatie, en afgezien van de tekst van de labels hoort een systeemschets geen symbolische elementen te bevatten).
Conceptueel model
Kan ik meerdere modellen opnemen in het conceptuele model?
Is het mogelijk om meerdere modellen, zoals een voorraad-stroomdiagram, toestandsdiagram en cybernetisch model, op te nemen in de conceptualisatie van het systeem?
- De genoemde modellen kunnen ieder afzonderlijk voldoende zijn als conceptueel model, maar je conceptuele model moet alle concepten en onderlinge relaties weergeven die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Het kan dus goed zijn dat je meerdere diagrammen nodig hebt in je representatie van je conceptuele model.
Is een causalerelatiediagram / toestandsdiagram / voorraad-stroomdiagram verplicht?
- Nee. De conceptualisatie moet alle concepten en onderlinge relaties weergeven. Als dat kan met één type diagram, is het niet nodig er meer op te nemen. Mocht dat het gekozen conceptuele model erg verduidelijken, dan mag het uiteraard wel.
- Wanneer gevraag wordt een cybernetisch model te construeren, is het niet verplicht dit ook te tekenen. Het kan duidelijk zijn om een plaatje toe te voegen (en dan een op de casus toegespitst plaatje, niet van het standaard CM), maar noodzakelijk is dit niet: het kan ook duidelijk in tekst weergegeven worden (zie het voorbeeld bij de instructies voor Stap 1).
Gevraagd wordt om een dynamisch model. Moet een CRD dan altijd een feedbacklus bevatten?
- Nee. De dynamiek kan ook een "externe" oorzaak hebben. Denk bijv. aan de dag-nachtcyclus die voor een dynamische opwekking van elektriciteit door een zonnepaneel zorgt. Maar ook een grootheid waarvan de waarde niet varieert (bijv. de valversnelling) kan voor dynamiek zorgen. De snelheid van een vallend voorwerp neemt immers per tijdstap toe.
- Kenmerk van een dynamisch model is dat het de toestandsverandering van het systeem in de loop van de tijd laat zien. Wat die verandering veroorzaakt kan van model tot model heel verschillend zijn. Daarbij kan een feedbacklus een rol spelen, maar dat hoeft niet.
- Omgekeerd geldt wel altijd dit: Als een CRD een feedbakclus bevat, dan beschrijft het een dynamisch systeem.
Moet je in een conceptueel model ook natuurconstanten opnemen?
- Je conceptuele model moet alle relevante grootheden in het systeem benoemen. Het maakt niet uit of ze constant zijn of van waarde kunnen veranderen. Natuurconstanten zoals bijv. de valversnelling zijn grootheden die meestal niet expliciet als "gegeven" in de onderzoeksvraag worden vermeld, maar wel relevant kunnen zijn en dan dus in je model benoemd moeten worden.
- N.B. Wiskundige constanten zoals π zijn geen natuurconstanten, dus die laat je weg.
Alle concepten en relaties in een toestandsdiagram?
Wij hebben voor een toestandsdiagram gekozen, en het wordt daarin heel onoverzichtelijk om alle grootheden toe te voegen. Op de wikipagina wordt niet echt goed duidelijk hoe dit moet met de toestandsdiagram. Moeten alle grootheden uit de systeemschets aangegeven worden in het toestandsdiagram?
- Je conceptuele model moet alle concepten en onderlinge relaties weergeven die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Als dit niet duidelijk kan in een toestandsdiagram, dan is een toestandsdiagram in dit geval blijkbaar niet voldoende als conceptueel model (dat geldt wel vaker voor een toestandsdiagram overigens). Je zult daarnaast dus nog een andere representatie moeten gebruiken.
Moet je bij grootheden in een conceptueel model aangeven of het om een kans of een kansverdeling gaat?
- In een VSD of CRD of systeemschets horen alleen grootheden te staan. Kansverdelingen zijn geen grootheden -- probeer maar: "De kansverdeling van het aantal lekke banden neemt toe." is geen correcte en betekenisvolle Nederlandse zin, maar "Het aantal lekke banden neemt toe." is dat wel.
- Voor "kans" ligt dat anders: kansen zijn wel grootheden: "De kans op een lekke band neemt toe." is wél een grammaticaal correcte en betekenisvolle zin. Vandaar dat je in een VSD regelmatig kansen zult zien staan, vaak als exogene grootheden omdat kansen vaak als gegeven moeten worden beschouwd. Maar let op: ze kunnen ook endogeen zijn. Wanneer bijvoorbeeld gegeven is dat een kans lineair toeneemt, kun je die als een voorraadgrootheid weergeven met een constante instroom.
- Een kans kan zelfs de uitvoervariabele zijn. Bij een probabilistisch model bepaal je kansen o.b.v. replicaties, dus door het model een (groot) aantal keren door te rekenen. Dat geeft dan een kansverdeling. Met een kans wordt de kansverdeling op een binaire variabele bedoeld, waarbij 1 weergeeft dat de gebeurtenis waarvoor de kans moet worden bepaald tijdens de modelrun optreedt. In zulke gevallen is het beter om in je conceptuele model die binaire grootheid op te nemen (bijv. "lekke band JA/NEE"). Op die manier maak je ondubbelzinnig duidelijk dat je model straks óf een 1 óf een 0 als uitvoerwaarde moet hebben.
Is het toegestaan om een aantal met # weer te geven in een conceptueel model (systeemschets, CRD, VSD)? Bijvoorbeeld # wachtende klanten?
- Het teken # (dat inderdaad voor "aantal" staat) gebruiken we om eenheden te noteren wanneer het gaat om dimensieloze grootheden die een aantal aangeven. Zie deze uitleg m.b.t. dimensieanalyse.
- Datzelfde teken gebruiken in de naam van een grootheid zou tot verwarring kunnen leiden. Noteer de grootheid "aantal wachtenden" daarom niet als "# wachtenden". Het gebruikelijke symbool voor een grootheid die een aantal voorstelt, is n. In een operationeel model kun je het aantal wachtende klanten dus bijvoorbeeld noteren als variabele nk. Noteer de eenheid van grootheden die aantallen zijn wél als #, of liever nog als #klant (dus met datgene wat je telt als subscript).
- Hou dus goed uit elkaar:
- de naam van de grootheid zelf (bijvoorbeeld "aantal wachtenden");
- het symbool dat je ervoor gebruikt (bijvoorbeeld nk);
- de eenheid die je ervoor gebruikt (in dit geval dus #klant).
Cybernetisch model
Kan een cybernetisch model gebruikt worden als systeemschets?
- Het diagram van het cybernetische model dat op de wiki staat, is te schematisch om te gebruiken als systeemschets.
- Je kunt de systeemschets wel baseren op dat diagram, maar dan moeten alle onderdelen worden vervangen door direct herkenbare afbeeldingen.
Kan een cybernetisch model in stap 1 worden gebruikt in plaats van een causalerelatiediagram, voorraad-stroomdiagram of toestandsdiagram?
- Het cybernetische model is een conceptueel model, want het is een representatie van een systeem waarin je concepten en hun onderlinge relaties weergeeft die volgens jou van belang zijn voor het beantwoorden van de onderzoeksvraag. Maar je kunt er meestal niet alle concepten en relaties die van belang zijn goed in kwijt, dus het kan geen causalerelatiediagram, voorraad-stroomdiagram of toestandsdiagram vervangen. Die diagrammen zijn óók conceptuele modellen, maar laten op een andere manier concepten en relaties in het systeem zien. Een cybernetisch model kan dus wel als aanvulling gebruikt worden, vooral om het deel van het systeem weer te geven dat voor de regeling zorgt, maar dat is bijna nooit genoeg om het hele conceptuele model te representeren.
- Als je een cybernetisch model gebruikt, is het niet voldoende om het plaatje van de wiki rechtstreeks over te nemen. Je zult het dan moeten aanpassen door de gegeven termen specifieker te maken (in het geval van een thermostaat kunnen "werkelijke uitvoer" en "gewenste uitvoer" bijvoorbeeld "gemeten temperatuur" en "gewenste temperatuur" worden; "comparator" wordt dan "thermostaat").
Voorraad-stroomdiagram
Mogen er meerdere stromen één voorraad ingaan? Dus meerdere instroompijlen naar een rechthoek, met maar één uitstroompijl?
- Dat mag, bijvoorbeeld als die stromen een verschillende oorzaak hebben. Zo kun je bij een stuwmeer van een pompcentrale op hetzelfde moment waterinstroom hebben door de pomp én door instromende riviertjes. Die stromen kunnen onafhankelijk van elkaar toe- of afnemen, dus dat kan in het VSD het best met twee pijlen weergegeven worden. Ook twee of meer uitgaande pijlen mag, overigens – zie dit voorbeeld hier op de wiki.
Ik moet in mijn model het totaal berekenen van twee voorraadgrootheden. Hoe geef ik dat aan in het VSD?
- Stel dat je je voorraadgrootheden A en B hebt genoemd, en dat je het totaal dat je wilt berekenen C noemt. Teken C dan als een informatiegrootheid (dus geen rechthoek!), en teken een informatiepijl vanuit A naar C en ook zo'n pijl vanuit B naar C. Beide pijlen label je met een +. In de toelichtende tekst leg je uit dat het om een optelling gaat (voor zover dat niet al blijkt uit de naamgeving van C).
Hoe geef je in een VSD de initiële waarde van een voorraadgrootheid weer?
- Niet. De initiële waarde van een voorraadgrootheid introduceert immers geen nieuwe grootheid in de zin van "een nieuwe eigenschap van het systeem". Bij operationalisatie heb je ook geen extra symbool nodig. Als een voorraadgrootheid in het operationele model variabele G wordt, dan geeft G0 die grootheid op t=0 weer. De standaard beginwaarde voor voorraadgrootheden is 0. Als je de initialisatie expliciet wilt weergeven doe je dat d.m.v. een vergelijking direct voorafgaand aan de differentievergelijking, bijv. G0 = 123, gevolgd door Gt+Δt = Gt - Bin(Gt, p).
- N.B. In Vensim kun je de initialisatie wel grafisch weergeven, maar dat is een kunstgreep t.b.v. het kunnen doorrekenen van het model. Gebruik deze mogelijkheid dus niet! Bij implementatie in Excel kun je de beginwaarde invullen op de rij die correspondeert met t=0.
Tijdsafhankelijke exogene grootheden als functies weergeven
Als in de onderzoeksvraag wordt gesteld dat bepaalde grootheden gegeven zijn, dan zijn die exogeen. Maar als je tijdsafhankelijke variabelen als functies van tijd t moet weergeven, dan zijn die variabelen endogeen. Hoe zit dat?
- Bij operationalisatie van een dynamische exogene grootheid kun je kiezen: óf je geeft die grootheid weer met een gegevensverzameling óf je geeft hem weer met een tijdsafhankelijke functie f(t). In het oorspronkelijke causalerelatiediagram of voorraad-stroomdiagram zal deze grootheid dan geen ingaande pijlen hebben. Als je hem operationaliseert m.b.v. een vergelijking, bijv. Xt = a·cos(b·t), dan is Xt inderdaad wél endogeen. Wat dan exogeen wordt zijn de parameters in het functievoorschrift, dus hier worden a en b invoervariabelen van het model. Die variabelen staan dan natuurlijk wel voor specifieke grootheden: in dit geval is a de amplitude van de fluctuatie in X terwijl b proportioneel is met de frequentie van de fluctuatie.
- Kies je voor operationalisatie in de vorm van een functievoorschrift met parameters, dan is het wenselijk dat je de parametergrootheden ook opneemt in je conceptuele model(len). De oorspronkelijke endogene grootheid zal dan ingaande pijlen krijgen en op die manier endogeen worden.
Hoe stel ik de vergelijking van een "afgekapte" sinusfunctie op?
Bij een vraagstuk moet je schommelingen in exogene variabelen geïdealiseerd weergeven m.b.v. een optelling van (co)sinusfuncties met verschillende amplitudes en periodes, waarbij je waarden < 0 opvat als 0. Hoe zet je dat in een modelvergelijking?
- Maak eerst een modelvergelijking die het gewenste "grillig" flucturerende gedrag weergeeft. Je kunt zelf m.b.v een lijngrafiek in Excel nagaan of dat gedrag bij bepaalde parameterwaarden genoeg lijkt op het gedrag in de opgave.
- Een functie die bestaat uit optelling van a·cos(n·t) zal periodiek symmetrisch om de tijdas "kronkelen". Door er een constante bij op te tellen kun je er voor zorgen dat hij hoger of lager t.o.v. de tijdas ligt.
- Om er voor te zorgen dat de functiewaarde 0 is wanneer f(t) < 0 gebruik je een conditionele vergelijking (met grote accolade).
Dimensieanalyse
Moet je een tijd in een sinusfunctie ook meenemen in je dimensieanalyse?
- Ja. Als je bijvoorbeeld de functie b·sin(c·t) hebt, moet c·t dimensieloos zijn. De grootheid c moet dus de dimensie tijd-1 hebben, ofwel een frequentie zijn.
- Dit geldt voor meer wiskundige functies: ook het argument (= dat wat tussen haakjes staat) van een cosinus, of de exponent van een e-macht, moeten dimensieloos zijn.
Wij hebben een tijdsafhankelijke exogene variabele m.b.v. een functie geoperationaliseerd. Moeten we ook op die functie dimensieanalyse uitvoeren?
- Ja. Lees de uitleg bij de voorgaande vraag en daarna dit voorbeeld. Wanneer je een flucturerende waterstand weergeeft als Wt = A·cos(2π·t / T), dan wordt Wt (in m t.o.v NAP) endogeen, en zijn de parameters A en T exogeen. Je moet dan laten zien dat A de amplitude (in m) van de fluctuatie in de waterstand weergeeft, en T (in h) de periode van de fluctuatie. Als de tijd t ook eenheid h heeft is de vergelijking dimensioneel correct.
Vroegste tijdstip bepalen waarop een conditie WAAR wordt
Hoe formuleer je wiskundig het tijdstip waarop bijv. de maximale snelheid bereikt wordt?
- Meer algemeen ben je op zoek naar een tijdstip waarop het systeem in een specifieke toestand verkeert. Zo'n toestand kun je altijd noteren m.b.v. van een logische conditie net zoals die langs de pijlen van een eindigetoestandsautomaat. In dit geval wil je noteren dat de snelheid van iets (bijv. een fietser die een helling afrijdt) op tijdstip t groter of gelijk is aan de hoogste snelheid die die fietser gedurende de afdaling bereikt. Je moet dan dus eerst die hoogst bereikte snelheid vmax bepalen. Zoals hier uitgelegd noteer je dat met de functie max zo:
- vmax = max(v0, ..., vteind)
- waar teind het laatste tijdstip van de simulatie is.
- Nu kun je de toestand "de fietser rijdt met de hoogste snelheid" noteren als de conditie vt = vmax.
- Tenslotte wil je weten: op welk tijdstip rijdt de fietser voor het eerst zo hard? Met andere woorden: wat is de laagste waarde van tijd t waarop vt = vmax? Zoals hier uitgelegd noteer je de verzameling van alle tijdstippen waarop de fietser zo hard rijdt als {t: vt = vmax}. De laagste waarde van t krijg je dan zo:
- tmsb = min({t: vt = vmax})
- ("msb" staat voor "maximale snelheid bereikt").
Hoe bereken je in Excel het tijdstip waarop bijv. de maximale snelheid bereikt wordt?
- Eerst bereken je de hoogste snelheid m.b.v. de functie MAX. Als die snelheid bijv. in kolom H staat en rij 10 overeenkomt met t=0, dan is de Excelformule bijvoorbeeld =MAX(H10:H310) wanneer je in totaal 300 tijdstappen simuleert.
- Daarna zoek je de "index" van die hoogste waarde in de kolom met snelheid m.b.v. de functie VERGELIJKEN.
- Als je de waarde van vmax bijvoorbeeld in cel C3 berekent en de snelheid vt dus in kolom H staat met in rij 10 de waarde voor t=0, rij 11 voor t=1, enzovoorts t/m bijv. rij 310, dan gebruik je als formule =VERGELIJKEN(C3; H10:H310)
- De indexwaarde die je krijgt is de positie van de gezochte waarde in de tijdreeks (in dit voorbeeld een getal tussen 1 en 300).
- Het tijdstip is dan (deze indexwaarde min 1) maal de tijdstap Δt. De "min 1" is nodig omdat index 1 tijd t=0 aangeeft.
Hoe krijg je dan de waarde van een bepaalde variabele, bijvoorbeeld de verplaatsing, op dat tijdstip?
- Als je de index hebt gevonden, dan zoek je in de kolom voor de verplaatsing de waarde die bij die index hoort m.b.v. de funtie VERSCHUIVING.
- Staat de indexwaarde in cel C3 en de verplaatsing st bijvoorbeeld in kolom D (met in rij 10 weer de waarde voor t=0, rij 11 voor t=1, enzovoorts t/m rij 310) dan is de formule die de gezochte verplaatsing geeft =VERSCHUIVING(D15; C3-1; 0)
- Je trekt dus 1 af van de index omdat 1 overeenkomt tijdstip met t=0.
In het voorbeeldmodel wordt een andere methode gebruikt om het tijdstip van een gebeurtenis te bepalen. Hoe werkt die?
- Je kunt in Excel ook een extra kolom aanmaken waarin je als de conditie WAAR is de tijd zet en anders een lege string. Als de tijd t in kolom A staat dan is voor het hierboven gegeven voorbeeld de formule in de extra kolom voor rij 10 =ALS(H10=C$3; A10; ""). Als je deze formule hebt gekopieerd naar alle cellen in de extra kolom (dus rij 11 t/m 310) dan zie je in die kolom eerst een aantal schijnbaar lege cellen (de lege strings "") en vanaf het tijdstip waarop de hoogste snelheid wordt bereikt de tijd zoals die in kolom A staat. Het vroegste tijdstip bereken je dan door over die hele kolom (bijv. kolom K) het minimum te berekenen m.b.v. =MIN(K10:K310).
Regelmatig terugkerende gebeurtenis
Hoe geef je in vergelijkingen (en in Excel) weer dat een gebeurtenis met een vaste frequentie optreedt?
- Als die gebeurtenis f keer per uur optreedt, dan betekent dat dat er tussen twee opeenvolgende gebeurtenissen steeds 1/f uur zit. Je kunt dat dan modelleren door behalve een binaire variabele (met 1 = "de gebeurtenis treedt op") een timer-variabele aan je model toe te voegen. Zo'n timer kun je dan zien als een voorraadgrootheid (in uren) die per tijdstap Δt uur afneemt. Op het moment dat die voorraad dan "op" zou raken is, vul je hem weer met de tussentijd 1/f. Zie Excel:Timer voor regelmatige gebeurtenis voor een voorbeeld.
Activiteit met variabele tijdsduur
Hoe geef je weer dat een activiteit binnen het systeem soms kort en soms ook lang kan duren?
Als bijvoorbeeld in een wachtrijmodel de bedieningstijd een stochast is, dan kun je dat niet meer eenvoudig weergeven door de tijdstap van je model gelijk te stellen aan de constante bedieningstijd. Hoe los je dit op?
- Net als bij een regelmatig terugkerende gebeurtenis (zie vorige vraag) kun je dan een timer-variabele gebruiken. Op het tijdstip t dat de activiteit van start gaat bepaal je de duur d van die activiteit door een toevalsgetal uit de kansverdeling van de tijdsduur te trekken, en dan gebruik je de timer-variabele b om bij te houden of de bedieningseenheid "bezig" is.
- Dus bijvoorbeeld dt ~ Tri(1, 10, 3) als de activiteit start, en 0 anders (dus een conditionele vergelijking met twee mogelijkheden), en dan bt+Δt = bt - Δt als bt > 0, en dt anders (dus ook een conditionele vergelijking met twee mogelijkheden). De bedieningseenheid is "bezig" zolang de timer-variabele b een positieve waarde heeft.
- Denk goed na over wat de conditie "als de activiteit start" is. Bij een wachtrijmodel is dat als (1) er een nieuwe aankomst is, of de wachtrijlengte > 0 is, en (2) de bedieningseenheid vrij is. Als variabele a het aantal aankomsten weergeeft dan is die conditie dus at + wt > 0 ∧ bt ≤ 0.
Gevoeligheidsanalyse
Voor gevoeligheidsanalyse worden twee verschillende methoden gegeven. Hoe zit dat?
Volgens de wikipagina moet je zowel +10% als -10% veranderen. De voorbeelden op college en Brightspace veranderen alleen met +20%. Welke methode moet je gebruiken?
- Het basisidee van gevoeligheidsanalyse is dat je wilt weten hoe je model reageert op een kleine verandering in 1 invoervariabele. Dat idee kun je op verschillende manieren uitwerken. De methode op de wikipagina is iets uitgebreider: door zowel effect van een kleine toename als het effect van een kleine afname te berekenen krijg je (samen met de basiswaarde) 3 waarden. Daaraan kun je dan zien of de verandering in beide richtingen evenredig is, en daaraan kun je zien dat het om een lineair verband gaat. Bij het Netto contante waarde-voorbeeld op de wiki is dat zo voor alle parameters behalve de discontovoet en de termijn.
- De methode op de wiki is 2x zoveel werk, want je moet per invoervariabele 2 runs doen en de uitkomsten daarvan noteren. De methode die we aanbevelen voor de estafette is voldoende om te bepalen of het model gevoelig is. Of die gevoeligheid lineair is, is minder belangrijk om te weten.
Hoe doe je gevoeligheidsanalyse bij een dynamisch model?
Als een uitvoervariabele X tijdsafhankelijk is krijg je heel veel uitvoerwaarden Xt. Welke waarde moet je dan gebruiken om de vergelijking te maken met de uitkomsten van het basisscenario?
- Bij een dynamisch model krijg je voor de uitvoervariabelen inderdaad tijdreeksen. De gevoeligheidsanalyse voer je daarom niet uit op deze reeksen, maar op de beschrijvende statistieken van die reeksen (laagste waarde MIN, hoogste waarde MAX, gemiddelde waarde μ en de standaarddeviatie σ). De voorbeeldmodellen die op BrightSpace staan laten zien hoe je in Excel die beschrijvende statistieken per uitvoervariabele berekent. Bij de gevoeligheidsanalyse kijk je dan hoeveel (%) elk van deze vier statistieken verandert wanneer je een invoervariabele 10% hoger maakt (of een ander niet te klein en ook niet te groot percentage).
Excel biedt verschillende functies voor standaarddeviatie. Welke moet je gebruiken?
- Voor simulatiemodellen zoals je die bij dit vak maakt gebruik je STDEV.P.
Differentievergelijking
Wij gebruiken de differentievergelijking Nt+Δt = Nt–Δt + S·Δt, is dat correct?
- Nee, want jullie gebruiken twee notatieversies door elkaar.
- Een differentievergelijking:
- drukt de huidige waarde van een variabele uit op basis van de waarde die deze variabele in de vorige tijdstap had:
- xt = f(xt-Δt)
- drukt de huidige waarde van een variabele uit op basis van de waarde die deze variabele in de vorige tijdstap had:
- of (wat wis- en natuurkundig op hetzelfde neerkomt):
- drukt de waarde van een variabele in de volgende tijdstap uit op basis van de huidige waarde van die variabele:
- xt+Δt = f(xt)
- drukt de waarde van een variabele in de volgende tijdstap uit op basis van de huidige waarde van die variabele:
- Zowel links als rechts van het =-teken moet dus expliciet verwezen worden naar de bedoelde tijdstap.
- Zie hiervoor ook de wiki-pagina over het discretetijdmodel.
Poisson-verdeling
Ik gebruik de Poisson-verdeling en heb de kansverdeling opgesteld voor de aankomstfrequentie, in de volgende vorm: P(fA=k) = (fAk/k!) · (e-k ).
- Dit is inderdaad de bijbehorende verdeling, maar daarmee kun je geen Poisson-verdeelde toevalsgetallen genereren.
- Zie hiervoor vooral het overzicht dat op de wiki staat om stochasten te genereren: Excel:Kansverdelingen.
Replicaties
In een probabilistisch dynamisch model hebben we in iedere tijdstap uitvoervariabelen. We nemen aan dat ook dan weer replicaties moeten worden uitgevoerd, maar dan voor alle tijdstappen. Hoe implementeren we dit in Excel?
- Bij een probabilistisch model kun je gebruikmaken van beschrijvende statistieken. Zo kun je bijvoorbeeld het minimum, maximum en gemiddelde van de tijdreeksen bepalen. Maar omdat iedere run van je model weer andere getallen oplevert, moet je vervolgens van deze beschrijvende statistieken weer de beschrijvende statistieken gebruiken.
- Als je bijvoorbeeld bij één run het minimum, maximum en gemiddelde van een tijdreeks berekent, moet je over alle replicaties dáár weer het gemiddelde van nemen, dus: het gemiddelde van de minima, het gemiddelde van de maxima en het gemiddelde van de gemiddelden.
- Zie ook de pagina over het experimenteel ontwerp en Bestand:TB112-replicaties.pdf, waarin wordt uitgelegd hoe je snel veel replicaties kunt maken.
- Vaak gedraagt een model zich aan het begin nog even wat anders dan later, omdat de variabelen zich nog wat moeten aanpassen — dan kun je de de eerste zoveel tijdstappen uit de statistieken laten. Soms is een minimum of maximum niet zo zinnig, omdat een variabelewaarde blijft toenemen. In dat geval kun je bijvoorbeeld de stijging zelf (de toename gedurende een bepaalde tijd) gebruiken voor de statistiek.
Moet je alle beschrijvende statistieken implementeren in Excel, óók als de uitvoervariabele een binaire variabele is?
- Bij een probabilistisch model moet je altijd beschrijvende statistieken berekenen. Bij binaire uitvoervariabelen lijken MIN en MAX niet echt relevant, maar je kunt er wel mooi mee controleren of de uitvoervariabele überhaupt wel van waarde verandert.
- De standaarddeviatie σ is veel minder interessant dan het gemiddelde μ (want dát is de benadering van de kans p waar je naar op zoek bent), maar toch geeft die σ informatie. Theoretisch (d.w.z. wiskundig afgeleid) is de standaarddeviatie van Bin(N, p) gelijk aan √(p·(1-p)/N). Bij een binaire variabele met kans p op een 1 is N=1, dus is de standaarddeviatie in theorie √(p·(1-p)). Dit betekent dat je, als je het gemiddelde (over alle replicaties) μ van de binaire uitvoervariabele als kans p ziet, kunt checken of de waarde √(μ·(1-μ)) inderdaad dicht in de buurt zit van de standaarddeviatie (over alle replicaties) σ van de binaire uitvoervariabele. Net als MIN en MAX geeft dus ook σ informatie over of de uitvoer van je replicaties "klopt".
Onze grafieken met gemiddelde μ en σ over steeds meer replicaties convergeren niet. Hoe kan dat?
- Dat gebeurt typisch als je formule voor de berekening van het gemiddelde niet het juiste celbereik aangeeft.
- Stel dat je in kolom R je uitvoerwaarde per replicatie hebt staan, en het gemiddelde over 1, 2, ..., N replicaties in de kolom S daarnaast berekent. Als je data in bijv. rij 5 begint, dan staat in cel S5 de formule =GEMIDDELDE(R$5:R5), in cel S6 dan =GEMIDDELDE(R$5:R6), enzovoorts (dus het celbereik wordt steeds 1 rij groter).
- Twee fouten zijn snel gemaakt: Je kunt het dollarteken in R$5 zijn vergeten, of je kunt in plaats van de dubbele punt een puntkomma hebben gebruikt (dus =GEMIDDELDE(R$5;R6)). Beide notaties zijn geldig in Excel, maar geven een heel andere uitkomst dan bedoeld.
Histogrammen in verslaglegging
Moet je, als om een kansverdeling wordt gevraagd, bij elk experiment ook een histogram in je verslag opnemen?
Wij hebben een experimenteel ontwerp met 10 experimenten, en dan is 10 grafieken maken niet alleen veel werk, maar wordt het verslag ook erg lang.
- Aparte histogrammen zijn niet nodig wanneer de kansverdelingen allemaal ongeveer dezelfde vorm hebben (en dat is meestal het geval). Het is dan voldoende om dat expliciet te vermelden (met verwijzing naar het histogram dat in §3 staat), en dan in de overzichtstabel voor elkk experiment de vier beschrijvende statistieken te laten zien. Uit die μ, σ, MIN en MAX kun je dan al opmaken hoe de vorm verandert: lagere MIN en/of lager gemiddelde betekent bijv. dat de "bult" naar links verschuift, lagere standaarddeviatie dat de "bult" smaller is, hogere MAX dat de "staart" langer is.
Notatie in verslag
Moeten de Excel-formules in het verslag staan?
In het implementatiehoofdstuk staan geen formules zoals die in Excel zijn ingevoerd, alleen een doorlopende tekst. Is dit een essentiële fout?
- Formules in het verslag moeten in het operationalisatiehoofdstuk in wiskundige notatie staan. Dus bijvoorbeeld
- M ~ Bin(1, p),
- waarbij dan wordt uitgelegd wat de kans p inhoudt, en niet
- =BINOMIALE.INV(1;K14;ASELECT())
- In het implementatiehoofdstuk kan het bij bijzondere vergelijkingen (zoals de implementatie van sommen m.b.v. VERSCHUIVING, of van kansverdelingen zoals hierboven) zinvol zijn om de Excelformule te geven. Dat is echter niet verplicht, dus geen essentieel onderdeel van het verslag.
Kan Excel ook afronden op een aantal significante cijfers i.p.v. een aantal decimalen?
- Helaas niet. Alleen het aantal decimalen kun je regelen. Doe dat ook zodat de decimale punt of komma binnen de kolommen recht uitgelijnd staat en je daardoor goed kunt zien of getallen toenemen of juist afnemen.
- Kies per variabele een geschikt aantal decimalen!
- Vermeld in je verslaglegging eventueel de significantie, en noem dan ook de beperking van Excel op dit gebied.
- N.B. Zo'n vermelding is dan heel zorgvuldig, maar niet verplicht dus geen reden om een lagere beoordeling te geven.
Voorkomen van kringverwijzing
Hoe voorkomen we een kringverwijzing in Excel?
- Wanneer je een Excel-bestand opent en er verschijnt een waarschuwing dat er kringverwijzingen zijn aangetroffen, negeer die waarschuwing dan niet – je implementatie in Excel is dan fout. Excel laat je zelfs zien waar de fout zit: met blauwe stippen en pijlen worden de cellen aangewezen waar het mis gaat. Maak gebruik van die informatie!
- Een "kringverwijzing" in Excel ontstaat als je in een formule in een cel verwijst naar de cel zelf, eventueel via andere cellen. Zoals wanneer er in een ALS-functie in C13 verwezen wordt naar E13, maar E13 gebruik maakt van de waarde van C13. Dan zou eerst de waarde van C13 bekend moeten zijn voordat de waarde van C13 bepaald kan worden, wat uiteraard niet mogelijk is.
- Bijvoorbeeld wanneer je de bereidheid om in een rij te gaan staan berekent uit de nieuwe rijlengte, maar de nieuwe rijlengte ook wilt berekenen op basis van diezelfde bereidheid.
- Dit kun je voorkomen door de één van de twee te baseren op de vorige waarde. In dit geval is het logisch om de nieuwe rijlengte te bepalen op basis van de vorige bereidheid. Je kunt het je als volgt voorstellen: de nieuwe rijlengte is het resultaat van de oude rijlengte en de bereidheid die er op dat moment (in de vorige tijdstap dus) was. De nieuwe bereidheid (die weer zal gelden tot de volgende tijdstap) volgt uit de nieuwe rijlengte.
Is een differentievergelijking niet altijd cyclisch?
- Nee, zeker niet. Een differentievergelijking stelt immers dat de waarde van een variabele X voor tijdstip t+Δt (dus het volgende tijdstip) gelijk is aan de waarde van X voor tijdstip t (het huidige tijdstip) plus ( (instroom op tijdstip t min uitstroom op tijdstip t) maal de duur van 1 tijdstap).
- Bij implementatie in Excel moet je zorgen dat elk tijdstip een eigen rij heeft. Als je de formule voor Xt+Δt dan bijv. in rij 20 zet, dan wordt (als je het correct doet) in die formule alleen verwezen wordt naar cellen in rij 19 (het vorige tijdstip t dus) of naar vaste parameters (celreferenties die je vastzet met $, dus bijv. C$5).
Excel wordt traag
Excel doet er heel lang over om het model te laden / door te rekenen / op te slaan. Wat kan ik daaraan doen?
- Excel wordt traag wanneer het heel veel berekeningen moet doen. Probeer daarom altijd om je model niet groter te maken dan nodig is:
- niet meer tijdstappen dan nodig;
- bij een probabilistisch model: niet meer replicaties dan nodig.
- Als je model dan nog steeds veel rekentijd vraagt, dan kun je het automatisch doorrekenen uitzetten. Normaal rekent Excel na elke wijziging het model door. In het hoofdmenu Formulas vind je de optie Calculation Options waarmee je Excel zo kunt instellen dat het alleen formules berekent nadat je op functietoets F9 drukt (Manual) of dat Excel het model wel doorrekent maar niet de datatabel met replicaties (Automatic Except for Data Tables).
- Let op: Als je het automatisch doorrekenen uitzet, geef dat dan duidelijk aan in het werkblad (bijv. met links bovenaan de tekst "LET OP: Automatisch doorrekenen staat UIT. Druk op F9 om door te rekenen") zodat anderen die met jouw model moeten werken snappen waarom het model niet lijkt te reageren op veranderingen in invoervariabelen.