# CLONES: CLOsed queueing Networks Exact Sampling

• CLONES is a Matlab toolbox to realize CLosed queueing Networks Exact Sampling. Clones refers to an eponymous paper presented at the conference ValueTools2014.
• Developer : C. Rovetta
• Last version : 2015-05-11
• Paper : Clones.pdf
Main functions We consider the following prameters:
• K: number of queues
• M: number of customers
• C: vector of capacities
• E: vector of number of serveur in each queues
• Mu: vector of service rate for each serveur in each queue
• P: routing matrix
The following parameters are deduced from the previous:
• PP: cumsum of P
• Nu: vector of service rate in each queue
• Nuu: cumsum of Nu
 States - S matrix S=Clones_StateSpace(C,M) Returns the state space, using psi(D) S=Clones_t(S,C,[i j]) Transition i->j on the set of states S S=Clones_tm(S,C,[i j m]) Transition Tijm on the set of states S Diagram - D matrix D=Clones_CompleteD(C,M) Computes the complete diagram D with the diagram representation D=Clones_T(D,C,[i j]) Transition i->j on the diagram D D=Clones_Tm(D,C,[i j m]) Transition Tijm on the diagram D SD=Clones_Psi(D) Computes psi(D), i.e. transforms a diagram into its corresponding set of states SD Clones_CardPsi(D) Returns the cardinality of psi(D) Clones_OnePath(D) Returns 1 if the diagram contains only one path, 0 else Clones_plotD(D,C,-1) Plots the diagram D Gap-free diagram - F matrix F=Clones_CompleteF(C,M) Returns the complete diagram F with the gap-free representation F=Clones_gfT(F,C,[i j]) Gap-free transition i->j on the gap-free diagram F F=Clones_gfTm(F,C,[i j m]) Gap-free transition gfTijm on the gap-free diagram F D=Clones_FtoD(F,C,M) Transforms a gap-free diagram F in a diagram D Clones_OnePathF(F,C) Returns 1 if the gap-free diagram contains one path, 0 else Simulation r=Clones_rand_ij(PP,Nuu) Produce a random couple r=[i j] according to PP and Nuu r=Clones_rand_ijm(PP,Nuu,E) Produce a random couple r=[i j m] according to PP, Nuu and E P=Clones_randP_ring(K) Produce a routing matrix P of a ring network with K queues randomly
Detailed Description In the following example we take:
• K=5
• M=3
• C=[2 1 3 1 2]
• E=[2 1 2 1 2]
• Mu=[1 1 5 1 1]
• P=[0 0 1 0 0; 0.7 0 0.3 0 0 ; 0.5 0 0 0 0.5; 0 0.8 0.2 0 0; 0 0.5 0 0.5 0]
• see Example1
>> S=Clones_StateSpace(C,M) % Return the state space matrix S
S =
 0 0 0 1 2 0 0 1 0 2 0 1 0 0 2 1 0 0 0 2 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 2 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 2 0 0 0 1 0 0 2 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 2 0 0 1 0 0 0 3 0 0 0 1 2 0 0 1 0 2 0 0 1 1 1 0 0 2 0 1 0 0 2 1 0 0 0
>> S2=Clones_StateSpace2(K,M,C); % Return the state space matrix S2 (=S)
>> S=Clones_t(S,C,[1 2]) % Return the states matrix S=tij(S) where i=1, j=2
S =
 0 0 0 1 2 0 0 1 0 2 0 0 1 1 1 0 0 2 0 1 0 0 2 1 0 0 0 3 0 0 0 1 0 0 2 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 2 0 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 0 2 1 0 0 0
>> D=Clones_CompleteD(C,M) % Return the complete diagram matrix D
D =
 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1
>> D=Clones_T(D,C,[1 2]) % Return the diagram matrix D=Tij(D) where i=1, j=2
D =
 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1
>> SD=Clones_Psi(D) % Return the states matrix SD=psi(D)
SD =
 0 0 0 1 2 0 0 1 0 2 0 1 0 0 2 0 0 1 1 1 0 1 0 1 1 0 0 2 0 1 0 1 1 0 1 1 1 0 0 1 0 0 2 1 0 0 1 1 1 0 1 1 0 1 0 0 0 3 0 0 0 1 2 0 0 1 1 1 0 0 2 1 0 0 0
>> Clones_CardPsi(D) % Return the cardinality of psi(D)
ans = 15
>> Clones_OnePath(D) % Return 1 if D contains only one path, 0 else
>> Clones_plotD(D,C,-1); % Plot D
>> F=Clones_CompleteF(C,M) % Return the complete gap-free diagram with matrix F
F =
 0 0 0 0 0 0 0 2 0 2 0 3 0 2 0 1 0 0 1 3 0 2 3 3 2 2 1 1
>> F=Clones_gfT(F,C,M,[1 2]) % Return the gap-free diagram matrix F=[Tij(F)]gf where i=1, j=2
F =
 0 0 0 0 0 0 0 0 0 2 0 3 0 2 0 1 0 0 1 3 0 2 3 3 2 2 1 1
 >> D=Clones_FtoD(F,C,M); % Transform a gap-free diagram F into a diagram D >> Clones_OnePath(F,K) % Return 1 if F contains only one path, 0 else
 >> r=Clones_rand_ij(PP,Nuu) ; % Produce a random couple r=[i j] according to PP and Nuu >> r=Clones_rand_ijm(PP,Nuu,E) % Produce a random couple r=[i j m] according to PP, Nuu and E >> P=Clones_randP_ring(K) % Produce a routing matrix P of a ring network with K queues randomly