pgr_gsoc_vrppdtw
— Returns a solution for Pick and Delivery with time windows Vehicle Routing Problem
Warning
These are proposed functions
pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
RETURNS SET OF pgr_costResult[]:
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)
Column | Type | Description |
---|---|---|
id | ANY-INTEGER |
Identifier of the customer.
|
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.
|
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 |
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. |
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 |
|
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 | 5 | 105.132745950422
3 | 1 | 3 | 196.132745950422
4 | 1 | 7 | 288.132745950422
5 | 1 | 8 | 380.961173075168
6 | 1 | 10 | 474.566724350632
7 | 1 | 11 | 567.566724350632
8 | 1 | 9 | 660.7290020108
9 | 1 | 6 | 752.9650699883
10 | 1 | 4 | 845.2011379658
11 | 1 | 2 | 938.806689241264
12 | 1 | 1 | 1030.80668924126
13 | 1 | 75 | 1123.80668924126
14 | 1 | 0 | 1139.61807754211
51 | 5 | 0 | 0
52 | 5 | 43 | 106.552945357247
53 | 5 | 42 | 199.552945357247
54 | 5 | 41 | 291.552945357247
55 | 5 | 40 | 383.552945357247
56 | 5 | 44 | 476.552945357247
57 | 5 | 46 | 569.381372481993
58 | 5 | 45 | 661.381372481993
59 | 5 | 48 | 753.381372481993
60 | 5 | 51 | 756.381372481993
61 | 5 | 101 | 846.381372481993
62 | 5 | 50 | 938.617440459493
63 | 5 | 52 | 1031.77971811966
64 | 5 | 49 | 1124.77971811966
65 | 5 | 47 | 1216.77971811966
66 | 5 | 0 | 1234.80747449698
103 | 9 | 0 | 0
104 | 9 | 90 | 110.615528128088
105 | 9 | 87 | 205.615528128088
106 | 9 | 86 | 296.615528128088
107 | 9 | 83 | 392.615528128088
108 | 9 | 82 | 485.615528128088
109 | 9 | 84 | 581.446480022934
110 | 9 | 85 | 674.27490714768
111 | 9 | 88 | 767.27490714768
112 | 9 | 89 | 860.103334272426
113 | 9 | 91 | 953.70888554789
114 | 9 | 0 | 976.069565322888
(42 rows)