NETWORKR.MOD

From Support

Jump to: navigation, search

Back to Model Library

See also: How to read .MOD pages

Contents

Description

NETWORKR.MOD is a variation of NETWORKT.MOD that is used in several exercises to explore various topics, including preemptive event execution (edge delays equal to * to "condense" several event vertices into a single event) and buffer capacities. See exercises 7.10.3, 7.10.8, and 7.10.9.

NETWORK1.MOD, NETWORKR.MOD, and NETWORKT.MOD model a jobshop with MAXG groups of different types of machines. Each type of job will have a different routing and a different processing time.

State Variables

State Variables in NETWORKR.MOD
Variable Name Abbreviation Variable Description Size Type
QUEUE Q[i] Number of jobs waiting in each group 6 Integer
SERVERS S[i] Number of idle machines in each group 6 Integer
G G Index identifying a machine group 1 Integer
QUE QUE List of tasks in each queue 6,51 Integer
MAXG MAXG Maximum number of machine groups in model 1,1 Integer
MAXQ MAXQ Maximum length of any queue in model 1 Integer
TASK TASK Position of a job on the route list 1 Integer
ROUTE ROUTE Machine group needed for each task 15 Integer
MTIME MTIME Mean processing time for each task 15 Real
I I Index for data input loop 1 Integer
R R Random index to determine job type 1 Real
FIRST FIRST Location of first task in each queue 6 Integer
LAST LAST Last position in the current queue 1 Integer
OUTPUT OUTPUT A count of the number of finished jobs 1 Integer

Vertices

Vertices in NETWORKR.MOD
Vertex Name Vertex Description State Changes
RUN The simulation is started MAXQ=50, MAXG=5
INPUT Reading of routing and timing data ROUTE[I]=DISK{NETWORK.DAT;0}, MTIME[I]=DISK{NETWORK.DAT;0}
ENTER Arrival of new job, determining the job type R=RND, TASK=5*(R>.3)+4*(R>.8)
NEXTG Determination of the next group on the route G=ROUTE[TASK]
START Start of this task at this service group S[G]=S[G]-1
FINISH Finish of this task at this service group S[G]=S[G]+1, TASK=TASK+1
NEXTQ Selection of the next job in queue TASK=QUE[G;FIRST[G]], G=ROUTE[TASK], Q[G]=Q[G]-1, FIRST[G]=MOD{FIRST[G]+1;MAXQ}
LEAVE Job leaving the network OUTPUT=OUTPUT+1
JOINQ Job joining the queue for a service group LAST=MOD{FIRST[G]+Q[G];MAXQ}, QUE[G;LAST]=TASK, Q[G]=Q[G]+1

Initialization Conditions

Initialization Conditions in NETWORKR.MOD
Variable Description
SERVERS[i] Initial number of servers in each group

Event Relationship Graph

NETWORKR.MOD
NETWORKR.MOD

English Translation

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

The SIGMA Model, NETWORKR.MOD, is a discrete event simulation. 
It models A NETWORK OF QUEUES USING ONLY RESIDENT ENTITIES.
I. STATE VARIABLE DEFINITIONS.
For this simulation, the following state variables are defined:
MAXG: MAXIMUM NUMBER OF MACHINE GROUPS IN MODEL   (integer valued)
G: INDEX IDENTIFYING A MACHINE GROUP   (integer valued)
S[6]: NUMBER OF IDLE MACHINES IN EACH GROUP   (integer valued)
MAXQ: MAXIMUM LENGTH OF ANY QUEUE IN MODEL   (integer valued)
Q[6]: NUMBER OF JOBS WAITING FOR EACH GROUP   (integer valued)
QUE[6,51]: LIST OF TASKS IN EACH QUEUE   (integer valued)
FIRST[6]: LOCATION OF FIRST TASK IN EACH QUEUE   (integer valued)
LAST: LAST POSITION IN THE CURRENT QUEUE   (integer valued)
TASK: POSITION OF A JOB ON THE ROUTE LIST   (integer valued)
ROUTE[15]: MACHINE GROUP NEEDED FOR EACH TASK   (integer valued)
MTIME[15]: MEAN PROCESSING TIME FOR EACH TASK  (real valued)
I: INDEX FOR DATA INPUT LOOP   (integer valued)
R: RANDOM INDEX TO DETERMINE JOB TYPE  (real valued)
OUTPUT: A COUNT OF THE NUMBER OF FINISHED JOBS   (integer 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(S[0],S[1],S[2],S[3],S[4]) event occurs when START OF THE RUN.
   Initial values for, S[0],S[1],S[2],S[3],S[4], are needed for each run.
   This event causes the following state change(s):
   MAXQ=50
   MAXG=5
   After every occurrence of the RUN event:
   Unconditionally, READ THE INPUT DATA;
   that is, schedule the INPUT(I) event to occur without delay...
   using the parameter value(s) of 0.
2. The INPUT(I) event occurs when READING OF ROUTING AND TIMING DATA.
   This event causes the following state change(s):
   ROUTE[I]=DISK{NETWORK.DAT;0}
   MTIME[I]=DISK{NETWORK.DAT;0}
   After every occurrence of the INPUT event:
   If I<14, then INCREMENT THE INDEX, I, AND CONTINUE READING INPU;
   that is, schedule the INPUT(I) event to occur without delay...
   using the parameter value(s) of I+1.
   (Time ties are broken by an execution priority of 4.)
   If I==14, then ALL INPUT DATA HAS BEEN READ, THE FIRST JOB ENTER;
   that is, schedule the ENTER() event to occur without delay.
3. The ENTER() event occurs when ARRIVAL OF NEW JOB, DETERMINING THE JOB TYPE.
   This event causes the following state change(s):
   R=RND
   TASK=5*(R>.3)+4*(R>.8)
   After every occurrence of the ENTER event:
   Unconditionally, SCHEDULE THE NEXT JOB ARRIVAL;
   that is, schedule the ENTER() event to occur in .25*ERL{1} time units.
   Unconditionally, DETERMINE THE FIRST SERVICE GROUP FOR THE JOB;
   that is, schedule the NEXTG(TASK) event to occur without delay...
   using the parameter value(s) of TASK.

4. The NEXTG(TASK) event occurs when DETERMINATION OF THE NEXT GROUP ON THE ROUTE.
   This event causes the following state change(s):
   G=ROUTE[TASK]
   After every occurrence of the NEXTG event:
   If G>=MAXG, then THE JOB IS FINISHED AND CAN LEAVE THE NETWORK;
   that is, schedule the LEAVE() event to occur without delay.
   (Time ties are broken by an execution priority of 2.)
   If G<MAXG and S[G]<=0, then THE JOB IS NOT DONE AND ITS NEXT GROUP IS BUSY;
   that is, schedule the JOINQ(TASK,G) event to occur without delay...
   using the parameter value(s) of TASK,G.
   (Time ties are broken by an execution priority of 2.)
   If G<MAXG and S[G]>0, then THE JOB IS NOT DONE AND A SERVER IS IDLE;
   that is, schedule the START(TASK,G) event to occur without delay...
   using the parameter value(s) of TASK,G.
5. The START(TASK,G) event occurs when START OF THIS TASK AT THIS SERVICE GROUP.
   This event causes the following state change(s):
   S[G]=S[G]-1
   After every occurrence of the START event:
   Unconditionally, START THE TASK WITH A SERVER FROM GROUP G;
   that is, schedule the FINSH(TASK,G) event to occur in MTIME[TASK]*ERL{2} time units...
   using the parameter value(s) of TASK,G.
   (Time ties are broken by an execution priority of 4.)
6. The FINSH(TASK,G) event occurs when TASK FINISHING AT THIS SERVICE GROUP.
   This event causes the following state change(s):
   S[G]=S[G]+1
   TASK=TASK+1
   After every occurrence of the FINSH event:
   Unconditionally, DETERMINE THE SERVICE GROUP FOR THE NEXT TASK;
   that is, schedule the NEXTG(TASK) event to occur without delay...
   using the parameter value(s) of TASK.
   If Q[G]>0, then JOBS ARE WAITING, SELECT NEXT TASK IN QUEUE;
   that is, schedule the NEXTQ(G) event to occur without delay...
   using the parameter value(s) of G.
   (Time ties are broken by an execution priority of 3.)
7. The JOINQ(TASK,G) event occurs when JOB JOINING THE QUEUE FOR A SERVICE GROUP.
   This event causes the following state change(s):
   LAST=MOD{FIRST[G]+Q[G];MAXQ}
   QUE[G;LAST]=TASK
   Q[G]=Q[G]+1
   No additional events are scheduled here.
8. The NEXTQ(G) event occurs when SELECTION OF THE NEXT JOB IN QUEUE.
   This event causes the following state change(s):
   TASK=QUE[G;FIRST[G]]
   G=ROUTE[TASK]
   Q[G]=Q[G]-1
   FIRST[G]=MOD{FIRST[G]+1;MAXQ}
   After every occurrence of the NEXTQ event:
   Unconditionally, START PROCESSING A JOB;
   that is, schedule the START(TASK,G) event to occur without delay...
   using the parameter value(s) of TASK,G.
   (Time ties are broken by an execution priority of 3.)
9. The LEAVE() event occurs when JOB LEAVING THE NETWORK.
   This event causes the following state change(s):
   OUTPUT=OUTPUT+1
   No additional events are scheduled here.

Comments

Back to top

Back to Model Library

Personal tools
Navigation