• Nie Znaleziono Wyników

Statistic distribution generators for the logistical simulation environment Tomas

N/A
N/A
Protected

Academic year: 2021

Share "Statistic distribution generators for the logistical simulation environment Tomas"

Copied!
45
0
0

Pełen tekst

(1)

This report consists of 42 pages. It may only be reproduced literally and as a whole. For commercial purposes only with written authorization of Delft University of Technology. Requests for consult are only taken into consideration under the condition that the applicant denies all legal rights on liabilities concerning the contents of the advice.

Department Marine and Transport Technology Mekelweg 2 2628 CD Delft the Netherlands Phone +31 (0)15-2782889 Fax +31 (0)15-2781397 www.mtt.tudelft.nl

Specialization: Transport Engineering and Logistics Report number: 2013.TEL.7782

Title:

Statistic distribution generators for

the logistical simulation environment

Tomas.

Author: P.J.J. Kompeer

Title (in Dutch) Generatoren voor statistische verdelingen in de logistieke simulatie omgeving Tomas.

Assignment: Research Assignment wbo403-4 Confidential: no

Initiator (university): Dr. ir. Hans Veeke Supervisor: Dr. ir. Hans Veeke

(2)

In deze rapportage staan beschreven de aanpak, uitwerkingen en bevindingen van de Tomas programmeeropdracht van Pieterjan Kompeer. De opdracht is als volgt: maak statistische datageneratoren voor de simulatie omgeving Tomas. De te genereren verdelingen zijn de theoretische verdelingen, te weten: Gamma verdeling, Beta verdeling, Erlang-K verdeling en de praktische verdelingen, te weten: driehoekverdeling en rechthoekverdeling.

Eerst wordt een verificatiemodel gemaakt per verdeling. Er is gekozen om dit in Microsoft Excel te doen. In het verificatiemodel worden de datasets vergeleken met de theoretische waarden. Dit gebeurt door gebruik te maken van een aantal parametrische eigenschapen van de verdelingen (gemiddelde, variantie, skew, kurtois en χ²). Vervolgens wordt ook de χ²-toets uitgevoerd.

Een aantal kandidaat algoritmen uit de literatuur worden vertaald naar Delphi. Met behulp van de verificatiemodellen worden ze beoordeeld op hun performance. De performance en de

rekenintensiviteit van de algoritmen bepalen de keuze voor de definitief te implementeren algoritme.

De definitieve algoritmen worden uitgebreid getoetst op hun performance. En ook de in de opdracht beschreven grafieken worden gemaakt. Er wordt geconcludeerd dat de generatoren de te

verwachten datasets leveren voor de verdelingen.

Een beschrijving van de code, zoals geïmplementeerd in Tomas, wordt gevolgd door een succesvolle test van de generatoren.

De aanpassingen van de Tomas manuaal worden vervolgens puntsgewijs behandeld. De rapportage wordt afgesloten met een korte conclusie.

(3)

Inhoudsopgave

Samenvatting ...ii

Beschrijving van de opdracht ... 1

Aanpak van de opdracht ... 3

Opstellen van het verificatiemodel ... 4

Gamma verdeling ... 4

Erlang-K verdeling ... 4

Beta Verdeling ... 5

Driehoeksverdeling... 5

Rechthoekverdeling ... 5

Selectie van generator algoritme ... 6

Gamma generator ... 6

Beta generator... 11

Erlang-K generator ... 12

Driehoeksgenerator... 12

Rechthoekgenerator ... 12

Beoordeling van de gegenereerde datasets ... 13

Gamma verdeling ... 13 Beta verdeling... 19 Erlang-K verdeling ... 25 Driehoeksverdeling... 25 Rechthoek verdeling ... 29 Implementatie in Tomas ... 33 Ingevoegde broncode ... 33 Implementatie test ... 39

Geactualiseerde Tomas handleiding ... 40

Bevindingen ... 41

(4)

Beschrijving van de opdracht

Implementeer in Tomas.pas zoals aanwezig op de website www.tomasweb.com : De theoretische verdelingen: • Beta verdeling • Gamma verdeling • Erlang – k verdeling En de praktische verdelingen: • driehoeksverdeling • rechthoekverdeling

Volg hiervoor de principes als aanwezig in Tomas.pas

Dit betekent dat de gebruiker nooit meer dan de noodzakelijke parameters hoeft op te geven en sampling plaatsvindt volgens de correcte verdeling.

Bij de praktische verdelingen geldt het volgende:

- de driehoeksverdeling wordt gekenmerkt door 3 waarden: een minimum m

een maximum M

een willekeurige waarde x tussen minimum en maximum de oppervlakte van de driehoek wordt als 1 aangenomen

30

m

x

M

- de rechthoekverdeling heeft ook 3 waarden: een minimum m

een maximum M een gemiddelde G

(5)

m

G

M

De oppervlaktes [m,G] en [G,M] verhouden zich tot elkaar als de verhouding tussen [G,M] en [m,G].

De rapportage moet bevatten:

• de source code van de verdelingen

• een gebruiksaanwijzing zoals in het TOMAS manual voor de andere verdelingen reeds aanwezig

• de resultaten (histogrammen) van testruns met 10000, 50000 resp. 100000 trekkingen uit elk van de verdelingen.

• Bij de theoretische verdelingen wordt een χ²-toets verwacht, waaruit blijkt dat de trekkingen zeer waarschijnlijk uit de theoretische verdeling zijn genomen.

(6)

Aanpak van de opdracht

Een systematisch aanpak van de opdracht vereist dat deze in een aantal stappen dient te worden verdeeld. De verschillende stappen zijn afhankelijk van elkaar en zullen derhalve in de hierna beschreven volgorde worden afgehandeld.

1. Het opstellen van een verificatiemodel. Hiermee wordt bepaald hoe de gegeneerde datasets kunnen worden getest. Eisen voor dit model zijn:

• Flexibiliteit in gebruik;

• Hoge mate van automatisering mogelijk om het repetitief karakter de parametrische beschreven verdelingen te beoordelen;

• Voldoende resolutie om gefundeerd conclusies te kunnen trekken; en • Mogelijkheid om de in de opdracht vereiste grafieken te maken.

2. Het in de literatuur zoeken naar geschikte algoritmen voor de generatoren. Voor de

praktische verdelingen is zelf een algoritme opgesteld. De algoritmen worden vertaald naar Delphi waar deze een aantal proef datasets genereren. De algoritmen worden beoordeeld op de performance van de datasets en de rekencapaciteit die de generatoren eisen. Op basis hiervan wordt gekozen voor de definitief te implementeren algoritmen.

3. Het beoordelen van een aantal datasets alsook het weergeven in grafieken, om zo het functioneren van de generatoren aan te kunnen tonen. Tevens worden de χ²-toetsen uitgevoerd.

4. Het implementeren in Tomas. Ter controle worden alle aanwezige verdelingen getest in de Tomas omgeving.

5. Het opnemen van de generatoren in de Tomas manual. 6. Het documenteren van de uitwerking van de opdracht.

(7)

Opstellen van het verificatiemodel

Om de verschillende generatoren te kunnen bouwen, moet er gekeken worden of de datasets die ze genereren voldoen en hoe goed ze voldoen aan de bijbehorende

waarschijnlijkheiddichtheidsfuncties.

Voor elk type verdeling is een controlemodel gemaakt. Er is gekozen voor het gebruik van Microsoft Excel en wel om de volgende redenen:

• De verschillende statistisch verdelingen zijn als functie bekend;

• De χ² verdeling is ook bekend zodat er een χ²-toets kan worden uitgevoerd; • Het maken van grafieken wordt uitgebreid ondersteund; en

• Eenvoudig te automatiseren en aan te passen.

Voor al de verschillende verdelingen is er een resolutie van 20 groepen gebruikt. Per verdeling is met verschillende parameters gekeken naar de afwijking van de theoretische waarden. Deze worden weergegeven in een grafiek.

Dit is gedaan voor verschillende groep groottes zoals in de opdracht beschreven. Ook deze bevindingen worden in een grafiek weergegeven.

Voorts wordt in het verificatiemodel ook de afwijking van enkele bekende parameters van de verdelingen beschreven. Deze parameters zijn: het gemiddelde, de variantie, de skew en kurtois.

Gamma verdeling

