Classification tags: business operations management, DES, next-event time progression, processing network model
The potentially relevant object types are:
Potentially relevant types of events are:
ON (event type) | DO (event routine) |
order arrival | if machine is busy, then push order to input buffer else start a new machine activity |
end of machine activity | if there is a successor machine then forward the order/item and, if it's not busy, start processing else the processed order is completed and the manufactured item departs; if there are still orders waiting in the queue, then start next machine activity |
In this model of four consecutive manufacturing machines, all machines are modeled as instances of a
generic object type Machine
such that they perform activities of type MachineActivity
.
The model allows to have chains of manufacturing machines of any length.
A computational design for the purpose of computing the statistics average time in system and machineActivity utilizations is obtained by modeling the following types of objects, events and activities:
Machine
and Order
, such that
machines (1) have a waiting line represented as a multi-valued reference property waitingOrders
defined by a corresponding association end, and (2) may have a successor machine represented as a
reference property nextMachine
defined by a corresponding association end.OrderArrival
with a reference property machine
for expressing that an order arrives at a certain machine. As an exogenous event type, OrderArrival
has a recurrence
function representing a random variable for computing the time in-between
two subsequent order arrival events.MachineActivity
, having a resource association with the object type
Machine
(for expressing that a machine activity is performed at a certain machine) and
having a function randomDuration
representing a random variable that models the random
variation of duration of machine activities.ON (event type) | DO (event routine) |
OrderArrival( sP) @ t |
CREATE order{ arrivalTime: t} PUSH order TO sP.waitingOrders IF sP.waitingOrders.length = 1 THEN SCHEDULE ActivityStart("MachineActivity", sP) @ t' |
ActivityEnd("MachineActivity", a) @ t |
SET sP = a.machine POP order FROM sP.waitingOrders IF HAS-VALUE( sP.nextMachine) THEN SET nextSP = sP.nextMachine PUSH order TO nextSP.waitingOrders IF nextSP.waitingOrders.length = 1 THEN SCHEDULE ActivityStart("MachineActivity", nextSP) @ t' ELSE REMOVE order FROM SIMULATION IF sP.waitingOrders.length > 0 THEN SCHEDULE ActivityStart("MachineActivity", sP) @ t' |
Notice that t' denotes the next moment in simulation time after t. If the simulation is using discrete time, then t' = t+1, else (if the simulation is using continuous time), then t' = t + Δt where Δt denotes the smallest time increment defined by the simulation model's time granularity.