NETWORK1.MOD

From Support

Jump to: navigation, search

Back to Model Library

See also: How to read .MOD pages

Contents

Description

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

NETWORK1.MOD is a variation of NETWORKT.MOD. In NETWORKT.MOD, there are three types of jobs and each job has a separate route and processing times. In NETWROK1.MOD, there is only one type of job and one route.

State Variables

State Variables in NETWORK1.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 available servers in each group 6 Integer
G G Index identifying a machine group 1 Integer
MAXG MAXG Maximum number of machine groups in model 1,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
OUTPUT OUTPUT A count of the number of finished jobs 1 Integer
TASKLIST TASKLIST Task number for machine group G 6 Integer
MAXT MAXT Maximum number of tasks on all routes 1,1 Integer

Vertices

Vertices in NETWORK1.MOD
Vertex Name Vertex Description State Changes
RUN The simulation is started MAXG=5, MAXT=14
INPUT Reading of routing and timing data ROUTE[I]=DISK{NETWORK.DAT;0},MTIME[I]=DISK{NETWORK.DAT;0},TASKLIST[ROUTE[I]]=I
ENTER Arrival of new job, determining the job type TASK=0
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=TASKLIST[G], Q[G]=Q[G]-1
LEAVE Job leaving the network OUTPUT=OUTPUT+1
JOINQ Job joining the queue for a service group Q[G]=Q[G]+1

Initialization Conditions

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

Event Relationship Graph

NETWORK1.MOD
NETWORK1.MOD

English Translation

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

The SIGMA Model, NETWORK1.MOD, is a discrete event simulation. 
It models A NETWORK OF QUEUES WITH ONE TYPE OF JOB.
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)
Q[6]: NUMBER OF JOBS WAITING FOR EACH GROUP   (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)
OUTPUT: A COUNT OF THE NUMBER OF FINISHED JOBS   (integer valued)
TASKLIST[6]: TASK NUMBER FOR MACHING GROUP G   (integer valued)
MAXT: MAXIMUM NUMBER OF TASKS ON ALL ROUTES   (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):
   MAXG=5
   MAXT=14
   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}
   TASKLIST[ROUTE[I]]=I
   After every occurrence of the INPUT event:
   If I<MAXT, 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==MAXT, 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):
   TASK=0
   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(G) event to occur without delay...
   using the parameter value(s) of 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 THIS TASK WITH A SERVER FROM THIS GROUP;
   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 FINISH OF THIS TASK 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(G) event occurs when JOB JOINING THE QUEUE FOR A SERVICE GROUP.
   This event causes the following state change(s):
   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=TASKLIST[G]
   Q[G]=Q[G]-1
   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