Classification tags: business operations management, DES, next-event time progression
The potentially relevant object types are:
Potentially relevant types of events are:
These object and event types, with their participation associations, can be visually described in a UML class diagram, as shown below.
If a demand is greater than the current stock level, the difference counts as a lost sale. Whenever the reorder interval has passed, the shop places a replenishment order with a quantity computed as the difference between an upper threshold (called target inventory) and the current stock level.
ON (event type) | DO (event routine) |
customer order | ... |
The random variation of the lead time between a replenishment order and the corresponding delivery is modeled by a random variable with a uniform probability distribution between 1 and 3 days. The inventory is modelled as an object with three attributes: product quantity in stock, reorder interval and target inventory. For simplicity, the model does not create replenishment order events, but instead it only schedules corresponding delivery events.
Consequently, we model just one object type: SingleProductShop
, with three attributes
quantityInStock
(NonNegativeInteger), reorderInterval
(PositiveInteger),
and targetInventory
(PositiveInteger). In addition, we model two event types:
DailyDemand
as an exogeneous event type with one attribute: quantity
(PositiveInteger),
and with the random variable function sampleQuantity
and, as an exogeneous event type,
with a recurrence
function.Delivery
as a caused event type with one attribute: quantity
(PositiveInteger),
and with the random variable function sampleLeadTime
.When the design model is implemented with an object-oriented programming language or framework OESjs available from,
the participation associations between DailyDemand
and SingleProductShop
, as well as
between Delivery
and SingleProductShop
, are represented with the corresponding
reference properties shop
and receiver
. This is also the case when using an Object Event
Simulation (OES) framework OESjs available from, like Sim4edu, where
all object types are derived from the pre-defined OES category Object
and all event types are derived from the pre-defined
OES category Event
, as shown in the following diagram:
Object
and Event
.ON (event type) | DO (event routine) |
DailyDemand( demQuant) @ t |
IF demQuant <= shop.quantityInStock THEN IF shop.quantityInStock − demQuant < shop.reorderLevel AND shop.quantityInStock > shop.reorderLevel THEN SET ordQuant TO shop.targetInventory − shop.quantityInStock - demQuant SCHEDULE Delivery( ordQuant) @ t + sampleLeadTime() DECREMENT shop.quantityInStock BY demQuant ELSE (if demQuant > shop.quantityInStock) INCREMENT shop.lostSales BY demQuant − shop.quantityInStock SET shop.quantityInStock TO 0 |
Delivery( delQuant) @ t | INCREMENT shop.quantityInStock BY delQuant |