pgr_gsoc_vrppdtw - Experimental - pgRouting Manual (2.5)

pgr_gsoc_vrppdtw - Experimental

Name

pgr_gsoc_vrppdtw - Returns a solution for Pick and Delivery with time windows Vehicle Routing Problem

Warning

Experimental functions

  • They are not officially of the current release.
  • They likely will not be officially be part of the next release:
    • The functions might not make use of ANY-INTEGER and ANY-NUMERICAL
    • Name might change.
    • Signature might change.
    • Functionality might change.
    • pgTap tests might be missing.
    • Might need c/c++ coding.
    • May lack documentation.
    • Documentation if any might need to be rewritten.
    • Documentation examples might need to be automatically generated.
    • Might need a lot of feedback from the comunity.
    • Might depend on a proposed function of pgRouting
    • Might depend on a deprecated function of pgRouting

Signature Summary

pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
RETURNS SET OF pgr_costResult[]:

Signatures

Complete signature

pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
Returns set of pgr_costResult[]:

Example: Show the id1

SELECT DISTINCT(id1) FROM pgr_gsoc_vrppdtw(
    'SELECT * FROM customer ORDER BY id', 25, 200)
ORDER BY id1;
 id1 
-----
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
(10 rows)

Description of the Signatures

Description of the sql query

Column Type Description
id ANY-INTEGER

Identifier of the customer.

  • A value of 0 identifies the starting location
x ANY-NUMERICAL X coordinate of the location.
y ANY-NUMERICAL Y coordinate of the location.
demand ANY-NUMERICAL

How much is added / removed from the vehicle.

  • Negative value is a delivery,
  • Positive value is a pickup,
openTime ANY-NUMERICAL The time relative to 0, when the customer opens.
closeTime ANY-NUMERICAL The time relative to 0, when the customer closes.
serviceTime ANY-NUMERICAL The duration of the loading / unloading.
pIndex ANY-INTEGER Value used when the current customer is a Delivery to find the corresponding Pickup
dIndex ANY-INTEGER Value used when the current customer is a Pickup to find the corresponding Delivery

Description of the parameters of the signatures

Column Type Description
sql TEXT SQL query as described above.
vehicle_num INTEGER Maximum number of vehicles in the result. (currently is ignored)
capacity INTEGER Capacity of the vehicle.

Description of the result

RETURNS SET OF pgr_costResult[]:

Column Type Description
seq INTEGER Sequential value starting from 1 .
id1 INTEGER Current vehicle identifier.
id2 INTEGER Customer identifier.
cost FLOAT
Previous cost plus travel time plus wait time plus service time .
  • when id2 = 0 for the second time for the same id1 , then has the total time for the current id1

Examples

Example: Total number of rows returned

SELECT count(*) FROM pgr_gsoc_vrppdtw(
    'SELECT * FROM customer ORDER BY id', 25, 200);
 count 
-------
   126
(1 row)

Example: Results for only id1 values: 1, 5, and 9

SELECT * FROM pgr_gsoc_vrppdtw(
    'SELECT * FROM customer ORDER BY id', 25, 200)
    WHERE id1 in (1, 5, 9);
 seq  id1  id2        cost       
-----+-----+-----+------------------
   1    1    0                 0
   2    1   13  120.805843601499
   3    1   17  214.805843601499
   4    1   18  307.805843601499
   5    1   19  402.805843601499
   6    1   15  497.805843601499
   7    1   16  592.805843601499
   8    1   14  684.805843601499
   9    1   12  777.805843601499
  10    1   50  920.815276724293
  11    1   52  1013.97755438446
  12    1   49  1106.97755438446
  13    1   47  1198.97755438446
  14    1    0  1217.00531076178
  57    5    0                 0
  58    5   90  110.615528128088
  59    5   87  205.615528128088
  60    5   86  296.615528128088
  61    5   83  392.615528128088
  62    5   82  485.615528128088
  63    5   84  581.446480022934
  64    5   85   674.27490714768
  65    5   88   767.27490714768
  66    5   89  860.103334272426
  67    5   91   953.70888554789
  68    5    0  976.069565322888
 105    9    0                 0
 106    9   67  102.206555615734
 107    9   65  193.206555615734
 108    9   63  285.206555615734
 109    9   62  380.206555615734
 110    9   74  473.206555615734
 111    9   72  568.206555615734
 112    9   61  661.206555615734
 113    9   64  663.206555615734
 114    9  102  753.206555615734
 115    9   68  846.206555615734
 116    9    0  866.822083743822
(38 rows)