Case Study: Modelling Requests to a Courier Service

Submitted: 9 Aug 2009

Operations Research Topics: SimulationModelling

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:

  1. Requests for Inner City deliveries;
  2. Requests for Metropolitan deliveries;
  3. Delivery runs for Inner City deliveries;
  4. 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

courier_flow.png

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

Topic attachments
I Attachment History Action Size Date Who Comment
SWF (Shockwave Flash)swf courier-delivery.swf r1 manage 2379.3 K 2009-08-09 - 10:42 MichaelOSullivan Adding delivery run to Courier Model
SWF (Shockwave Flash)swf courier-logical.swf r1 manage 1953.1 K 2009-08-09 - 09:55 MichaelOSullivan Adding logical entity to Courier Model
SWF (Shockwave Flash)swf courier-submodels.swf r1 manage 798.0 K 2009-08-09 - 08:45 MichaelOSullivan Adding submodels for Courier Model
SWF (Shockwave Flash)swf courier-waiting.swf r1 manage 502.0 K 2009-08-09 - 08:53 MichaelOSullivan Adding waiting queue for Courier Model
Edit | Attach | Watch | Print version | History: r33 | r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 2009-08-09 - MichaelOSullivan
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback