Prev: Style (was Re: on goto)
Next: use of goto in C
From: aminer on 25 Apr 2010 13:54 Hello, An M/M/n queuing model simulation with Object Pascal and my Thread Pool Engine. Author: Amine Moulay Ramdane Description: It's harder and sometimes impossible to get analytical results about waiting times and and queue length for general interarrival and service distributions; so it's important to be able to estimate these quantities by observing the results of simulation. It's very easy in Object Pascal to simulate a sequence of arrival times with a given interarrival distribution. Look for example at the M/M/n example MMn.pas inside the zip file: --------------------------- InterArrivals:=TExponentialDistribution.Create(420623,1.0/3.0); ServiceTimes:=TExponentialDistribution.Create(220623,1.0/4.0); currtime:=0.0; for i:=1 to simnumber do begin obj:=TJob.create; obj.simnumber:=simnumber; obj.number:=i; currtime:=currtime+InterArrivals.Sample; obj.ArrivalTime:=currtime; obj.Servicetime:= ServiceTimes.sample; TP.execute(myobj.myproc1,pointer(obj),NORMAL_PRIORITY); end; ------------------------------------------- Here we have the InterArrivals object and ServiceTimes object and we are calling InterArrivals.Sample to get our samples from the Exponential Distribution. After that we are calling myobj.myproc1 to simulate our M/M/n queuig model... If you look at MMn.pas , you will see that the InterArrival rate is 3 and the Service rate is 4 , so, this will give us a theoretical value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02. You can download the M/M/n queuing model simulation from: http://pages.videotron.com/aminer/ Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/ Operating Systems: Win , Linux and Mac (x86). Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal -Sd for delphi mode.... Required Delphi switches: -DMSWINDOWS -$H+ For Delphi 5,6,7 use -DDelphi For Delphi 2005,2006,2007,2009,2010+ use the switch -DDELPHI2005+ Disclaimer: This software is provided on an "as-is" basis, with no warranties, express or implied. The entire risk and liability of using it is yours. Any damages resulting from the use or misuse of this software will be the responsibility of the user. Sincerely, Amine Moulay Ramdane.
From: aminer on 25 Apr 2010 14:18 I wrote: >If you look at MMn.pas , you will see that the InterArrival rate >is 3 and the Service rate is 4 , so, this will give us a theoretical >value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02. I mean for one server - M/M/1 - it gives a theorerical value of 1/(4-3) = 1 and 1.02 in the simulation.. But as you have noticed MMn.pas can simulate an M/M/n queuig model with 1 or many servers... Sincerely, Amine Moulay Ramdane. On Apr 25, 1:54 pm, aminer <ami...(a)videotron.ca> wrote: > Hello, > > An M/M/n queuing model simulation with Object Pascal and my Thread > Pool Engine. > > Author: Amine Moulay Ramdane > > Description: > > It's harder and sometimes impossible to get analytical results > about waiting times and and queue length for general interarrival > and service distributions; so it's important to be able to estimate > these quantities by observing the results of simulation. > > It's very easy in Object Pascal to simulate a sequence of arrival > times > with a given interarrival distribution. > > Look for example at the M/M/n example MMn.pas inside the zip file: > > --------------------------- > > InterArrivals:=TExponentialDistribution.Create(420623,1.0/3.0); > ServiceTimes:=TExponentialDistribution.Create(220623,1.0/4.0); > > currtime:=0.0; > > for i:=1 to simnumber > do > begin > obj:=TJob.create; > obj.simnumber:=simnumber; > obj.number:=i; > currtime:=currtime+InterArrivals.Sample; > obj.ArrivalTime:=currtime; > obj.Servicetime:= ServiceTimes.sample; > TP.execute(myobj.myproc1,pointer(obj),NORMAL_PRIORITY); > end; > ------------------------------------------- > > Here we have the InterArrivals object and ServiceTimes object and > we are calling InterArrivals.Sample to get our samples from the > Exponential Distribution. > > After that we are calling myobj.myproc1 to simulate our > M/M/n queuig model... > > If you look at MMn.pas , you will see that the InterArrival rate > is 3 and the Service rate is 4 , so, this will give us a theoretical > value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02. > > You can download the M/M/n queuing model simulation from: > > http://pages.videotron.com/aminer/ > > Language: FPC Pascal v2.2.0+ / Delphi 7+:http://www.freepascal.org/ > > Operating Systems: Win , Linux and Mac (x86). > > Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal > > -Sd for delphi mode.... > > Required Delphi switches: -DMSWINDOWS -$H+ > > For Delphi 5,6,7 use -DDelphi > > For Delphi 2005,2006,2007,2009,2010+ use the switch -DDELPHI2005+ > > Disclaimer: > > This software is provided on an "as-is" basis, with no warranties, > express or implied. The entire risk and liability of using it is > yours. > Any damages resulting from the use or misuse of this software will be > the responsibility of the user. > > Sincerely, > Amine Moulay Ramdane.
From: aminer on 25 Apr 2010 21:57 Hello , I have updated MMn.pas to version1.01 - i have corrected a bug - and put it back inside the zip file that you can download from: Welcome: http://pages.videotron.com/aminer/ Note: MMn.pas - n: numbers of servers - is queuing model simulation with Object Pascal and my Thread Pool Engine. Sincerely, Amine Moulay Ramdane. On Apr 25, 2:18 pm, aminer <ami...(a)videotron.ca> wrote: > I wrote: > >If you look at MMn.pas , you will see that the InterArrival rate > >is 3 and the Service rate is 4 , so, this will give us a theoretical > >value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02. > > I mean for one server - M/M/1 - it gives a theorerical value > of 1/(4-3) = 1 and 1.02 in the simulation.. > > But as you have noticed MMn.pas can simulate an M/M/n queuig model > with 1 or many servers... > > Sincerely, > Amine Moulay Ramdane. > > On Apr 25, 1:54 pm, aminer <ami...(a)videotron.ca> wrote: > > > > > Hello, > > > An M/M/n queuing model simulation with Object Pascal and my Thread > > Pool Engine. > > > Author: Amine Moulay Ramdane > > > Description: > > > It's harder and sometimes impossible to get analytical results > > about waiting times and and queue length for general interarrival > > and service distributions; so it's important to be able to estimate > > these quantities by observing the results of simulation. > > > It's very easy in Object Pascal to simulate a sequence of arrival > > times > > with a given interarrival distribution. > > > Look for example at the M/M/n example MMn.pas inside the zip file: > > > --------------------------- > > > InterArrivals:=TExponentialDistribution.Create(420623,1.0/3.0); > > ServiceTimes:=TExponentialDistribution.Create(220623,1.0/4.0); > > > currtime:=0.0; > > > for i:=1 to simnumber > > do > > begin > > obj:=TJob.create; > > obj.simnumber:=simnumber; > > obj.number:=i; > > currtime:=currtime+InterArrivals.Sample; > > obj.ArrivalTime:=currtime; > > obj.Servicetime:= ServiceTimes.sample; > > TP.execute(myobj.myproc1,pointer(obj),NORMAL_PRIORITY); > > end; > > ------------------------------------------- > > > Here we have the InterArrivals object and ServiceTimes object and > > we are calling InterArrivals.Sample to get our samples from the > > Exponential Distribution. > > > After that we are calling myobj.myproc1 to simulate our > > M/M/n queuig model... > > > If you look at MMn.pas , you will see that the InterArrival rate > > is 3 and the Service rate is 4 , so, this will give us a theoretical > > value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02. > > > You can download the M/M/n queuing model simulation from: > > >http://pages.videotron.com/aminer/ > > > Language: FPC Pascal v2.2.0+ / Delphi 7+:http://www.freepascal.org/ > > > Operating Systems: Win , Linux and Mac (x86). > > > Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal > > > -Sd for delphi mode.... > > > Required Delphi switches: -DMSWINDOWS -$H+ > > > For Delphi 5,6,7 use -DDelphi > > > For Delphi 2005,2006,2007,2009,2010+ use the switch -DDELPHI2005+ > > > Disclaimer: > > > This software is provided on an "as-is" basis, with no warranties, > > express or implied. The entire risk and liability of using it is > > yours. > > Any damages resulting from the use or misuse of this software will be > > the responsibility of the user. > > > Sincerely, > > Amine Moulay Ramdane.- Hide quoted text - > > - Show quoted text -
From: aminer on 25 Apr 2010 22:54 Hello Note: next time i will show you how to simulate a more complex problem in Object Pascal... Of course, if you want to simulate a 'general' distribution , like uniform or normal ,you can do it like this by changing your variables inside MMn.pas: Define your variables: var InterArrivals: TUniformDistribution; ServiceTimes: TUniformDistribution; and after that: InterArrivals:=TUniformDistribution.Create(420623,0,2); ServiceTimes:=TUniformDistribution.Create(2990623,0,1.5); for i:=1 to simnumber do begin obj:=TJob.create; obj.simnumber:=simnumber; obj.number:=i; currtime:=currtime+InterArrivals.Sample; obj.ArrivalTime:=currtime; obj.Servicetime:= ServiceTimes.sample; TP.execute(myobj.myproc1,pointer(obj),NORMAL_PRIORITY); end; Welcome: http://pages.videotron.com/aminer/ That all. Sincerely, Amine Moulay Ramdane. On Apr 25, 9:57 pm, aminer <ami...(a)videotron.ca> wrote: > Hello , > > I have updated MMn.pas to version1.01 - i have corrected a bug - > and put it back inside the zip file that you can download from: > > Welcome:http://pages.videotron.com/aminer/ > > Note: MMn.pas - n: numbers of servers - is queuing model simulation > with > Object Pascal and my Thread Pool Engine. > > Sincerely, > Amine Moulay Ramdane. > > On Apr 25, 2:18 pm, aminer <ami...(a)videotron.ca> wrote: > > > > > I wrote: > > >If you look at MMn.pas , you will see that the InterArrival rate > > >is 3 and the Service rate is 4 , so, this will give us a theoretical > > >value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02. > > > I mean for one server - M/M/1 - it gives a theorerical value > > of 1/(4-3) = 1 and 1.02 in the simulation.. > > > But as you have noticed MMn.pas can simulate an M/M/n queuig model > > with 1 or many servers... > > > Sincerely, > > Amine Moulay Ramdane. > > > On Apr 25, 1:54 pm, aminer <ami...(a)videotron.ca> wrote: > > > > Hello, > > > > An M/M/n queuing model simulation with Object Pascal and my Thread > > > Pool Engine. > > > > Author: Amine Moulay Ramdane > > > > Description: > > > > It's harder and sometimes impossible to get analytical results > > > about waiting times and and queue length for general interarrival > > > and service distributions; so it's important to be able to estimate > > > these quantities by observing the results of simulation. > > > > It's very easy in Object Pascal to simulate a sequence of arrival > > > times > > > with a given interarrival distribution. > > > > Look for example at the M/M/n example MMn.pas inside the zip file: > > > > --------------------------- > > > > InterArrivals:=TExponentialDistribution.Create(420623,1.0/3.0); > > > ServiceTimes:=TExponentialDistribution.Create(220623,1.0/4.0); > > > > currtime:=0.0; > > > > for i:=1 to simnumber > > > do > > > begin > > > obj:=TJob.create; > > > obj.simnumber:=simnumber; > > > obj.number:=i; > > > currtime:=currtime+InterArrivals.Sample; > > > obj.ArrivalTime:=currtime; > > > obj.Servicetime:= ServiceTimes.sample; > > > TP.execute(myobj.myproc1,pointer(obj),NORMAL_PRIORITY); > > > end; > > > ------------------------------------------- > > > > Here we have the InterArrivals object and ServiceTimes object and > > > we are calling InterArrivals.Sample to get our samples from the > > > Exponential Distribution. > > > > After that we are calling myobj.myproc1 to simulate our > > > M/M/n queuig model... > > > > If you look at MMn.pas , you will see that the InterArrival rate > > > is 3 and the Service rate is 4 , so, this will give us a theoretical > > > value of 1/(4-3) = 1, and the Object Pascal simulation give us 1.02.. > > > > You can download the M/M/n queuing model simulation from: > > > >http://pages.videotron.com/aminer/ > > > > Language: FPC Pascal v2.2.0+ / Delphi 7+:http://www.freepascal.org/ > > > > Operating Systems: Win , Linux and Mac (x86). > > > > Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal > > > > -Sd for delphi mode.... > > > > Required Delphi switches: -DMSWINDOWS -$H+ > > > > For Delphi 5,6,7 use -DDelphi > > > > For Delphi 2005,2006,2007,2009,2010+ use the switch -DDELPHI2005+ > > > > Disclaimer: > > > > This software is provided on an "as-is" basis, with no warranties, > > > express or implied. The entire risk and liability of using it is > > > yours. > > > Any damages resulting from the use or misuse of this software will be > > > the responsibility of the user. > > > > Sincerely, > > > Amine Moulay Ramdane.- Hide quoted text - > > > - Show quoted text -- Hide quoted text - > > - Show quoted text -
|
Pages: 1 Prev: Style (was Re: on goto) Next: use of goto in C |