PTSP Example

PTSP Example

This web page provide a full description of an PTSP example with a solution build step-by-step to illustrate the article:

Philippe Lacomme, Aziz Moukrim, Alain Quilliot, Marina Vinot. TSupply Chain Optimization with both Production and Transportation Integration: Multiple Vehicles for a Single Perishable Product. International Journal of Production Research. Accepted article

  • The example:

Let us consider one instance with 6 customers, 2 vehicles with a a production speed equal to 1, a capacity Q equal to 10 and a product lifespan B equal to 20 (Table 0). Table 1 provides the distance matrix, assuming a directed network (depot is numbered as 0).

Table 0:
Instances: Number of customers Customers' demands qi Number of vehicles Capacity of vehicles Q Lifespan of the product B
Example6{3;4;2;6;5;3}31020
Table 1:Distance matrix between customers
/0123456
001015510510
11001010302020
21510025302010
3510250101520
41030301001015
5520201510010
61020102015100

To build a PTSP solution from the data of the problem, three steps are required:

  • to define subsets of customers, in order to define jobs composed of one production and one transportation operation with associated durations;

  • to order the jobs created in the first step, in order to define the order of the production and transportation operations;
  • to assign a vehicle to each job created in the first step, in order to favour the scheduling of transportation operations in parallel.


First step:

Creation of the jobs by taking the customer in ascending numerical order and with respect to the capacity constraint and the lifespan of the product. Job 1 ← Customer 1       (q1 ≤ Q and t0,1 ≤ B) ≡ (3 ≤ 10 and 10 ≤ 20)   true
Job 1 ← Customer 1 + Customer 2       (q1 + q2 ≤ Q and t0,1 + t1,2 ≤ B) ≡ (7 ≤ 10 and 20 ≤ 20)   true
Job 1 ← Customer 1 + Customer 2 + Customer 3       (q1 + q2 + q3 ≤ Q and t0,1 + t1,2 + t2,3 ≤ B) ≡ (9 ≤ 10 and 45 ≤ 20)   false
Job 2 ← Customer 3       (q3 ≤ Q and t0,3 ≤ B) ≡ (2 ≤ 10 and 5 ≤ 20)   true
Job 2 ← Customer 3 + Customer 4       (q3 + q4 ≤ Q and t0,3 + t3,4 ≤ B) ≡ (8 ≤ 10 and 15 ≤ 20)   true
Job 2 ← Customer 3 + Customer 4 + Customer 5       (q3 + q4 + q5 ≤ Q and t0,3 + t3,4 + t4,5 ≤ B) ≡ (13 ≤ 10 and 25 ≤ 20)   false
Job 3 ← Customer 5       (q5 ≤ Q and t0,5 ≤ B) ≡ (5 ≤ 10 and 5 ≤ 20)   true
Job 3 ← Customer 5 + Customer 6       (q5 + q6 ≤ Q and t0,5 + t5,6 ≤ B) ≡ (8 ≤ 10 and 15 ≤ 20)   true

Three jobs have been created:
Job 1 ← Customer 1 + Customer 2       with qtot = 7 ≤ Q    tlast_customer = 20 ≤ B    and    ttot_trip = 35
Job 2 ← Customer 3 + Customer 4       with qtot = 8 ≤ Q    tlast_customer = 15 ≤ B    and    ttot_trip = 25
Job 3 ← Customer 5 + Customer 6       with qtot = 8 ≤ Q    tlast_customer = 15 ≤ B    and    ttot_trip = 25

The duration of the production operations and of the transportation operations associated are respectively equal to qtot and ttot_trip.

Second step:

The ascending numerical order can be choose to order the jobs. The scheduling order is then Job 1, Job 2, Job 3.

Third step:

The assignment of the vehicle to each job can be generated randomly. The following assignment can be choose :
Vehicle 1 ← Job 1 + Job 3
Vehicle 2 ← Job 2

Solution representation:

The solution obtained at the end of these steps is represented on Fig. 1 with a semi-active schedule.


Fig 1: Final solution of the example

Last Update January 2018.