TANDQ.MOD

From Support

Jump to: navigation, search

Back to Model Library

See also: How to read .MOD pages

Contents

Description

A queueing network where customers proceed through successive service operations along a single path is called a tandem queue, for example a a serial production line with several different machining steps. Typically, the service time for one of the steps is a bit slower than the others; this is called the bottleneck. Work will tend to pile up at the bottleneck created by the slower server, and successive servers will become starved for work. If there is limited waiting space between the servers (called a capacitated queuing system), blocking might also occur. A server becomes blocked when there is no space to unload a finished job. Both blocking and starving will degrade the performance of a tandem queue.

TWOQUES.MOD, TWOQUES1.MOD, TWOQUEUE.MOD and TANDQ.MOD model these types of systems.

TandQ.MOD is a more generalized tandem queue model. While TWOQUES.MOD and TWOQUES1.MOD are tandem queues with two queues each, TANDQ.MOD can include any number of queues in series. This is achieved by having an additional vertex parameter that indicates which queue is involved in each event.

State Variables

State Variables in TANDQ.MOD
Variable Name Abbreviation Variable Description Size Type
SYSTEM SY The global queue 1 Integer
QUEUE Q[j] The number of jobs waiting at station j 10 Integer
SERVER S[j] Availability of server[j] 10 Integer
I I Index for loop reading input data 1 Integer
J J Index for stations 1 Integer
B B Waiting space for jobs at station j 10 Integer
ENT ENT Job attributes (ENT[5]=TIME ENTERED) 15 Real
RNK RNK Ranking of the global system queue(FIFO) 25 Real
MAKESPAN MAKESPAN Total job time in system 1 Real
N N Number of stations in sequence of queues 1 Integer
L L Lower bound on uniform processing time at j 10 Real
U U Upper bound of uniform processing time at j 10 Real

Vertices

Vertices in TANDQ.MOD
Vertex Name Vertex Description State Changes
RUN Setting of N=Number of Queues None
INPUT Data input (Reads MAKEPARM.DAT) L[J]=DISK{TANDQ.DAT;I}, U[J]=DISK{TANDQ.DAT;I+1}, B[J]=DISK{TANDQ.DAT;I+2}, S[J]=1
ARRIVE Arrival of a new potential job None
ENTER Job entering the system None
WAIT Job starting to wait in queue j None
WORK Start of work at station j None
DONE Job finishing at station j None
FINISH Job finishing with the last station None
LEAVE Job leaving the system None

Initialization Conditions

Initialization Conditions in TANDQ.MOD
Variable Description
N Number of stations in sequence of queues

Event Relationship Graph

TANDQ.MOD
TANDQ.MOD

English Translation

An English translation is a verbal description of a model, automatically generated by SIGMA.

The SIGMA Model, TANDQ.MOD, is a discrete event simulation. 
It models BUFFERED TANDEM QUEUES WITHOUT STATE CHANGES.
I. STATE VARIABLE DEFINITIONS.
For this simulation, the following state variables are defined:
I: INDEX FOR LOOP READING INPUT DATA   (integer valued)
J: INDEX FOR STATIONS   (integer valued)
Q[10]: NUMBER OF JOBS WAITING AT STATION J   (integer valued)
B[10]: WAITING SPACE FOR JOBS AT STATION J   (integer valued)
S[10]: STATUS OF SERVER AT STATION J (BUSY=0/FREE=1)   (integer valued)
SYSTEM: THE GLOBAL QUEUE   (integer valued)
ENT[15]: JOB ATTRIBUTES (ENT[5]=TIME ENTERED)  (real valued)
RNK[25]: RANKING OF THE GLOBAL SYSTEM QUEUE (FIFO)  (real valued)
MAKESPAN: TOTAL JOB TIME IN SYSTEM  (real valued)
N: NUMBER OF STATIONS IN SEQUENCE OF QUEUES   (integer valued)
L[10]: LOWER BOUND ON UNIFORM PROCESSING TIME AT J  (real valued)
U[10]: UPPER BOUND OF UNIFORM PROCESSING TIME AT J  (real valued)
II. EVENT DEFINITIONS.
Simulation state changes are represented by event vertices (nodes or balls) in a SIGMA graph.  
Event vertex parameters, if any, are given in parentheses. Logical and dynamic relationships 
between pairs of events are represented in a SIGMA graph by edges (arrows) between event vertices.  
Unless otherwise stated, vertex execution priorities, to break time ties, are equal to 5.
1. The RUN(N) event occurs when SETTING OF N = NUMBER OF QUEUES.
   Initial values for, N, are needed for each run.
   After every occurrence of the RUN event:
   Unconditionally, INITIATE THE FIRST JOB ARRIVAL;
   that is, schedule the ARRIV() event to occur without delay.
   Unconditionally, READ IN THE INPUT DATA FROM FILE, MAKEPARM.DAT;
   that is, immediately execute the INPUT(I,J) event...using the parameter value(s) of 1,1.
2. The DONE(J,S[J]) event occurs when JOB FINISHING AT STATION J.
   After every occurrence of the DONE event:
   If Q[J]>0 and (B[J+1]>Q[J+1] or J==N), then START WORKING ON THE NEXT JOB IN QUEUE J;
   that is, schedule the WORK(J,Q[J],S[J]) event to occur without delay...
   using the parameter value(s) of J,Q[J]-1,S[J]-1.
   (Time ties are broken by an execution priority of 2.)
   If J!=N and B[J+1]<=Q[J+1] and S[J]!=-1, then SERVER J IS BLOCKED, CHANGE STATUS TO -1;
   that is, schedule the DONE(J,S[J]) event to occur without delay...
   using the parameter value(s) of J,-1.
   (Time ties are broken by an execution priority of 1.)
   If J!=1 and S[J-1]==-1 and S[J]!=-1, then FREE BLOCKED SERVER J-1 (IF NOT ALREADY DONE);
   that is, schedule the DONE(J,S[J]) event to occur without delay...
   using the parameter value(s) of J-1,1.
   (Time ties are broken by an execution priority of 6.)
   If J!=N and B[J+1]>Q[J+1], then THE JOB GOES TO THE NEXT QUEUE ;
   that is, schedule the WAIT(J,Q[J]) event to occur without delay...
   using the parameter value(s) of J+1,Q[J+1]+1.
   (Time ties are broken by an execution priority of 3.)
   If J==N, then THIS IS THE LAST STATION, JOB IS FINISHED ;
   that is, schedule the FINSH() event to occur without delay.
3. The WAIT(J,Q[J]) event occurs when JOB STARTING TO WAIT IN QUEUE J.
   After every occurrence of the WAIT event:
   If S[J]>0, then SERVER J IS FREE, SO START WORK;
   that is, schedule the WORK(J,Q[J],S[J]) event to occur without delay...
   using the parameter value(s) of J,Q[J]-1,S[J]-1.
   (Time ties are broken by an execution priority of 4.)
4. The ARRIV() event occurs when ARRIVAL OF A NEW POTENTIAL JOB.
   After every occurrence of the ARRIV event:
   Unconditionally, SCHEDULE THE NEXT ARRIVAL IN ABOUT 10 MINUTES;
   that is, schedule the ARRIV() event to occur in 10*ERL{1} time units.
   If B[1]>Q[1], then THERE IS ROOM, WAIT IN QUEUE 1;
   that is, schedule the ENTER(ENT[5]) event to occur without delay...
   using the parameter value(s) of CLK.
   (Time ties are broken by an execution priority of 3.)
5. The WORK(J,Q[J],S[J]) event occurs when START OF WORK AT STATION J.
   After every occurrence of the WORK event:
   Unconditionally, WORK AT STATION J;
   that is, schedule the DONE(J,S[J]) event to occur in L[J]+U[J]*RND time units...
   using the parameter value(s) of J,S[J]+1.
6. The LEAVE(MAKESPAN) event occurs when JOB LEAVING THE SYSTEM.
   No additional events are scheduled here.
7. The ENTER(ENT[5]) event occurs when JOB ENTERING THE SYSTEM.
   After every occurrence of the ENTER event:
   Unconditionally, PUT THE JOB IN THE SYSTEM;
   that is, immediately execute the WAIT(J,Q[J]) event...
   using the parameter value(s) of 1,Q[1]+PUT{FIF;SYSTEM}.
8. The FINSH() event occurs when JOB FINISHING WITH THE LAST STATION.
   After every occurrence of the FINSH event:
   If GET{FST;SYSTEM}, then THE JOB LEAVES THE SYSTEM;
   that is, immediately execute the LEAVE(MAKESPAN) event...
   using the parameter value(s) of CLK-ENT[5].
9. The INPUT(I,J) event occurs when DATA INPUT (READS MAKEPARM.DAT).
   This event causes the following state change(s):
   L[J]=DISK{TANDQ.DAT;I}
   U[J]=DISK{TANDQ.DAT;I+1}
   B[J]=DISK{TANDQ.DAT;I+2}
   S[J]=1
   After every occurrence of the INPUT event:
   If J<N, then READ THE LOWER AND UPPER LIMITS FOR NEXT QUEUE;
   that is, schedule the INPUT(I,J) event to occur without delay...
   using the parameter value(s) of I+3,J+1.
   (Time ties are broken by an execution priority of 4.)

Comments

Back to top

Back to Model Library

Personal tools
Navigation