From Support
Back to Model Library
- See also: How to read .MOD pages
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
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 Model Library