# More of my philosophy about the analytic queueing-circuit analyzer PDQ and more..

2 views

### Amine Moulay Ramdane

Nov 27, 2021, 12:05:51 PM11/27/21
to
Hello,

More of my philosophy about the analytic queueing-circuit analyzer PDQ and more..

I am a white arab from Morocco, and i think i am smart since i have also
invented many scalable algorithms and algorithms..

I think i am smart, so as you have just noticed i have just talked

And i have just talked about Markov chains in mathematics and about Petri Nets here:

I now i will talk about my PDQ for Delphi and Freepascal:

This is a port by Amine Moulay Ramdane of PDQ version 6.2.0 to Delphi
on Windows and to Freepascal on both Windows and Linux, i have also provided you with two demos, one queuing MM1 demo, and another Jackson network demo. Also i have provided you with my HTML tutorial on how to solve analytically the Jackson network problem provided to you as a PDQ demo.

PDQ is an analytic queueing-circuit analyzer made freely available under MIT/X11 license from: http://www.perfdynamics.com/Tools/PDQ.html

And here is an example in Delphi and Freepascal of the Jackson network demo that i have included inside the zip file(and you can look
at my mathematical modeling of it here in my website: https://sites.google.com/site/scalable68/jackson-network-problem):

---

program test_network;

uses pdq64,LinSys;

type router1 = array of pansichar;
servTime1 = array of double;
visitRatios1 = array of double;
serviceDemands1 = array of double;
var

A, b, x : TMatrix;
arrivRate:double;
work:pansichar;
router:router1;
servTime:servTime1;
visitRatios:visitRatios1;
serviceDemands:serviceDemands1;
i:integer;

begin

setlength(router,3);
setlength(servTime,3);
setlength(visitRatios,3);
setlength(serviceDemands,3);

arrivRate := 0.50;
work:='Traffic';

router[0]:='Router1';
router[1]:='Router2';
router[2]:='Router3';

servTime[0]:=1.0;
servTime[1]:=2.0;
servTime[2]:=1.0;

A := TMatrix.Create (3,3);
b := TMatrix.Create (3,1);
x := TMatrix.Create (3,1);

A[1,1] := 1.0; A[1,2] := 0.0; A[1,3] := -0.2;
A[2,1] := -0.5; A[2,2] := 1.0; A[2,3] := 0.0;
A[3,1] := -0.5; A[3,2] := -0.8; A[3,3] := 1.0;

b[1,1] := 0.5; b[2,1] := 0.0; b[3,1] := 0.0;

LinSys.gauss(A, b, x);

visitRatios[0]:=x[1,1]/arrivRate;
visitRatios[1]:=x[2,1]/arrivRate;
visitRatios[2]:=x[3,1]/arrivRate;

serviceDemands[0]:=visitRatios[0]*servTime[0];
serviceDemands[1]:=visitRatios[1]*servTime[1];
serviceDemands[2]:=visitRatios[2]*servTime[2];

pdq64.PDQ_Init('Delphi Network in PDQ');

pdq64.PDQ_CreateOpen(work,arrivRate);

pdq64.PDQ_SetWUnit('Msgs');
pdq64.PDQ_SetTUnit('Time');

for i:=0 to 2
do
begin
pdq64.PDQ_CreateNode(router[i],pdq64.CEN,pdq64.FCFS);
pdq64.PDQ_SetDemand(router[i],work,serviceDemands[i]);
end;

pdq64.PDQ_Solve(pdq64.CANON);
pdq64.PDQ_Report();

setlength(router,0);
setlength(servTime,0);
setlength(visitRatios,0);
setlength(serviceDemands,0);

A.free;
b.free;
x.free;

end.

---

Thank you,
Amine Moulay Ramdane.