Case Study: Modelling Requests to a Courier Service
Submitted: 9 Aug 2009
Application Areas: Logistics
Contents
Problem Description
A courier company offers two services: an Inner City delivery service that delivers packages within the Inner City area in under an hour; a Metropolitan delivery service that delivers packages within the Metrolpolitan area in less than 4 hours.
An Inner City courier leaves the distribution centre if EITHER there are 10 deliveries to make OR it has been 15 minutes since the last Inner City delivery run departed. A Metropolitan courier leaves the distribution centre if EITHER there are 30 deliveries to make OR it has been 30 mins since the last Metropolitan run departed. The courier company works for 8 hours a day and starts each day with no deliveries to make.
The courier company has collected data on the time between requests for both Inner City and Metropolitan deliveries as well as the time to make Inner City and Metropolitan deliveries. They want to know how many deliveries their Inner City and Metropolitan couriers make each day and also how long they are on the road during a day.
Return to top
Problem Formulation
To simplfy the modelling we will
abstract 4 sections of the problem:
- Requests for Inner City deliveries;
- Requests for Metropolitan deliveries;
- Delivery runs for Inner City deliveries;
- Delivery runs for Metropolitan deliveries.
We start by assuming we can model these accurately using random variables, so we can concentrate on the remaining logic in the system.
Figure 1 shows a flow diagram for the Inner City deliveries (note that a flowchart for the Metropolitan deliveries would be similar).
Figure 1 Flow Diagram for Inner City Deliveries
The way to implement this flow digram will differ depending on the simulation modelling tools used.
Return to top
Computational Model
To model the flow digram from
Figure 1 we first abstract the delivery requests and request runs as Arena submodels. The submodel for requests only generate requests, so a single submodel with only an exit point is needed. The submodel for a delivery run has the load of deliveries as input and outputs the load of deliveries after the delivery run finishes, so it has a single entry and exit point. The following
flash tutorial shows how to add the appropriate submodels in Arena:
Adding submodels for Courier Model
Next, we want queues that store delivery entities until a delivery run occurs. The next
flash tutorial shows how to add a Hold module and a Variable to implement this queue for Inner City deliveries:
Adding waiting queue for Courier Model
Next, we want to create logical entities to take care of triggering delivery runs if either a given time interval passes or a number of delivery requests have been queued. We create a single logical entity that creates a duplicate entity for timing and then goes into a Hold module waiting for the timing entity to finish or the queue to reach the required length.
Note The timing entity does not do anything
except create a calendar event when it leaves. This calendar event means the Hold module will scan and release the logical entity if a delivery run should be triggered. The following
flash tutorial shows how to implement the logical entity for the Inner City deliveries:
Adding logical entity to Courier Model
Return to top
Results
The results...
Return to top
Conclusions
In conclusion...
Return to top