De Gamma verdeling heeft een bereik van [0,∞>. Voor het verificatiemodel is gekozen om 20 groepen te maken met - in het geval van de Gamma verdeling - een bereik van [0,20]. Dit houdt in dat de staart van de functie buiten beschouwing wordt gelaten. Zolang de schaalfactor niet te groot gekozen wordt, zal dit geen problemen opleveren. Door de cumulatieven te beschouwen, kan worden bepaald of dit verantwoord is.

Omdat de waarschijnlijkheiddichtheidsfunctie van de Gamma verdeling een voorgedefinieerde functie in Excel is, is het eenvoudig de te verwachte kans te bepalen. De getelde waarde van de dataset van een groep wordt uitgedrukt in de te verwachte (theoretische) waarde. Dit percentage wordt vervolgens weergegeven in de grafiek. Ook wordt hiermee de χ² van de waarde bepaald.

Erlang-K verdeling

De Erlang-K verdeling is een speciaal geval van de Gamma verdeling. De restricties van de parameters die de Gamma verdeling tot een Erlang-K verdeling maken, hebben verder geen invloed op het verificatiemodel. Derhalve wordt hetzelfde model gebruikt als bij de Gamma verdeling.

(8)

Beta Verdeling

De Beta verdeling heeft een ander bereik [0,1] als de vorenstaande functies. Hiervoor zal dus een andere groep grootte gelden. Voor het overige is de aanpak gelijk aan die van de Gamma en Erlang-K verdeling.

Driehoeksverdeling

Zoals in de opdracht gedefinieerd, heeft de driehoeksverdeling een bereik van [0,M]. Er is in het verificatiemodel gekozen om het bereik [0,20] aan te houden.

Aangezien er geen voorgedefinieerde functie voor het bepalen van de verwachtingswaarde van een groep in Excel aanwezig is, is zelf een algoritme bedacht.

Ub<=m true c=0 Ub<=x true c=((Ub-m)2-(Lb-m)2) / (M-m*x-m) false c=((M-Lb)2 -(M-Ub)2) / (M-m*x-m)

c verwachtingswaarde voor de groep Lb ondergrens van de groep Ub bovengrens van de groep M maximum van de driehoek m minimum van de driehoek x x-waarde van de driehoek

Ub>M

true c=0

false false

In Excel laat dit zich vertalen naar:

=IF(Ub<=m;0;IF(Ub>M;0;IF(Ub<=x;((Ub-m)^2-(Lb-A)^2)/((M-m)*(x-m));((M-Lb)^2-(M-Ub)^2)/((M-m)*(M-x)))))

NB: De gebruikte symbolen komen niet overeen met de symbolen gebruikt in de digitale bijlage maar zijn ter verduidelijking gelijk gehouden aan de symbolen in de flowchart.

Rechthoekverdeling

Zoals bij de driehoeksverdeling wordt ook hier het bereik door de parameters bepaald. Ook hier is voor een bereik [0,20] gekozen.

Het gebruikte algoritme is als volgt:

Ub<=m true p=0 Ub<=G true p=(M-G) / ((G-m)*(M-G)+(G-m)2) false p=(G-m) / ((G-m)*(M-G)+(M-G)2)

p verwachtingswaarde voor de groep Lb ondergrens van de groep Ub bovengrens van de groep M maximum van de rechthoeken m minimum van de rechthoeken G gemiddeldewaarde van de rechthoeken

Ub>M

true p=0

false false

In Excel laat dit zich vertalen naar:

(9)

Selectie van generator algoritme

Om een geschikt algoritme te vinden voor het genereren van statistische verdelingen worden eerst de eigenschappen van de verdelingen bekeken.

Gamma generator

De Gamma verdeling is op drie deeldomeinen verschillend te genereren. De schalingsparameter heeft hier geen invloed op en wordt als scalar verwerkt. In de voorbeelden is Kappa de vormfactor en Theta de schalingsfactor.

Als Kappa = 1

Hier heeft de verdeling een exponentiële verdeling. Deze luidt in Delphi als volgt:

If Kappa=1 Then Begin

result:=-Kappa*Theta*Ln(Rand(Seed)); End;

Als Kappa in het domein [0,1]

Dan zijn er verschillende verwerpmethodieken om tot een oplossing te komen. De Best/Ahrens/Dieter-methode [p. 149 Gentle] laat zich in Delphi vertalen naar:

a:=0.070+3/4*sqrt(1-k); b:=1+exp(-a)*k/a; c:=1/k; Accepted:=FALSE; While NOT(Accepted) Do begin u := Rand(Seed); w := Rand(Seed); v :=b*u; if (v<=1)then begin k1:=a*power(v,c); Accepted:= w<=(2-k1)/(2+k1);

if not Accepted then Accepted:= w<=power(exp(1),-k1); end; if (v>1) then begin k1:=-ln(c*a*(b-v)); y:=k1/a; Accepted:= w+y*(1-k)<=1;

if not Accepted then Accepted:= w<=power(y,(a-1)) end;

end; r:= k1;

(10)

De methode van Johnk [p. 416 Devroye] laat zich in Delphi vertalen naar:

If (Kappa>0) AND (Kappa<1) Then Begin

Accepted:=FALSE; While NOT(Accepted) Do Begin

x:= Power(Rand(Seed), (1/Kappa)); y:= Power(Rand(Seed), (1/(1-Kappa))); Accepted:= (x+y<= 1);

End;

result:= -Theta*Ln(Rand(Seed))*x/(x+y); End;

Bij het vergelijken van de verschillende algoritmen is gebruik gemaakt van het verificatiemodel voor de Gamma distributie. 0,000000E+00 2,000000E-03 4,000000E-03 6,000000E-03 8,000000E-03 1,000000E-02 1,200000E-02 1,400000E-02 1,600000E-02 -50% -40% -30% -20% -10% 0% 10% 20% 30% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution Best (shape 0,5 and scale 1) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(11)

0,000000E+00 2,000000E-03 4,000000E-03 6,000000E-03 8,000000E-03 1,000000E-02 1,200000E-02 -20% -10% 0% 10% 20% 30% 40% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution Johnk (shape 0,5 and scale 1) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

We zien bij vergelijking van de resultaten dat de afwijkingen van de verschillende parameters bij de Best generator niet naar nul convergeren. Hieruit wordt geconcludeerd dat de methode van Johnk nauwkeuriger is en daarom de voorkeur geniet.

Tevens levert de methode van Johnk een minder complexe code, en zal daarmee minder beslag op de computerresources leggen.

Derhalve wordt op dit domein voor de methode van Johnk gekozen.

Als Kappa >1

Ook hier wordt als eerste de methode van Best [p. 410 Devory] bekeken. Deze laat zich in Delphi vertalen naar: b:=Kappa-1; c:=3*k-3/4; Accepted:=FALSE; While NOT(Accepted) Do begin u := Rand(Seed); v := Rand(Seed); w :=u*(1-u); y :=sqrt(c/w)*(u-0.5); x := b+y; if (x>=0)then begin z:=64*Power(w,3)*Power(v,2); Accepted := z<=(1-2*y*y/x);

If NOT Accepted then Accepted := ln(z)<=(2*b*ln(x/b)-y); end;

end; r:= Theta*x;

(12)

Vervolgens wordt de methode van Cheng gebaseerd op Burr XII [p.413, Devroye] bekeken. Deze laat zich in Delphi vertalen naar:

b:=k-ln(4); c:=a+sqrt(2*k-1); Accepted:=FALSE; While NOT(Accepted) Do begin u := Rand(Seed); v := Rand(Seed); y:=k*ln(v/(1-v)); x:=k*exp(v); z:=u*v*v; w:=b+c*y-x; Accepted := w>=((9/2)*z-(1+ln(9/2))); If NOT Accepted then Accepted := w>=ln(z); end;

r:=t*x;

Tot slot wordt de methode van Cheng gebaseerd op Feast bekeken. Deze laat zich in Delphi vertalen naar: Accepted:=FALSE; While NOT(Accepted) Do begin u := Rand(Seed); w := Rand(Seed); v :=((k-(1/(6*k)))*u)/((k-1)*w);

if ((2*(w-1)/(k-1)+v+1/v)<=2)then Accepted:= true;

if not Accepted then Accepted:= (2*ln(w)/(k-1)-ln(v)+v)<=1; end;

r:=t*(k-1)*v;

Ook hier worden de resultaten vergeleken met het Gamma verificatiemodel.

0,000000E+00 1,000000E-01 2,000000E-01 3,000000E-01 4,000000E-01 5,000000E-01 6,000000E-01 7,000000E-01 8,000000E-01 9,000000E-01 1,000000E+00 0% 200% 400% 600% 800% 1000% 1200% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution Best (shape 5 and scale 1) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(13)

1,820000E+00 1,840000E+00 1,860000E+00 1,880000E+00 1,900000E+00 1,920000E+00 1,940000E+00 1,960000E+00 -200% -150% -100% -50% 0% 50% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution Cheng/Burr (shape 5 and scale 1) simulation to theoretical values for varying sample sizes relative_average relative_variance relative_skew relative_kurtosis Σχ2 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 -40% -30% -20% -10% 0% 10% 20% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution Cheng/fast (shape 5 and scale 1) simulation to theoretical values for varying sample sizes relative_average relative_variance relative_skew relative_kurtosis Σχ2

De Cheng/Feast is de generator die als enige acceptabele waarden laat zien. Derhalve zal deze generator worden geïmplementeerd.

(14)

Beta generator

Volgens de definitie van Johnk is de Beta verdeling opgebouwd uit de combinatie van twee Gamma verdelingen, te weten: Als X en Y onafhankelijk zijn en respectievelijk een Gamma(a,c)- en

Gamma(b,c)-verdeling hebben, dan heeft X/(X+Y) een bèta(a,b)-verdeling.’ Door gebruik te maken

van de door de Gamma generator,volgt de Beta generator. Deze luidt in Delphi als volgt:

If Alpha=1 Then r1:= -Alpha*Ln(Rand(Seed)); If (Alpha>0) AND (Alpha<1) Then

Begin

Accepted:=FALSE; While NOT(Accepted) Do Begin

x:= Power(Rand(Seed), (1/Alpha)); y:= Power(Rand(Seed), (1/(1-Alpha))); Accepted:= (x+y<= 1); End; r1:= -Ln(Rand(Seed))*x/(x+y); End; If (Alpha>1) Then Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:= ((Alpha-(1/(6*Alpha)))*u)/((Alpha-1)*w);

If ((2*(w-1)/(Alpha-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Alpha-1)-ln(v)+v)<=1; End;

r1:= (Alpha-1)*v; End;

If Beta=1 Then r2:= -Beta*Ln(Rand(Seed)); If (Beta>0) AND (Beta<1) Then

Begin

Accepted:=FALSE; While NOT(Accepted) Do Begin

x:= Power(Rand(Seed), (1/Beta)); y:= Power(Rand(Seed), (1/(1-Beta))); Accepted:= (x+y<= 1); End; r2:= -Ln(Rand(Seed))*x/(x+y); End; If (Beta>1) Then Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:=((Beta-(1/(6*Beta)))*u)/((Beta-1)*w);

If ((2*(w-1)/(Beta-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Beta-1)-ln(v)+v)<=1; End;

r2:=(Beta-1)*v; End;

(15)

Erlang-K generator

De Erlang-K verdeling is een speciaal geval van een Gamma verdeling, waarbij de Kappa beperkt is tot natuurlijke getallen. Dit heeft tot gevolg dat een vereenvoudigde versie van de Gamma verdeling als Erlang-K generator ingezet kan worden. Deze luidt in Delphi als volgt:

If Kappa=1 Then r:=-Kappa*Theta*Ln(Rand(Seed)); If (Kappa>1) Then Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:=((Kappa-(1/(6*Kappa)))*u)/((Kappa-1)*w);

If ((2*(w-1)/(Kappa-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Kappa-1)-ln(v)+v)<=1; End;

r:=Theta*(Kappa-1)*v; End;

Result:=r;

Driehoeksgenerator

In de praktische driehoeksverdeling is er zelf een logische verdeling gemaakt die het gewenste resultaat levert. Er wordt een random gegenereerd waarvan wordt bepaald of hij op het linker- of rechterdeel valt, deze wordt vervolgens gewogen in het bereik geplaatst. Deze luidt in Delphi als volgt:

u:=Rand(Seed);

If u<=((Cx-Ax)/(Bx-Ax)) Then r:=Ax+sqrt(u*(Bx-Ax)*(Cx-Ax));

If u>((Cx-Ax)/(Bx-Ax))Then r:=Bx-sqrt((u-((Cx-Ax)/(Bx-Ax)))*(Bx-Ax)*(Bx-Cx)); Result:=r;

Rechthoekgenerator

Voor de praktische rechthoekverdeling is dezelfde aanpak gebruikt als van die voor de driehoeksgenerator. Deze luidt in Delphi als volgt:

u:=Rand(Seed); If u<(UBound-Dmean)/(UBound-LBound) then Begin; r:=LBound+u*(Dmean-LBound)*(UBound-LBound)/(UBound-Dmean); End; If u>=(UBound-Dmean)/(UBound-LBound) then Begin; r:=UBound-(1-u)*(UBound-Dmean)*(UBound-LBound)/(Dmean-LBound); End; Result:=r;

(16)

Beoordeling van de gegenereerde datasets

Een aantal verdelingen zijn afhankelijk van de parametrisering die zij meekrijgen. Omdat een continue analyse dermate veel rekenwerk zou opleveren, is ervoor gekozen om de verdelingen voor een beperkt aantal karakteristieke parameters te analyseren.

Gamma verdeling

De Gamma verdeling is, zoals reeds gezien bij het kiezen van een algoritme, afhankelijk van de waarde van Kappa. Voor de hieronder in de grafiek aanwezige parameters zijn histogrammen gemaakt en zijn de datasets beoordeeld voor de Gamma verdeling.

0 0,005 0,01 0,015 0,02 0,025 0,03 0,035 0,04 0,045 0,05 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Pr ob ab ilit y

Probability Density Function of a gammadistribution with characteristic parameters

Kappa =1 & theta = 2 Kappa =2 & theta = 2 Kappa =3 & theta = 2 Kappa =5 & theta = 1 Kappa =9 & theta = 0,5

In de navolgende grafieken worden de histogrammen van de datasets voor de gekozen

parametrisering weergegeven samen met de grafieken van verloop van ‘gemiddelde, variantie, skew, kurtois en χ²‘ bij oplopende sample sizes.

(17)

Gamma met vormfactor 1 en schaal 2 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Gamma Distribution (shape 1 and scale 2) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 -20% -15% -10% -5% 0% 5% 10% 15% 20% 25% 30% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution (shape 1 and scale 2) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(18)

Gamma met vormfactor 2 en schaal 2 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 0,14 0,16 0,18 0,20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Gamma Distribution (shape 2 and scale 2) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 1,000000E-02 2,000000E-02 3,000000E-02 4,000000E-02 5,000000E-02 6,000000E-02 -40% -35% -30% -25% -20% -15% -10% -5% 0% 5% 10% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution (shape 2 and scale 2) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(19)

Gamma met vormfactor 3 en schaal 2 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 0,14 0,16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Gamma Distribution (shape 3 and scale 2) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 4,500000E-02 5,000000E-02 -10% -5% 0% 5% 10% 15% 20% 25% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution (shape 3 and scale 2) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(20)

Gamma met vormfactor 5 en schaal 1 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Gamma Distribution (shape 5 and scale 1) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 -40% -30% -20% -10% 0% 10% 20% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution (shape 5 and scale 1) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(21)

Gamma met vormfactor 9 en schaal 0,5 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 0,30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Gamma Distribution (shape 9 and scale 0,5) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 2,000000E-03 4,000000E-03 6,000000E-03 8,000000E-03 1,000000E-02 1,200000E-02 1,400000E-02 1,600000E-02 -80% -70% -60% -50% -40% -30% -20% -10% 0% 10% 20% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Gamma Distribution (shape 9 and scale 0,5) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

Omdat de χ²-toets voor alle datasets een waarde 1 heeft, zelfs al bij een sample size van 500, is ervoor gekozen om de χ²-waarden weer te gegeven in de grafiek om de convergentie naar zeer kleine waarden aan te tonen.

De verschillende eigenschappen van de datasets convergeren snel naar de verwachtingswaarde. Het is goed te zien dat de kurtois de hoogste graad van de afwijking in zich draagt; dit is de meest onrustige parameter die pas laat convergeert.

(22)

Beta verdeling

Ook de Beta verdeling is afhankelijk van de waarde van zijn twee parameters Alpha en Beta. De hieronder in de grafiek aanwezige parameters worden gebruikt bij het maken van de histogrammen en het beoordelen van de gegenereerde datasets.

0 0,005 0,01 0,015 0,02 0,025 0,03 0,035 0,04 0,045 0,05 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Pr ob ab ilit y

Probability Density Function of a Betadistribution with characteristic parameters

Alpha =0,5 & Beta = 0,5 Alpha =5 & Beta = 1 Alpha =1 & Beta = 3 Alpha =2 & Beta = 1 Alpha =2 & Beta = 5

In de navolgende grafieken worden de histogrammen van de datasets voor de gekozen

parametrisering weergegeven samen met de grafieken van verloop van ‘gemiddelde, variantie, skew, kurtois en χ²‘ bij oplopende sample sizes.

(23)

Beta met vormfactoren 0,5 en 0,5 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 0,14 0,16 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 1,00 N or m al ize d C ou nt Distribution groups

Comparison of Beta Distribution (shapes 0,5 and 0,5) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 -3% -2% -1% 0% 1% 2% 3% 4% 5% 6% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Beta Distribution (shape 0,5 and scale 0,5) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(24)

Beta met vormfactoren 1 en 3 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 0,14 0,16 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 1,00 N or m al ize d C ou nt Distribution groups

Comparison of Beta Distribution (shapes 1 and 3) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 4,500000E-02 -150% -100% -50% 0% 50% 100% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Beta Distribution (shape 1 and scale 3) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(25)

Beta met vormfactoren 2 en 2 0% 20% 40% 60% 80% 100% 120% 0,00 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 0,09 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 1,00 N or m al ize d C ou nt Distribution groups

Comparison of Beta Distribution (shapes 2 and 2) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 4,500000E-02 -18% -16% -14% -12% -10% -8% -6% -4% -2% 0% 2% 4% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Beta Distribution (shape 2 and scale 2) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(26)

Beta met vormfactoren 2 en 5 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 0,14 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 1,00 N or m al ize d C ou nt Distribution groups

Comparison of Beta Distribution (shapes 2 and 5) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 2,000000E-03 4,000000E-03 6,000000E-03 8,000000E-03 1,000000E-02 1,200000E-02 1,400000E-02 1,600000E-02 1,800000E-02 -300% -250% -200% -150% -100% -50% 0% 50% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Beta Distribution (shape 2 and scale 5) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(27)

Beta met vormfactoren 5 en 1 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 1,00 N or m al ize d C ou nt Distribution groups

Comparison of Beta Distribution (shapes 5 and 1) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 4,500000E-02 -30% -25% -20% -15% -10% -5% 0% 5% 10% 15% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Beta Distribution (shape 5 and scale 1) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

Omdat ook bij de Beta verdeling de χ²-toets voor alle datasets een waarde 1 heeft, is ook hier gekozen om de χ² waarden weer te geven in de grafiek.

De verschillende eigenschappen van de datasets convergeren snel naar de verwachtingswaarde. Er wordt geconcludeerd dat ook de Beta generator naar behoren functioneert.

(28)

Erlang-K verdeling

De Erlang-K verdeling is analoog aan de Gamma verdeling. Alsook wordt hier geconcludeerd dat de Erlang-K generator naar behoren functioneert.

Driehoeksverdeling

Voor de driehoeksverdeling zijn een aantal representatieve configuraties gekozen om te analyseren. De parameters van de gekozen configuraties staan in de onderstaande grafiek.

0 0,005 0,01 0,015 0,02 0,025 0,03 0,035 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Pr ob ab ilit y

Probability Density Function of a triangledistribution with characteristic parameters

A =11 , B = 17 & C =15 A =4 , B = 16 & C =10 A =1 , B = 20 & C =3

In de navolgende grafieken worden de histogrammen van de datasets voor de gekozen

parametrisering weergegeven samen met de grafieken van verloop van ‘gemiddelde, variantie, skew, kurtois en χ²‘ bij oplopende sample sizes.

(29)

Driehoeksverdeling met hoekpunten op x= 4, 16 en 10 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 0,14 0,16 0,18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Triangle Distribution (a= 4, b=16, c=10) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 -16% -14% -12% -10% -8% -6% -4% -2% 0% 2% 4% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Triangle Distribution (a= 4, b=16, c=10) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(30)

Driehoeksverdeling met hoekpunten op x= 1, 20 en 3 0% 20% 40% 60% 80% 100% 120% 0,00 0,02 0,04 0,06 0,08 0,10 0,12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Triangle Distribution (a= 1, b=20, c=3) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 -30% -20% -10% 0% 10% 20% 30% 40% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Triangle Distribution (a= 1, b=20, c=3) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(31)

Driehoeksverdeling met hoekpunten op x= 11, 17 en 15 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,35 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Triangle Distribution (a= 11, b=17, c=15) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-04 1,000000E-03 1,500000E-03 2,000000E-03 2,500000E-03 3,000000E-03 3,500000E-03 -35% -30% -25% -20% -15% -10% -5% 0% 5% 10% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Triangle Distribution (a= 11, b=17, c=15) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

Zoals uit de grafieken blijkt, functioneert ook de driehoeksgenerator naar behoren. De driehoeksgenerator voldoet tevens aan de χ²-toets.

(32)

Rechthoek verdeling

Tot slot zijn voor de rechthoekverdeling ook een aantal representatieve configuraties gekozen om te analyseren. De parameters van de gekozen configuraties staan in de onderstaande grafiek.

0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0,45 0,5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Pr ob ab ilit y

Probability Density Function of a Squares distribution with characteristic parameters

A =11 , B = 17 & C =15 A =4 , B = 16 & C =10 A =1 , B = 19 & C =3

In de navolgende grafieken worden de histogrammen van de datasets voor de gekozen

parametrisering weergegeven samen met de grafieken van verloop van ‘gemiddelde, variantie, skew, kurtois en χ²‘ bij oplopende sample sizes.

(33)

Rechthoekverdeling met hoekpunten op x= 4, 16 en 10 0% 20% 40% 60% 80% 100% 120% 0,00 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 0,09 0,10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Squares Distribution (a= 4, b=16, c=10) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 2,000000E-03 4,000000E-03 6,000000E-03 8,000000E-03 1,000000E-02 1,200000E-02 1,400000E-02 -3% -2% -2% -1% -1% 0% 1% 1% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Squares Distribution (a= 4, b=16, c=10) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(34)

Rechthoek verdeling met hoekpunten op x= 11, 17 en 15 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Squares Distribution (a= 11, b=17, c=15) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 1,000000E-03 2,000000E-03 3,000000E-03 4,000000E-03 5,000000E-03 6,000000E-03 -60% -50% -40% -30% -20% -10% 0% 10% 20% 30% 40% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Squares Distribution (a= 11, b=17, c=15) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

(35)

Rechthoek verdeling met hoekpunten op x= 1, 19 en 3 0% 20% 40% 60% 80% 100% 120% 0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 N or m al ize d C ou nt Distribution groups

Comparison of Squares Distribution (a= 1, b=19, c=3) simulation to theoretical values

Normalized_Count 10k samples Normalized_Count 50k samples Normalized_Count 100k samples Theoratical_value Cumulative_Theoretical_Value Normalized_Cumulative_Count 10ksamples Cu m ula tiv e per cen ta ges 0,000000E+00 5,000000E-03 1,000000E-02 1,500000E-02 2,000000E-02 2,500000E-02 3,000000E-02 3,500000E-02 4,000000E-02 -15% -10% -5% 0% 5% 10% 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Σχ 2 pe rc en ta ge Sample Size

Comparison of Squares Distribution (a= 1, b=19, c=3) simulation to theoretical values for varying sample sizes

relative_average relative_variance relative_skew relative_kurtosis Σχ2

Zoals uit de grafieken blijkt, functioneert ook de rechthoekgenerator naar behoren. Tot slot voldoet ook de rechthoeksgenerator aan de χ²-toets.

(36)

Implementatie in Tomas

Ten behoeve van de implementatie in Tomas, zijn er aanpassingen gemaakt op verschillende

plaatsen in de originele broncode. Hierna is getest of deze implementatie geen fouten bevat en naar behoren functioneert.

Ingevoegde broncode

Update history toevoeging gemaakt (regel 16).

(* 20-04-2014: Distibutions extended with gamma-,beta-,Erlang-, *) (* triangle-, and squares-distribution *) (* 22-04-2014: GetParm rewriten to accommodate more params *)

Interfaces uitgebreid met Math (regel 63). Dit is nodig voor het gebruik van de machtsfuncties in de formules.

uses Math,

Distributie type definitie (regel 96) uitgebreid met Gamma, Beta, Erlang, Triangle, Rectangle.

DistributionType = (Uniform,Exponential,Normal,Table,Gamma,Beta,Erlang,Triangle,Rectangle);

TGammaDistribution Class gedefinieerd (regel 364) met Kappa als vorm parameter en Theta als schaalfactor.

TGammaDistribution = class(TDistribution)

Kappa as shape factor and Theta as a scale factor. Private

Kappa: Double; Theta: Double; Published

Constructor Create(Seed: Integer; K,T: Double); Function Sample: Double; override;

End;

TBetaDistribution Class gedefinieerd (regel 373) met Alpha als vorm parameter en Beta als tweede vorm parameter.

TBetaDistribution = class(TDistribution Alpha as shape factor and Beta as second shape factor.

Private

Alpha: Double; Beta: Double; Published

Constructor Create(Seed: Integer; A,B: Double); Function Sample: Double; override;

(37)

TErlangDistribution Class gedefinieerd (regel 382) met Alpha als vorm parameter en Beta als tweede vorm parameter. TErlangDistribution = class(TDistribution) Private Kappa: Integer; Theta: Double; Published

Constructor Create(Seed,K: Integer; T: Double); Function Sample: Double; override;

End;

TTriangleDistribution Class gedefinieerd (regel 393) met A, B en C als x-waarde van de driehoeksverdeling. TTriangleDistribution = class(TDistribution) Private Ax: Double; Bx: Double; Cx: Double; Published

Constructor Create(Seed: Integer; A,B,C: Double); Function Sample: Double; override;

End;

TRectangleDistribution Class gedefinieerd (regel 401) met Lb, Ub en Mn als parameters van de rechthoekverdeling. TRectangleDistribution = class(TDistribution Private LBound: Double; UBound: Double; DMean: Double; Published

Constructor Create(Seed: Integer; Lb,Ub,Mn: Double); Function Sample: Double; override;

End;

TGammaDistribution Constructor beschreven (regel 2951) met Sample Function.

Constructor TGammaDistribution.Create(Seed: Integer; K,T: Double); Begin

inherited Create(Seed); Kappa:=K;

Theta:=T;

End; {TGammaDistribution.Init}

Function TGammaDistribution.Sample: Double; Var r: Double; x,y: Double; u,v,w: Double; Accepted: Boolean; Begin

(38)

If Kappa=1 Then Begin

r:=-Kappa*Theta*Ln(Rand(Seed)); End;

If (Kappa>0) AND (Kappa<1) Then Begin

Accepted:=FALSE; While NOT(Accepted) Do Begin

x:= Power(Rand(Seed), (1/Kappa)); y:= Power(Rand(Seed), (1/(1-Kappa))); Accepted:= (x+y<= 1); End; r:= -Theta*Ln(Rand(Seed))*x/(x+y); End; If (Kappa>1) Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:=((Kappa-(1/(6*Kappa)))*u)/((Kappa-1)*w);

If ((2*(w-1)/(Kappa-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Kappa-1)-ln(v)+v)<=1; End;

r:=Theta*(Kappa-1)*v; End;

Result:=r;

End; {TGammaDistribution.Sample}

TBetaDistribution Constructor beschreven (regel 2989) met Sample Function.

Constructor TBetaDistribution.Create(Seed: Integer; A,B: Double); Begin

inherited Create(Seed); Alpha:=A;

Beta:=B;

End; {TBetaDistribution.Init} Function TBetaDistribution.Sample: Double; Var r1,r2: Double; w,u,v: Double; x,y: Double; Accepted: Boolean; Begin If Alpha=1 Then Begin r1:= -Alpha*Ln(Rand(Seed)); End;

If (Alpha>0) AND (Alpha<1) Then Begin

Accepted:=FALSE; While NOT(Accepted) Do Begin

x:= Power(Rand(Seed), (1/Alpha)); y:= Power(Rand(Seed), (1/(1-Alpha)));

(39)

Accepted:= (x+y<= 1); End; r1:= -Ln(Rand(Seed))*x/(x+y); End; If (Alpha>1) Then Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:= ((Alpha-(1/(6*Alpha)))*u)/((Alpha-1)*w);

If ((2*(w-1)/(Alpha-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Alpha-1)-ln(v)+v)<=1; End;

r1:= (Alpha-1)*v; End;

If Beta=1 Then //gamma-distr. is exponential voor k=1 Begin

r2:= -Beta*Ln(Rand(Seed)); End;

If (Beta>0) AND (Beta<1) Then Begin

Accepted:=FALSE; While NOT(Accepted) Do Begin

x:= Power(Rand(Seed), (1/Beta)); y:= Power(Rand(Seed), (1/(1-Beta))); Accepted:= (x+y<= 1); End; r2:= -Ln(Rand(Seed))*x/(x+y); End; If (Beta>1) Then Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:=((Beta-(1/(6*Beta)))*u)/((Beta-1)*w);

If ((2*(w-1)/(Beta-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Beta-1)-ln(v)+v)<=1; End;

r2:=(Beta-1)*v; End;

Result:=r1/(r1+r2);

End; {TBetaDistribution.Sample}

TErlangDistribution Constructor beschreven (regel 3062) met Sample Function.

Constructor TErlangDistribution.Create(Seed,K: Integer; T: Double); Begin

inherited Create(Seed); Kappa:=K;

Theta:=T;

End; {TErlangDistribution.Init}

(40)

Var r: Double; u,v,w: Double; Accepted: Boolean; Begin If Kappa=1 Begin r:=-Kappa*Theta*Ln(Rand(Seed)); End; If (Kappa>1) Then Begin Accepted:=FALSE; While NOT(Accepted) Do Begin u:= Rand(Seed); w:= Rand(Seed); v:=((Kappa-(1/(6*Kappa)))*u)/((Kappa-1)*w);

If ((2*(w-1)/(Kappa-1)+v+1/v)<=2)Then Accepted:= true;

If NOT Accepted Then Accepted:= (2*ln(w)/(Kappa-1)-ln(v)+v)<=1; End;

r:=Theta*(Kappa-1)*v; End;

Result:=r;

End; {TErlangDistribution.Sample}

TTriangleDistribution Constructor beschreven (regel 3095) met Sample Function.

Constructor TTriangleDistribution.Create(Seed: Integer;A,B,C: Double); Begin inherited Create(Seed); Ax:=A; Bx:=B; Cx:=C; End; {TTriangleDistribution.Init}

Function TTriangleDistribution.Sample: Double; Var

r: Double; u: Double; Begin

u:=Rand(Seed);

If u<=((Cx-Ax)/(Bx-Ax)) Then r:=Ax+sqrt(u*(Bx-Ax)*(Cx-Ax));

If u>((Cx-Ax)/(Bx-Ax))Then r:=Bx-sqrt((u-((Cx-Ax)/(Bx-Ax)))*(Bx-Ax)*(Bx-Cx)); Result:=r;

End; {TTriangleDistribution.Sample}

TRectangleDistribution Constructor beschreven (regel 3114) met Sample Function.

Constructor TRectangleDistribution.Create(Seed: Integer; Lb,Ub,Mn: Double); Begin inherited Create(Seed); LBound:=Lb; Ubound:=Ub; Dmean:=Mn; End; {TRectangleDistribution.Init}

(41)

Var

r: Double; u: Double; Begin

u:=Rand(Seed);

If u<(UBound-Dmean)/(UBound-LBound) then r:=LBound+u*(Dmean-LBound)*(UBound-LBound)/(UBound-Dmean);

If u>=(UBound-Dmean)/(UBound-LBound) then r:=UBound-(1-u)*(UBound-Dmean)*(UBound-LBound)/(Dmean-LBound);

Result:=r;

End; {TRectangleDistribution.Sample}

TInputDistribution Constructor comment uitgebreid (regel 3139).

'Gamma(Parm1,Parm2),Seed' 'Beta(Parm1,Parm2),Seed' 'Erlang(Parm1,Parm2),Seed'

'Triangle(Parm1,Parm2,Parm3),Seed' 'Rectangle(Parm1,Parm2,Parm3),Seed'

TInputDistribution Constructor Constanten definitie (regel 3153) uitgebreid met 'GAM', BET', 'ERL', 'TRI', 'REC'.

Dist: Array[1..9] Of String[3] = ('UNI','EXP','NOR','TAB','GAM','BET','ERL','TRI','REC');

TInputDistribution Function GetParm (regel 3163) herschreven om meer parameters te verwerken.

Function GetParm(I: Integer): String; Var

P: Integer; S,R: String;

Begin {procedure works only for correct strings} P:=Pos('(',DString);

S:=Copy(Dstring,P+1,Length(DString) - P); {remove type string} P:=Pos('),',S);

S:=Copy(S,0,P-1); {remove ),seed string} P:=Pos(',',S);

While NOT (I=0.0) do Begin P:=Pos(',',S); if P<>0 then begin R:=Copy(S,1,P-1); S:=Copy(S,P+1); end Else R:=S; I:=I-1; End; Result:=R; End;

TInputDistribution variable i (regel 3189) verhoogd van 4 naar het nieuwe aantal opties 9.

(42)

TInputDistribution keuze opties (regel 3270) uitgebreid met nieuwe statische verdelingen. 5:Begin InputType:=Gamma; Distribution:=TGammaDistribution.Create(GetSeed, StrToFloat(GetParm(1)),StrToFloat(GetParm(2))); End; 6:Begin InputType:=Beta; Distribution:=TBetaDistribution.Create(GetSeed, StrToFloat(GetParm(1)),StrToFloat(GetParm(2))); End; 7:Begin InputType:=Erlang; Distribution:=TErlangDistribution.Create(GetSeed, StrToInt(GetParm(1)),StrToFloat(GetParm(2))); End; 8:Begin InputType:=Triangle; Distribution:=TTriangleDistribution.Create(GetSeed, StrToFloat(GetParm(1)),StrToFloat(GetParm(2)),StrToFloat(GetParm(3))); End; 9:Begin InputType:=Rectangle; Distribution:=TRectangleDistribution.Create(GetSeed, StrToFloat(GetParm(1)),StrToFloat(GetParm(2)),StrToFloat(GetParm(3))); End;

Implementatie test

Na het invoegen van de code zijn er voor elke distributie nog een aantal karakteristieke verdelingen gegenereerd. De verkregen verdelingen komen overeen met de verwachte verdelingsfuncties.

(43)

Geactualiseerde Tomas manual

Er zijn voor de geïntroduceerde functies aanpassingen gemaakt in de Tomas manual. Deze omvatten een uitbreiding van de Distributie commando’s zoals hieronder beschreven en zijn terug te vinden op pagina 16 van de geactualiseerde versie van de Tomas manual (zie bijlage).

e. TGammaDistribution = class (TDistribution)

Constructor Create(Seed: Integer; Kappa,Theta: Double);

Creates a gamma distribution with shape-parameter ‘Kappa’ and scale-factor ‘Theta’. f. TBetaDistribution = class (TDistribution)

Constructor Create(Seed: Integer; Alpha,Beta: Double);

Creates a beta distribution with ‘Alpha’ and ‘Beta’ as the two shape-parameters. g. TErlangDistribution = class (TDistribution)

Constructor Create(Seed: Integer; Kappa,Theta: Double);

Creates an Erlang distribution with shape-parameter ‘Kappa’ and scale-factor ‘Theta’. h. TTriangleDistribution = class (TDistribution)

Constructor Create(Seed: Integer; Xa,Xb,Xc: Double);

Creates a triangular shaped probability distribution with a total surface area of 1. ‘Xa’ is the minimum x-value, ‘Xb’ is the maximum x-value and ‘Xc’ is a x-value inbetween.

i. TRectangleDistribution = class (TDistribution)

Constructor Create(Seed: Integer; Lb,Ub,Mn: Double);

Creates a rectangular distribution with 2 rectangles with a total surface area of 1. The first from lower boundary ‘Lb’ to mean ‘Mn’. The second from mean ‘Mn’ to upper boundary ‘Ub’. With the surface areas respectively related to relation of upper boundary to mean and lower boundary to mean.

Ook bij de omschrijving van het TInputDistribution commando (pagina 18 van de geactualiseerde Tomas manual) zijn bij de parameter definities voor de main method ConstructorCreate

toevoegingen: ‘Gamma(Parm1,Parm2),Seed’ ‘Beta(Parm1,Parm2),Seed’ ‘Erlang(Parm1,Parm2),Seed’ ‘Triangle(Parm1,Parm2,Parm3),Seed’ ‘Rectangle(Parm1,Parm2,Parm3),Seed’

(44)

Bevindingen

Voor de verschillende statistische verdelingen zijn data generatoren gemaakt.

De datasets die worden genereerd zijn van voldoende nauwkeurigheid om te kunnen gebruiken in de Tomas simulatie omgeving.

(45)

Bronvermelding

[1] Devroye, L. (1986) Non-Uniform Random Variate Generation", Springer-Verlag, New York [2] Gentle, J.E. (2003) Random Number Generation and Montecarlo Methods", Springer-Verlag,

New York

[3] Robert, C.P. & Casella, G (1999) Monte Carlo Statistical Methods", Springer-Verlag, New York [4] Cheng, R.C.H., and Feast, G.M. (1979) Some simple Gamma variate generators, Appl. Stat. 28

Cytaty

Powiązane dokumenty

o silniejszej motywa- cji osób nastawionych promocyjnie, a tak#e o umiarko- wanym wp ywie kontroli prewencyjnej na si $ motywacji pos u#y y korelacje Pearsona wyników

W oknie po prawej stronie wybrać zakładkę Armature (ikona postaci), w sekcji Display przełączyć tryb wizualizacji

Po dru- gie, nie mówić więcej o dziele Euzebiusza jako o Pierwszej historii Kościoła, lecz poszukać innego tytułu, czy poprzestać na powszechnie używanym ty- tule Historia

I Akademia Muzycz­ na - Narodowa Akademia Muzyczna we Lwowie, zwróciła się do szerokiej społeczności, właściwie europejskiej, do wielu, wielu ośrodków

In this paper, we address the last two steps and give brief references of our earlier works in the previous steps. Two avoid common confusions between graphs and their drawings,

Ces formes, ces tendances natives et organisatrices, qui donnent une sorte d'impulsion vitale à des principes sociaux et religieux qui traversent le temps, qui inscrivent dans

Warto jednak pamiętać, że próba taka została przez polską politykę zdrowotną podjęta, a o skali trudności w budowie publicznej i po- wszechnej służby zdrowia

Wydaje się, że budowa „europejskiego domu” lub – jak tytułuje jedną ze swych książek Jeremy Rifkin – spełnienie „europejskiego marzenia” są zaawansowane.