3. Vehicle Routing

../_images/ad7.png

Routing, is not limited to pedestrians and most of the time is used for routing vehicles.

3.1. Routing for vehicles

A query for vehicle routing generally differs from routing for pedestrians:

  • The road segments are considered directed

  • Costs can be:

    • Distance

    • Time

    • Euros

    • Pesos

    • Dollars

    • CO2emissions

    • Wear and tear on the vehicle, etc.

  • The reverse_cost attribute must be taken into account on two way streets.

    • The costs should have the same units as the cost attribute

    • cost and reverse_cost values can be different

      • Due to the fact that there are roads that are one way

Depending on the geometry, the valid way:

  • (source, target) segment IF cost >= 0 AND reverse_cost < 0

  • (target, source) segment IF cost < 0 AND reverse_cost >= 0

A wrong way is indicated with a negative value and is not inserted in the graph for processing.

Two way roads - IF cost >= 0 AND reverse_cost >= 0 and their values can be different. For example, it is faster going down hill on a sloped road. In general, cost and reverse_cost do not need to be length; they can be almost anything, for example - time, slope, surface, road type, etc., or they can be a combination of multiple parameters.

The following queries indicate the number of road segments, where a “one way” rule applies:

  1. Number of (source, target) segments with cost < 0 (line 3).

    SELECT count(*)
    FROM ways
    WHERE cost < 0;  -- line 3
    
     count 
    -------
         0
    (1 row)
    
    
  2. Number of (target, source) segments with reverse_cost < 0 (line 3).

    SELECT count(*)
    FROM ways
    WHERE reverse_cost < 0;  -- line 3
    
     count 
    -------
      8474
    (1 row)
    
    

3.1.1. Exercise 1: Vehicle routing - going

Problem:

  • From the “Hangar Convention Center” to the “Palacete Bolonha” by car.

From |place_1| to the |place_3| by car.

Solution:

  • Use cost (line 6) and reverse_cost (line 7) columns, which are in unit degrees.

  • The vehicle is going from vertex 20297 (line 10) to 717 (line 11).

SELECT * FROM pgr_dijkstra(
  '
    SELECT gid AS id,
      source,
      target,
      cost,           -- line 6
      reverse_cost    -- line 7
    FROM ways
  ',
  20297, -- line 10
  717, -- line 11
  directed := true);
 seq | path_seq | start_vid | end_vid | node  | edge  |          cost          |       agg_cost        
-----+----------+-----------+---------+-------+-------+------------------------+-----------------------
   1 |        1 |     20297 |     717 | 20297 | 31885 |  0.0001716356422320464 |                     0
   2 |        2 |     20297 |     717 | 20296 |    91 |  0.0001153433569785665 | 0.0001716356422320464
   3 |        3 |     20297 |     717 |    54 | 10915 | 0.00035708800864949733 | 0.0002869789992106129
   4 |        4 |     20297 |     717 |  7354 |  1743 |  0.0014322361816398747 | 0.0006440670078601103
   5 |        5 |     20297 |     717 |  1033 |  1775 |  0.0015143940604290334 |  0.002076303189499985
   6 |        6 |     20297 |     717 |  1051 | 10920 |  0.0009291231403867673 | 0.0035906972499290184
   7 |        7 |     20297 |     717 |  7357 |  1835 |  0.0006153841892071156 |  0.004519820390315786
   8 |        8 |     20297 |     717 |  1084 | 10927 |  0.0009010473905377392 |  0.005135204579522901
   9 |        9 |     20297 |     717 |  7361 |  1725 |  0.0005560954684229016 |  0.006036251970060641
  10 |       10 |     20297 |     717 |  1022 | 10346 |  0.0012567037916704972 |  0.006592347438483542
  11 |       11 |     20297 |     717 |  6953 | 27847 | 0.00015145418449423264 |   0.00784905123015404
  12 |       12 |     20297 |     717 | 21151 |   540 | 0.00010643312454210425 |  0.008000505414648272
  13 |       13 |     20297 |     717 |   320 | 27845 | 0.00010051691400060946 |  0.008106938539190376
  14 |       14 |     20297 |     717 | 21149 | 10350 | 0.00017279285285780552 |  0.008207455453190985
  15 |       15 |     20297 |     717 |  6955 |   565 |  0.0012135304240127123 |   0.00838024830604879
  16 |       16 |     20297 |     717 |   333 | 15283 |  0.0004978948483381016 |  0.009593778730061503
  17 |       17 |     20297 |     717 | 10784 | 10752 |  0.0008473144934902617 |  0.010091673578399605
  18 |       18 |     20297 |     717 |  7234 | 10409 |  9.610020811439204e-05 |  0.010938988071889866
  19 |       19 |     20297 |     717 |  6990 | 10411 |  7.496939375540897e-05 |  0.011035088280004258
  20 |       20 |     20297 |     717 |  6991 | 15288 |  0.0012184804060786285 |  0.011110057673759667
  21 |       21 |     20297 |     717 | 10787 |   375 | 0.00024798082587396635 |  0.012328538079838296
  22 |       22 |     20297 |     717 |   226 | 15295 | 0.00021386897858363462 |  0.012576518905712262
  23 |       23 |     20297 |     717 | 10791 | 13798 | 0.00041691485941307445 |  0.012790387884295897
  24 |       24 |     20297 |     717 |  9580 | 27297 | 0.00048219433841428674 |  0.013207302743708972
  25 |       25 |     20297 |     717 | 20647 |  3285 |   0.000378614645781829 |  0.013689497082123258
  26 |       26 |     20297 |     717 |  2040 | 15304 |  0.0001014000493093058 |  0.014068111727905086
  27 |       27 |     20297 |     717 | 10796 | 13799 |   0.000690339141293269 |  0.014169511777214393
  28 |       28 |     20297 |     717 |  9581 | 10935 |   6.14524206174259e-05 |  0.014859850918507661
  29 |       29 |     20297 |     717 |  7366 |  3256 |  0.0006448366416395072 |  0.014921303339125088
  30 |       30 |     20297 |     717 |  2023 | 15305 | 0.00019525624189873058 |  0.015566139980764594
  31 |       31 |     20297 |     717 | 10797 | 18878 | 0.00041348876647511075 |  0.015761396222663326
  32 |       32 |     20297 |     717 | 13516 | 18875 | 0.00037592032400472335 |  0.016174884989138435
  33 |       33 |     20297 |     717 | 13514 | 18321 | 0.00039010831828777424 |   0.01655080531314316
  34 |       34 |     20297 |     717 | 13078 |  3255 |  8.531377380122786e-05 |  0.016940913631430934
  35 |       35 |     20297 |     717 |  2022 | 18324 | 0.00011548991298170257 |  0.017026227405232162
  36 |       36 |     20297 |     717 | 13081 | 18872 |  0.0008118415241947302 |  0.017141717318213866
  37 |       37 |     20297 |     717 | 13512 | 12139 | 0.00031002412809421687 |  0.017953558842408596
  38 |       38 |     20297 |     717 |  8261 | 15310 | 0.00015540093307229479 |  0.018263582970502814
  39 |       39 |     20297 |     717 | 10800 |  1655 |  9.117335137152959e-05 |   0.01841898390357511
  40 |       40 |     20297 |     717 |   983 | 12144 | 0.00012580381552128363 |   0.01851015725494664
  41 |       41 |     20297 |     717 |  8264 | 15317 | 0.00016713542413305483 |  0.018635961070467923
  42 |       42 |     20297 |     717 | 10804 |  1657 |  0.0012063682718777141 |  0.018803096494600977
  43 |       43 |     20297 |     717 |   985 | 10077 |  0.0007259629664562226 |   0.02000946476647869
  44 |       44 |     20297 |     717 |  6769 | 10359 |  0.0001000641794043222 |  0.020735427732934915
  45 |       45 |     20297 |     717 |  6960 |  7947 | 0.00024665183964426847 |  0.020835491912339237
  46 |       46 |     20297 |     717 |  5227 |   508 | 0.00039454221573752794 |  0.021082143751983504
  47 |       47 |     20297 |     717 |   302 | 23247 |   0.000920938461572996 |   0.02147668596772103
  48 |       48 |     20297 |     717 | 16963 |  1628 | 0.00014692055676409702 |  0.022397624429294025
  49 |       49 |     20297 |     717 |   966 |  1636 |  0.0003061667846102729 |  0.022544544986058124
  50 |       50 |     20297 |     717 |   971 |   148 |  0.0008497233782684474 |  0.022850711770668396
  51 |       51 |     20297 |     717 |    83 | 23450 |  0.0008890276261183315 |  0.023700435148936844
  52 |       52 |     20297 |     717 | 17152 |   320 | 2.9017236240749123e-06 |  0.024589462775055176
  53 |       53 |     20297 |     717 |   197 | 24810 |  0.0004980350690443442 |   0.02459236449867925
  54 |       54 |     20297 |     717 | 18350 | 20586 |  9.151770320890743e-05 |  0.025090399567723593
  55 |       55 |     20297 |     717 | 14785 | 20587 |  2.640075756076166e-05 |    0.0251819172709325
  56 |       56 |     20297 |     717 | 14786 | 20524 |  0.0002720488273948793 |   0.02520831802849326
  57 |       57 |     20297 |     717 | 14741 | 23244 |  0.0009270686974724552 |   0.02548036685588814
  58 |       58 |     20297 |     717 | 16961 | 20514 |  0.0014042238461164686 |  0.026407435553360593
  59 |       59 |     20297 |     717 | 14734 | 20515 |  1.612451547048347e-06 |   0.02781165939947706
  60 |       60 |     20297 |     717 | 14735 | 20512 |  3.238826949997096e-06 |   0.02781327185102411
  61 |       61 |     20297 |     717 | 14733 | 20518 | 0.00022060775145070832 |  0.027816510677974107
  62 |       62 |     20297 |     717 | 14737 | 20517 |  4.669047008933728e-06 |  0.028037118429424815
  63 |       63 |     20297 |     717 | 14736 | 20633 |  0.0017243292535695101 |   0.02804178747643375
  64 |       64 |     20297 |     717 | 14817 | 20508 |  0.0005125725802262838 |  0.029766116730003258
  65 |       65 |     20297 |     717 | 14729 | 20510 |   6.76874937153904e-05 |   0.03027868931022954
  66 |       66 |     20297 |     717 | 14731 | 20507 | 0.00040236167574913325 |  0.030346376803944933
  67 |       67 |     20297 |     717 | 14728 |   797 |  0.0008595892650021071 |  0.030748738479694067
  68 |       68 |     20297 |     717 |   478 | 18916 |  0.0012434449764071554 |   0.03160832774469617
  69 |       69 |     20297 |     717 | 13549 | 18914 |   0.001287736844233779 |  0.032851772721103324
  70 |       70 |     20297 |     717 | 13548 |   400 | 0.00021713325401738864 |    0.0341395095653371
  71 |       71 |     20297 |     717 |   242 |  8111 |  0.0007146295403969889 |  0.034356642819354494
  72 |       72 |     20297 |     717 |  5336 | 18920 |  0.0005166207216081487 |   0.03507127235975148
  73 |       73 |     20297 |     717 | 13552 |   129 |  0.0008133260046502112 |   0.03558789308135963
  74 |       74 |     20297 |     717 |    73 | 23872 |    0.00105179939627213 |  0.036401219086009844
  75 |       75 |     20297 |     717 | 17545 |   133 |  0.0017825034185829603 |  0.037453018482281976
  76 |       76 |     20297 |     717 |    75 |  8069 |  0.0009355679558470786 |  0.039235521900864934
  77 |       77 |     20297 |     717 |  5343 | 13553 |  0.0004138411893461655 |  0.040171089856712014
  78 |       78 |     20297 |     717 |  9383 | 26190 |  0.0006996503269481625 |   0.04058493104605818
  79 |       79 |     20297 |     717 | 19540 | 20372 |  0.0002576070200854789 |   0.04128458137300634
  80 |       80 |     20297 |     717 | 14633 |  1209 |  0.0009725325958516923 |  0.041542188393091824
  81 |       81 |     20297 |     717 |   730 |  8118 |  0.0003842942882742046 |  0.042514720988943516
  82 |       82 |     20297 |     717 |  5340 |  8120 | 0.00017291399596771487 |   0.04289901527721772
  83 |       83 |     20297 |     717 |  5341 |  1407 |  0.0006319297191941005 |  0.043071929273185434
  84 |       84 |     20297 |     717 |   847 | 23627 |  0.0005970993970838893 |   0.04370385899237954
  85 |       85 |     20297 |     717 | 17326 |  1201 |  0.0007297861673124474 |   0.04430095838946343
  86 |       86 |     20297 |     717 |   725 |  1593 |  0.0005294386177819955 |   0.04503074455677587
  87 |       87 |     20297 |     717 |   945 |  1188 |   0.000629312521724741 |  0.045560183174557865
  88 |       88 |     20297 |     717 |   719 |  1546 |  0.0011405803403423656 |  0.046189495696282605
  89 |       89 |     20297 |     717 |   921 |  1185 |  0.0011917061089064978 |   0.04733007603662497
  90 |       90 |     20297 |     717 |   718 |  1184 |  0.0012913085006919156 |   0.04852178214553147
  91 |       91 |     20297 |     717 |   717 |    -1 |                      0 |  0.049813090646223385
(91 rows)

3.1.2. Exercise 2: Vehicle routing - returning

Problem:

  • From “Palacete Bolonha” to the “Hangar Convention Center” by car.

From |place_3| to the |place_1| by car.

Solution:

  • Use cost_s (line 6) and reverse_cost_s (line 7) columns, in units seconds.

  • The vehicle is going from vertex 717 (line 10) to 20297 (line 11).

SELECT * FROM pgr_dijkstra(
  '
    SELECT gid AS id,
      source,
      target,
      cost_s AS cost, -- line 6
      reverse_cost_s AS reverse_cost -- line 7
    FROM ways
  ',
  717, -- line 10
  20297, -- line 11
  directed := true);
 seq | path_seq | start_vid | end_vid | node  | edge  |         cost         |      agg_cost      
-----+----------+-----------+---------+-------+-------+----------------------+--------------------
   1 |        1 |       717 |   20297 |   717 | 11369 |    7.649277145705279 |                  0
   2 |        2 |       717 |   20297 |  7674 | 11370 |   3.1979608009334255 |  7.649277145705279
   3 |        3 |       717 |   20297 |   703 |  1157 |    11.04007394672912 | 10.847237946638703
   4 |        4 |       717 |   20297 |   702 |   156 |   10.929693214960086 | 21.887311893367823
   5 |        5 |       717 |   20297 |    88 | 21353 |   11.542936122011175 | 32.817005108327905
   6 |        6 |       717 |   20297 | 15362 | 16610 |    8.333725395076964 |  44.35994123033908
   7 |        7 |       717 |   20297 | 11748 | 11111 |   1.0460058812418955 |  52.69366662541604
   8 |        8 |       717 |   20297 |  7483 |   192 |   1.1224871367128515 |  53.73967250665794
   9 |        9 |       717 |   20297 |   114 | 15091 |    1.201966517513442 |  54.86215964337079
  10 |       10 |       717 |   20297 | 10625 |  1202 |   1.2145743248659164 |  56.06412616088423
  11 |       11 |       717 |   20297 |   726 |  1089 |   10.631698839302336 |  57.27870048575014
  12 |       12 |       717 |   20297 |   662 | 25766 |   1.5947062700842551 |  67.91039932505248
  13 |       13 |       717 |   20297 | 19160 | 21346 |    7.209317427750495 |  69.50510559513674
  14 |       14 |       717 |   20297 | 15355 |  1091 |    3.664591799120692 |  76.71442302288723
  15 |       15 |       717 |   20297 |   663 | 21320 |    3.676461046720907 |  80.37901482200792
  16 |       16 |       717 |   20297 | 15331 | 21322 |    8.532858200977705 |  84.05547586872882
  17 |       17 |       717 |   20297 | 15333 |  1204 |    5.427710167423101 |  92.58833406970652
  18 |       18 |       717 |   20297 |   727 | 20367 |    7.153961955300545 |  98.01604423712962
  19 |       19 |       717 |   20297 | 14631 | 26617 |    3.843378476266271 | 105.17000619243017
  20 |       20 |       717 |   20297 | 19968 | 26709 |  0.17575082816994467 | 109.01338466869643
  21 |       21 |       717 |   20297 | 20060 | 26583 |   2.0069671990461964 | 109.18913549686637
  22 |       22 |       717 |   20297 | 19934 |  1093 |    12.47887124092446 | 111.19610269591257
  23 |       23 |       717 |   20297 |   664 |  1095 |   19.508677242653324 | 123.67497393683703
  24 |       24 |       717 |   20297 |   665 | 25482 |    8.279697561260365 | 143.18365117949037
  25 |       25 |       717 |   20297 | 18925 | 13642 |   3.8232835830362157 | 151.46334874075075
  26 |       26 |       717 |   20297 |  9453 | 20529 |    6.140981371285463 | 155.28663232378696
  27 |       27 |       717 |   20297 | 14744 | 22276 |    1.141317049151238 |  161.4276136950724
  28 |       28 |       717 |   20297 | 16130 | 23240 |    5.819964005493112 | 162.56893074422365
  29 |       29 |       717 |   20297 | 16957 | 23242 |   1.3616887721678947 | 168.38889474971677
  30 |       30 |       717 |   20297 | 16959 | 20634 |    4.376617072113684 | 169.75058352188466
  31 |       31 |       717 |   20297 | 14817 |  1096 |   0.2233733506101573 | 174.12720059399834
  32 |       32 |       717 |   20297 |   666 | 18926 |   1.3044471263755029 |  174.3505739446085
  33 |       33 |       717 |   20297 | 13558 | 20632 | 0.046009866596978095 |   175.655021070984
  34 |       34 |       717 |   20297 | 14816 | 20527 |   12.241284182800436 | 175.70103093758098
  35 |       35 |       717 |   20297 | 14743 | 13665 |    8.794184121996512 |  187.9423151203814
  36 |       36 |       717 |   20297 |  9472 |  1098 |    5.233961567897756 | 196.73649924237793
  37 |       37 |       717 |   20297 |   667 |  3237 |    8.575989565252819 | 201.97046081027568
  38 |       38 |       717 |   20297 |  2011 | 10937 |    5.753660104916916 |  210.5464503755285
  39 |       39 |       717 |   20297 |  7368 | 23470 |    4.349821481768251 | 216.30011048044543
  40 |       40 |       717 |   20297 | 17170 | 19253 |    2.172887473049065 | 220.64993196221369
  41 |       41 |       717 |   20297 | 13851 | 22805 |   3.3127131308112716 | 222.82281943526274
  42 |       42 |       717 |   20297 | 16579 |   102 |   0.5361470911814347 |   226.135532566074
  43 |       43 |       717 |   20297 |    60 | 23245 |    4.560298654310812 | 226.67167965725545
  44 |       44 |       717 |   20297 | 16962 | 10360 |    3.371715219110345 | 231.23197831156625
  45 |       45 |       717 |   20297 |  6961 |  1644 |    3.369172847320359 |  234.6036935306766
  46 |       46 |       717 |   20297 |   977 |  7943 |    2.462066055691773 | 237.97286637799695
  47 |       47 |       717 |   20297 |  5225 |  7944 |   1.5097956407383146 | 240.43493243368872
  48 |       48 |       717 |   20297 |  5226 |  3194 |    0.787830328173101 | 241.94472807442702
  49 |       49 |       717 |   20297 |  1982 |  1647 |    4.923602780529765 | 242.73255840260012
  50 |       50 |       717 |   20297 |   979 | 27195 |    4.779578061852004 | 247.65616118312988
  51 |       51 |       717 |   20297 | 20543 | 15321 |   3.2620556418627746 | 252.43573924498187
  52 |       52 |       717 |   20297 | 10806 | 12145 |   1.1010412528764728 | 255.69779488684466
  53 |       53 |       717 |   20297 |  8265 |  1653 |   0.7265291508959483 |  256.7988361397211
  54 |       54 |       717 |   20297 |   982 | 15314 |    0.687892166829071 | 257.52536529061706
  55 |       55 |       717 |   20297 | 10802 | 12141 |     1.00057182891344 |  258.2132574574461
  56 |       56 |       717 |   20297 |  8262 | 18325 |    7.625877296588039 | 259.21382928635956
  57 |       57 |       717 |   20297 | 13082 |  3154 |   0.6911991237607362 |  266.8397065829476
  58 |       58 |       717 |   20297 |  1958 | 18322 |    0.589059340205777 |  267.5309057067083
  59 |       59 |       717 |   20297 | 13079 | 15309 |    7.802332894772054 |  268.1199650469141
  60 |       60 |       717 |   20297 | 10799 |  3160 |    1.451915421445249 | 275.92229794168617
  61 |       61 |       717 |   20297 |  1961 | 11148 |   4.1291968838076585 |  277.3742133631314
  62 |       62 |       717 |   20297 |  7512 | 18328 |    5.071210660887403 | 281.50341024693904
  63 |       63 |       717 |   20297 | 13085 |  3165 |   0.6588005157910573 | 286.57462090782644
  64 |       64 |       717 |   20297 |  1964 | 15302 |   0.6624379620171468 | 287.23342142361753
  65 |       65 |       717 |   20297 | 10795 | 15299 |     7.64331893402423 | 287.89585938563465
  66 |       66 |       717 |   20297 | 10793 |   372 |   1.6185624439136164 |  295.5391783196589
  67 |       67 |       717 |   20297 |   225 | 15291 |   1.5426950808720525 |  297.1577407635725
  68 |       68 |       717 |   20297 | 10789 | 10414 |     8.10018215092719 |  298.7004358444446
  69 |       69 |       717 |   20297 |  6993 | 10412 |   0.8010340812788996 |  306.8006179953718
  70 |       70 |       717 |   20297 |  6992 | 10755 |  0.32174055743410845 |  307.6016520766507
  71 |       71 |       717 |   20297 |  7236 | 15284 |    5.603200219924484 |  307.9233926340848
  72 |       72 |       717 |   20297 | 10785 |  1845 |   3.4154739303977477 | 313.52659285400927
  73 |       73 |       717 |   20297 |  1090 |  3174 |    4.719295193747098 |   316.942066784407
  74 |       74 |       717 |   20297 |  1970 |  3172 |    2.494985805447332 |  321.6613619781541
  75 |       75 |       717 |   20297 |  1968 |  7938 |   1.1336853637583644 | 324.15634778360146
  76 |       76 |       717 |   20297 |  5222 | 27846 |   0.8904302856085814 | 325.29003314735985
  77 |       77 |       717 |   20297 | 21150 |   339 |    0.698022009641036 | 326.18046343296845
  78 |       78 |       717 |   20297 |   207 | 27848 |   0.6564041634973928 |  326.8784854426095
  79 |       79 |       717 |   20297 | 21152 | 10348 |   0.9834944305474466 | 327.53488960610684
  80 |       80 |       717 |   20297 |  6954 | 10056 |   2.9402965329150215 |  328.5183840366543
  81 |       81 |       717 |   20297 |  6753 |  1727 |    5.355184246550181 |  331.4586805695693
  82 |       82 |       717 |   20297 |  1023 | 10929 |   3.8274834071623784 | 336.81386481611946
  83 |       83 |       717 |   20297 |  7362 |  1731 |   1.4213261487655227 | 340.64134822328185
  84 |       84 |       717 |   20297 |  1026 |  1733 |    4.631815146870902 | 342.06267437204735
  85 |       85 |       717 |   20297 |  1027 | 10921 |    3.940277020140121 | 346.69448951891826
  86 |       86 |       717 |   20297 |  7358 | 12969 |   0.8433302614957165 |  350.6347665390584
  87 |       87 |       717 |   20297 |  8924 | 10392 |    5.077008239497512 |  351.4780968005541
  88 |       88 |       717 |   20297 |  6978 | 12971 |    3.541402184491856 |  356.5551050400516
  89 |       89 |       717 |   20297 |  8926 | 24118 |    1.163994608512139 |  360.0965072245435
  90 |       90 |       717 |   20297 | 17746 |  1737 |    5.407282465448289 |  361.2605018330556
  91 |       91 |       717 |   20297 |  1029 |  1741 |   5.6631558817312015 | 366.66778429850393
  92 |       92 |       717 |   20297 |  1032 | 24307 |   2.8288056582150825 | 372.33094018023513
  93 |       93 |       717 |   20297 | 17919 | 10919 |   1.5788656574755486 |  375.1597458384502
  94 |       94 |       717 |   20297 |  7356 |    99 |   1.6125042321092125 | 376.73861149592574
  95 |       95 |       717 |   20297 |    59 |    97 |   1.4555596260266292 |  378.3511157280349
  96 |       96 |       717 |   20297 |    58 | 15816 |   0.7379112639781683 | 379.80667535406155
  97 |       97 |       717 |   20297 | 11171 |   510 |   1.0674675004507879 |  380.5445866180397
  98 |       98 |       717 |   20297 |   304 | 26944 |   0.9357212700059486 |  381.6120541184905
  99 |       99 |       717 |   20297 | 20297 |    -1 |                    0 | 382.54777538849646
(99 rows)

Note

On a directed graph, going and coming back routes, most of the time are different.

3.1.3. Exercise 3: Vehicle routing when time is money

Problem:

  • From “Palacete Bolonha” to the “Hangar Convention Center” by taxi.

From |place_3| to |place_1| by taxi.

Solution:

  • The cost is $100 per hour.

    • Using cost_s (line 6) and reverse_cost_s (line 7) columns, which are in unit seconds.

      • The duration in hours is cost_s / 3600.

      • The cost in dollars is cost_s / 3600 * 100.

  • The vehicle is going from vertex 717 (line 10) to 20297 (line 11).

SELECT * FROM pgr_dijkstra(
  '
    SELECT gid AS id,
      source,
      target,
      cost_s / 3600 * 100 AS cost,                 -- line 6
      reverse_cost_s / 3600 * 100 AS reverse_cost  -- line 7
    FROM ways
  ',
  717, -- line 10
  20297); -- line 11
 seq | path_seq | start_vid | end_vid | node  | edge  |         cost          |      agg_cost       
-----+----------+-----------+---------+-------+-------+-----------------------+---------------------
   1 |        1 |       717 |   20297 |   717 | 11369 |   0.21247992071403554 |                   0
   2 |        2 |       717 |   20297 |  7674 | 11370 |   0.08883224447037294 | 0.21247992071403554
   3 |        3 |       717 |   20297 |   703 |  1157 |   0.30666872074247553 |  0.3013121651844085
   4 |        4 |       717 |   20297 |   702 |   156 |   0.30360258930444683 |   0.607980885926884
   5 |        5 |       717 |   20297 |    88 | 21353 |    0.3206371145003104 |  0.9115834752313309
   6 |        6 |       717 |   20297 | 15362 | 16610 |   0.23149237208547122 |  1.2322205897316412
   7 |        7 |       717 |   20297 | 11748 | 11111 |  0.029055718923385987 |  1.4637129618171123
   8 |        8 |       717 |   20297 |  7483 |   192 |  0.031180198242023654 |  1.4927686807404983
   9 |        9 |       717 |   20297 |   114 | 15091 |  0.033387958819817834 |   1.523948878982522
  10 |       10 |       717 |   20297 | 10625 |  1202 |    0.0337381756907199 |  1.5573368378023398
  11 |       11 |       717 |   20297 |   726 |  1089 |    0.2953249677583982 |  1.5910750134930596
  12 |       12 |       717 |   20297 |   662 | 25766 |   0.04429739639122931 |  1.8863999812514578
  13 |       13 |       717 |   20297 | 19160 | 21346 |   0.20025881743751375 |   1.930697377642687
  14 |       14 |       717 |   20297 | 15355 |  1091 |   0.10179421664224145 |  2.1309561950802007
  15 |       15 |       717 |   20297 |   663 | 21320 |   0.10212391796446964 |   2.232750411722442
  16 |       16 |       717 |   20297 | 15331 | 21322 |   0.23702383891604736 |  2.3348743296869117
  17 |       17 |       717 |   20297 | 15333 |  1204 |   0.15076972687286394 |   2.571898168602959
  18 |       18 |       717 |   20297 |   727 | 20367 |   0.19872116542501514 |   2.722667895475823
  19 |       19 |       717 |   20297 | 14631 | 26617 |   0.10676051322961863 |   2.921389060900838
  20 |       20 |       717 |   20297 | 19968 | 26709 |   0.00488196744916513 |   3.028149574130457
  21 |       21 |       717 |   20297 | 20060 | 26583 |   0.05574908886239434 |   3.033031541579622
  22 |       22 |       717 |   20297 | 19934 |  1093 |    0.3466353122479017 |  3.0887806304420162
  23 |       23 |       717 |   20297 |   664 |  1095 |    0.5419077011848146 |   3.435415942689918
  24 |       24 |       717 |   20297 |   665 | 25482 |   0.22999159892389903 |  3.9773236438747324
  25 |       25 |       717 |   20297 | 18925 | 13642 |     0.106202321751006 |   4.207315242798631
  26 |       26 |       717 |   20297 |  9453 | 20529 |   0.17058281586904062 |   4.313517564549637
  27 |       27 |       717 |   20297 | 14744 | 22276 |   0.03170325136531217 |   4.484100380418678
  28 |       28 |       717 |   20297 | 16130 | 23240 |   0.16166566681925312 |    4.51580363178399
  29 |       29 |       717 |   20297 | 16957 | 23242 |   0.03782468811577486 |   4.677469298603243
  30 |       30 |       717 |   20297 | 16959 | 20634 |   0.12157269644760234 |   4.715293986719018
  31 |       31 |       717 |   20297 | 14817 |  1096 |  0.006204815294726592 |    4.83686668316662
  32 |       32 |       717 |   20297 |   666 | 18926 |  0.036234642399319526 |   4.843071498461346
  33 |       33 |       717 |   20297 | 13558 | 20632 | 0.0012780518499160582 |   4.879306140860666
  34 |       34 |       717 |   20297 | 14816 | 20527 |    0.3400356717444566 |   4.880584192710582
  35 |       35 |       717 |   20297 | 14743 | 13665 |   0.24428289227768088 |   5.220619864455039
  36 |       36 |       717 |   20297 |  9472 |  1098 |   0.14538782133049324 |    5.46490275673272
  37 |       37 |       717 |   20297 |   667 |  3237 |   0.23822193236813383 |   5.610290578063213
  38 |       38 |       717 |   20297 |  2011 | 10937 |    0.1598238918032477 |   5.848512510431347
  39 |       39 |       717 |   20297 |  7368 | 23470 |   0.12082837449356253 |   6.008336402234595
  40 |       40 |       717 |   20297 | 17170 | 19253 |  0.060357985362474026 |   6.129164776728158
  41 |       41 |       717 |   20297 | 13851 | 22805 |     0.092019809189202 |   6.189522762090632
  42 |       42 |       717 |   20297 | 16579 |   102 |  0.014892974755039852 |   6.281542571279834
  43 |       43 |       717 |   20297 |    60 | 23245 |   0.12667496261974479 |   6.296435546034874
  44 |       44 |       717 |   20297 | 16962 | 10360 |   0.09365875608639847 |   6.423110508654619
  45 |       45 |       717 |   20297 |  6961 |  1644 |   0.09358813464778774 |   6.516769264741018
  46 |       46 |       717 |   20297 |   977 |  7943 |   0.06839072376921593 |   6.610357399388805
  47 |       47 |       717 |   20297 |  5225 |  7944 |  0.041938767798286515 |   6.678748123158021
  48 |       48 |       717 |   20297 |  5226 |  3194 |  0.021884175782586137 |   6.720686890956308
  49 |       49 |       717 |   20297 |  1982 |  1647 |    0.1367667439036046 |   6.742571066738893
  50 |       50 |       717 |   20297 |   979 | 27195 |   0.13276605727366678 |   6.879337810642498
  51 |       51 |       717 |   20297 | 20543 | 15321 |   0.09061265671841041 |  7.0121038679161645
  52 |       52 |       717 |   20297 | 10806 | 12145 |  0.030584479246568687 |   7.102716524634575
  53 |       53 |       717 |   20297 |  8265 |  1653 |   0.02018136530266523 |   7.133301003881144
  54 |       54 |       717 |   20297 |   982 | 15314 |   0.01910811574525197 |   7.153482369183809
  55 |       55 |       717 |   20297 | 10802 | 12141 |  0.027793661914262222 |   7.172590484929061
  56 |       56 |       717 |   20297 |  8262 | 18325 |    0.2118299249052233 |   7.200384146843323
  57 |       57 |       717 |   20297 | 13082 |  3154 |  0.019199975660020453 |   7.412214071748546
  58 |       58 |       717 |   20297 |  1958 | 18322 |  0.016362759450160472 |   7.431414047408567
  59 |       59 |       717 |   20297 | 13079 | 15309 |    0.2167314692992237 |   7.447776806858728
  60 |       60 |       717 |   20297 | 10799 |  3160 |   0.04033098392903469 |   7.664508276157951
  61 |       61 |       717 |   20297 |  1961 | 11148 |   0.11469991343910162 |   7.704839260086986
  62 |       62 |       717 |   20297 |  7512 | 18328 |   0.14086696280242786 |   7.819539173526088
  63 |       63 |       717 |   20297 | 13085 |  3165 |  0.018300014327529368 |   7.960406136328516
  64 |       64 |       717 |   20297 |  1964 | 15302 |    0.0184010545004763 |   7.978706150656046
  65 |       65 |       717 |   20297 | 10795 | 15299 |   0.21231441483400637 |   7.997107205156522
  66 |       66 |       717 |   20297 | 10793 |   372 |   0.04496006788648934 |   8.209421619990529
  67 |       67 |       717 |   20297 |   225 | 15291 |   0.04285264113533479 |   8.254381687877018
  68 |       68 |       717 |   20297 | 10789 | 10414 |    0.2250050597479775 |   8.297234329012353
  69 |       69 |       717 |   20297 |  6993 | 10412 |  0.022250946702191656 |    8.52223938876033
  70 |       70 |       717 |   20297 |  6992 | 10755 |  0.008937237706503013 |   8.544490335462521
  71 |       71 |       717 |   20297 |  7236 | 15284 |    0.1556444505534579 |   8.553427573169024
  72 |       72 |       717 |   20297 | 10785 |  1845 |   0.09487427584438188 |   8.709072023722483
  73 |       73 |       717 |   20297 |  1090 |  3174 |   0.13109153315964162 |   8.803946299566864
  74 |       74 |       717 |   20297 |  1970 |  3172 |   0.06930516126242589 |   8.935037832726506
  75 |       75 |       717 |   20297 |  1968 |  7938 |   0.03149126010439901 |   9.004342993988931
  76 |       76 |       717 |   20297 |  5222 | 27846 |   0.02473417460023837 |    9.03583425409333
  77 |       77 |       717 |   20297 | 21150 |   339 |  0.019389500267806555 |    9.06056842869357
  78 |       78 |       717 |   20297 |   207 | 27848 |   0.01823344898603869 |   9.079957928961376
  79 |       79 |       717 |   20297 | 21152 | 10348 |  0.027319289737429073 |   9.098191377947414
  80 |       80 |       717 |   20297 |  6954 | 10056 |   0.08167490369208392 |   9.125510667684843
  81 |       81 |       717 |   20297 |  6753 |  1727 |   0.14875511795972723 |   9.207185571376927
  82 |       82 |       717 |   20297 |  1023 | 10929 |   0.10631898353228829 |   9.355940689336654
  83 |       83 |       717 |   20297 |  7362 |  1731 |   0.03948128191015341 |   9.462259672868942
  84 |       84 |       717 |   20297 |  1026 |  1733 |   0.12866153185752505 |   9.501740954779097
  85 |       85 |       717 |   20297 |  1027 | 10921 |   0.10945213944833669 |   9.630402486636621
  86 |       86 |       717 |   20297 |  7358 | 12969 |  0.023425840597103235 |   9.739854626084957
  87 |       87 |       717 |   20297 |  8924 | 10392 |   0.14102800665270868 |    9.76328046668206
  88 |       88 |       717 |   20297 |  6978 | 12971 |   0.09837228290255155 |   9.904308473334769
  89 |       89 |       717 |   20297 |  8926 | 24118 |   0.03233318356978164 |  10.002680756237321
  90 |       90 |       717 |   20297 | 17746 |  1737 |   0.15020229070689692 |  10.035013939807103
  91 |       91 |       717 |   20297 |  1029 |  1741 |   0.15730988560364448 |     10.185216230514
  92 |       92 |       717 |   20297 |  1032 | 24307 |   0.07857793495041895 |  10.342526116117645
  93 |       93 |       717 |   20297 | 17919 | 10919 |    0.0438573793743208 |  10.421104051068063
  94 |       94 |       717 |   20297 |  7356 |    99 |  0.044791784225255905 |  10.464961430442385
  95 |       95 |       717 |   20297 |    59 |    97 |  0.040432211834073035 |   10.50975321466764
  96 |       96 |       717 |   20297 |    58 | 15816 |  0.020497535110504676 |  10.550185426501713
  97 |       97 |       717 |   20297 | 11171 |   510 |  0.029651875012521884 |  10.570682961612217
  98 |       98 |       717 |   20297 |   304 | 26944 |   0.02599225750016524 |   10.60033483662474
  99 |       99 |       717 |   20297 | 20297 |    -1 |                     0 |  10.626327094124905
(99 rows)

Note

Comparing with Exercise 2: Vehicle routing - returning:

  • The total number of records are identical.

  • The node sequence is identical.

  • The edge sequence is identical.

  • The cost and agg_cost results are directly proportional.

3.2. Cost manipulations

When dealing with data, being aware of what kind of data is being used can improve results.

  • Vehicles can not circulate on pedestrian ways


Penalizing or removal of pedestrian ways will make the results closer to reality.

When converting data from OSM format using the osm2pgrouting tool, there is an additional table: configuration.

The configuration table structure can be obtained with the following command.

\dS+ configuration
                                                                 Table "public.configuration"
      Column       |       Type       | Collation | Nullable |                  Default                  | Storage  | Compression | Stats target | Description 
-------------------+------------------+-----------+----------+-------------------------------------------+----------+-------------+--------------+-------------
 id                | integer          |           | not null | nextval('configuration_id_seq'::regclass) | plain    |             |              | 
 tag_id            | integer          |           |          |                                           | plain    |             |              | 
 tag_key           | text             |           |          |                                           | extended |             |              | 
 tag_value         | text             |           |          |                                           | extended |             |              | 
 priority          | double precision |           |          |                                           | plain    |             |              | 
 maxspeed          | double precision |           |          |                                           | plain    |             |              | 
 maxspeed_forward  | double precision |           |          |                                           | plain    |             |              | 
 maxspeed_backward | double precision |           |          |                                           | plain    |             |              | 
 force             | character(1)     |           |          |                                           | extended |             |              | 
Indexes:
    "configuration_pkey" PRIMARY KEY, btree (id)
    "configuration_tag_id_key" UNIQUE CONSTRAINT, btree (tag_id)
Referenced by:
    TABLE "ways" CONSTRAINT "ways_tag_id_fkey" FOREIGN KEY (tag_id) REFERENCES configuration(tag_id)
Access method: heap
Options: autovacuum_enabled=false

tag_id values

In the image above there is a detail of the tag_id of the roads.

The OSM way types:

SELECT tag_id, tag_key, tag_value
FROM configuration
ORDER BY tag_id;
 tag_id |  tag_key  |     tag_value     
--------+-----------+-------------------
    100 | highway   | road
    101 | highway   | motorway
    102 | highway   | motorway_link
    103 | highway   | motorway_junction
    104 | highway   | trunk
    105 | highway   | trunk_link
    106 | highway   | primary
    107 | highway   | primary_link
    108 | highway   | secondary
    109 | highway   | tertiary
    110 | highway   | residential
    111 | highway   | living_street
    112 | highway   | service
    113 | highway   | track
    114 | highway   | pedestrian
    115 | highway   | services
    116 | highway   | bus_guideway
    117 | highway   | path
    118 | highway   | cycleway
    119 | highway   | footway
    120 | highway   | bridleway
    121 | highway   | byway
    122 | highway   | steps
    123 | highway   | unclassified
    124 | highway   | secondary_link
    125 | highway   | tertiary_link
    201 | cycleway  | lane
    202 | cycleway  | track
    203 | cycleway  | opposite_lane
    204 | cycleway  | opposite
    301 | tracktype | grade1
    302 | tracktype | grade2
    303 | tracktype | grade3
    304 | tracktype | grade4
    305 | tracktype | grade5
    401 | junction  | roundabout
(36 rows)

Also, on the ways table there is a column that can be used to JOIN with the configuration table.

The ways types:

SELECT distinct tag_id, tag_key, tag_value
FROM ways JOIN configuration USING (tag_id)
ORDER BY tag_id;
 tag_id | tag_key  |   tag_value    
--------+----------+----------------
    104 | highway  | trunk
    105 | highway  | trunk_link
    106 | highway  | primary
    107 | highway  | primary_link
    108 | highway  | secondary
    109 | highway  | tertiary
    110 | highway  | residential
    111 | highway  | living_street
    112 | highway  | service
    113 | highway  | track
    114 | highway  | pedestrian
    117 | highway  | path
    118 | highway  | cycleway
    119 | highway  | footway
    120 | highway  | bridleway
    122 | highway  | steps
    123 | highway  | unclassified
    124 | highway  | secondary_link
    125 | highway  | tertiary_link
    201 | cycleway | lane
    204 | cycleway | opposite
(21 rows)

In this workshop, costs are going to be manipulated using the configuration table.

3.2.1. Exercise 4: Vehicle routing without penalization

Problem:

  • From the “Palacete Bolonha” to “Hangar Convention Center”

From |place_3| to |place_1|

Solution:

Add a penalty column

  • All roads have a penalty of 1 (line 3).

Query

  • The vehicle’s cost in this case will be in penalized seconds.

    • Costs (in seconds) are to be multiplied by penalty (lines 12 and 13).

    • Costs wont change (times 1 leaves the value unchanged).

  • The configuration table is linked with the ways table by the tag_id field using a JOIN (lines 14 and 15).

  • The vehicle is going from vertex 717 (line 17) to vertex 20297 (line 18).

ALTER TABLE configuration ADD COLUMN penalty FLOAT;
-- No penalty
UPDATE configuration SET penalty=1;   -- line 3


SELECT *
FROM pgr_dijkstra(
  '
    SELECT gid AS id,
        source,
        target,
        cost_s * penalty AS cost,                    -- line 12
        reverse_cost_s * penalty AS reverse_cost     -- line 13
    FROM ways JOIN configuration                     -- line 14
    USING (tag_id)                                   -- line 15
  ',
  717, -- line 17
  20297); -- line 18
ALTER TABLE
UPDATE 36
 seq | path_seq | start_vid | end_vid | node  | edge  |         cost         |      agg_cost      
-----+----------+-----------+---------+-------+-------+----------------------+--------------------
   1 |        1 |       717 |   20297 |   717 | 11369 |    7.649277145705279 |                  0
   2 |        2 |       717 |   20297 |  7674 | 11370 |   3.1979608009334255 |  7.649277145705279
   3 |        3 |       717 |   20297 |   703 |  1157 |    11.04007394672912 | 10.847237946638703
   4 |        4 |       717 |   20297 |   702 |   156 |   10.929693214960086 | 21.887311893367823
   5 |        5 |       717 |   20297 |    88 | 21353 |   11.542936122011175 | 32.817005108327905
   6 |        6 |       717 |   20297 | 15362 | 16610 |    8.333725395076964 |  44.35994123033908
   7 |        7 |       717 |   20297 | 11748 | 11111 |   1.0460058812418955 |  52.69366662541604
   8 |        8 |       717 |   20297 |  7483 |   192 |   1.1224871367128515 |  53.73967250665794
   9 |        9 |       717 |   20297 |   114 | 15091 |    1.201966517513442 |  54.86215964337079
  10 |       10 |       717 |   20297 | 10625 |  1202 |   1.2145743248659164 |  56.06412616088423
  11 |       11 |       717 |   20297 |   726 |  1089 |   10.631698839302336 |  57.27870048575014
  12 |       12 |       717 |   20297 |   662 | 25766 |   1.5947062700842551 |  67.91039932505248
  13 |       13 |       717 |   20297 | 19160 | 21346 |    7.209317427750495 |  69.50510559513674
  14 |       14 |       717 |   20297 | 15355 |  1091 |    3.664591799120692 |  76.71442302288723
  15 |       15 |       717 |   20297 |   663 | 21320 |    3.676461046720907 |  80.37901482200792
  16 |       16 |       717 |   20297 | 15331 | 21322 |    8.532858200977705 |  84.05547586872882
  17 |       17 |       717 |   20297 | 15333 |  1204 |    5.427710167423101 |  92.58833406970652
  18 |       18 |       717 |   20297 |   727 | 20367 |    7.153961955300545 |  98.01604423712962
  19 |       19 |       717 |   20297 | 14631 | 26617 |    3.843378476266271 | 105.17000619243017
  20 |       20 |       717 |   20297 | 19968 | 26709 |  0.17575082816994467 | 109.01338466869643
  21 |       21 |       717 |   20297 | 20060 | 26583 |   2.0069671990461964 | 109.18913549686637
  22 |       22 |       717 |   20297 | 19934 |  1093 |    12.47887124092446 | 111.19610269591257
  23 |       23 |       717 |   20297 |   664 |  1095 |   19.508677242653324 | 123.67497393683703
  24 |       24 |       717 |   20297 |   665 | 25482 |    8.279697561260365 | 143.18365117949037
  25 |       25 |       717 |   20297 | 18925 | 13642 |   3.8232835830362157 | 151.46334874075075
  26 |       26 |       717 |   20297 |  9453 | 20529 |    6.140981371285463 | 155.28663232378696
  27 |       27 |       717 |   20297 | 14744 | 22276 |    1.141317049151238 |  161.4276136950724
  28 |       28 |       717 |   20297 | 16130 | 23240 |    5.819964005493112 | 162.56893074422365
  29 |       29 |       717 |   20297 | 16957 | 23242 |   1.3616887721678947 | 168.38889474971677
  30 |       30 |       717 |   20297 | 16959 | 20634 |    4.376617072113684 | 169.75058352188466
  31 |       31 |       717 |   20297 | 14817 |  1096 |   0.2233733506101573 | 174.12720059399834
  32 |       32 |       717 |   20297 |   666 | 18926 |   1.3044471263755029 |  174.3505739446085
  33 |       33 |       717 |   20297 | 13558 | 20632 | 0.046009866596978095 |   175.655021070984
  34 |       34 |       717 |   20297 | 14816 | 20527 |   12.241284182800436 | 175.70103093758098
  35 |       35 |       717 |   20297 | 14743 | 13665 |    8.794184121996512 |  187.9423151203814
  36 |       36 |       717 |   20297 |  9472 |  1098 |    5.233961567897756 | 196.73649924237793
  37 |       37 |       717 |   20297 |   667 |  3237 |    8.575989565252819 | 201.97046081027568
  38 |       38 |       717 |   20297 |  2011 | 10937 |    5.753660104916916 |  210.5464503755285
  39 |       39 |       717 |   20297 |  7368 | 23470 |    4.349821481768251 | 216.30011048044543
  40 |       40 |       717 |   20297 | 17170 | 19253 |    2.172887473049065 | 220.64993196221369
  41 |       41 |       717 |   20297 | 13851 | 22805 |   3.3127131308112716 | 222.82281943526274
  42 |       42 |       717 |   20297 | 16579 |   102 |   0.5361470911814347 |   226.135532566074
  43 |       43 |       717 |   20297 |    60 | 23245 |    4.560298654310812 | 226.67167965725545
  44 |       44 |       717 |   20297 | 16962 | 10360 |    3.371715219110345 | 231.23197831156625
  45 |       45 |       717 |   20297 |  6961 |  1644 |    3.369172847320359 |  234.6036935306766
  46 |       46 |       717 |   20297 |   977 |  7943 |    2.462066055691773 | 237.97286637799695
  47 |       47 |       717 |   20297 |  5225 |  7944 |   1.5097956407383146 | 240.43493243368872
  48 |       48 |       717 |   20297 |  5226 |  3194 |    0.787830328173101 | 241.94472807442702
  49 |       49 |       717 |   20297 |  1982 |  1647 |    4.923602780529765 | 242.73255840260012
  50 |       50 |       717 |   20297 |   979 | 27195 |    4.779578061852004 | 247.65616118312988
  51 |       51 |       717 |   20297 | 20543 | 15321 |   3.2620556418627746 | 252.43573924498187
  52 |       52 |       717 |   20297 | 10806 | 12145 |   1.1010412528764728 | 255.69779488684466
  53 |       53 |       717 |   20297 |  8265 |  1653 |   0.7265291508959483 |  256.7988361397211
  54 |       54 |       717 |   20297 |   982 | 15314 |    0.687892166829071 | 257.52536529061706
  55 |       55 |       717 |   20297 | 10802 | 12141 |     1.00057182891344 |  258.2132574574461
  56 |       56 |       717 |   20297 |  8262 | 18325 |    7.625877296588039 | 259.21382928635956
  57 |       57 |       717 |   20297 | 13082 |  3154 |   0.6911991237607362 |  266.8397065829476
  58 |       58 |       717 |   20297 |  1958 | 18322 |    0.589059340205777 |  267.5309057067083
  59 |       59 |       717 |   20297 | 13079 | 15309 |    7.802332894772054 |  268.1199650469141
  60 |       60 |       717 |   20297 | 10799 |  3160 |    1.451915421445249 | 275.92229794168617
  61 |       61 |       717 |   20297 |  1961 | 11148 |   4.1291968838076585 |  277.3742133631314
  62 |       62 |       717 |   20297 |  7512 | 18328 |    5.071210660887403 | 281.50341024693904
  63 |       63 |       717 |   20297 | 13085 |  3165 |   0.6588005157910573 | 286.57462090782644
  64 |       64 |       717 |   20297 |  1964 | 15302 |   0.6624379620171468 | 287.23342142361753
  65 |       65 |       717 |   20297 | 10795 | 15299 |     7.64331893402423 | 287.89585938563465
  66 |       66 |       717 |   20297 | 10793 |   372 |   1.6185624439136164 |  295.5391783196589
  67 |       67 |       717 |   20297 |   225 | 15291 |   1.5426950808720525 |  297.1577407635725
  68 |       68 |       717 |   20297 | 10789 | 10414 |     8.10018215092719 |  298.7004358444446
  69 |       69 |       717 |   20297 |  6993 | 10412 |   0.8010340812788996 |  306.8006179953718
  70 |       70 |       717 |   20297 |  6992 | 10755 |  0.32174055743410845 |  307.6016520766507
  71 |       71 |       717 |   20297 |  7236 | 15284 |    5.603200219924484 |  307.9233926340848
  72 |       72 |       717 |   20297 | 10785 |  1845 |   3.4154739303977477 | 313.52659285400927
  73 |       73 |       717 |   20297 |  1090 |  3174 |    4.719295193747098 |   316.942066784407
  74 |       74 |       717 |   20297 |  1970 |  3172 |    2.494985805447332 |  321.6613619781541
  75 |       75 |       717 |   20297 |  1968 |  7938 |   1.1336853637583644 | 324.15634778360146
  76 |       76 |       717 |   20297 |  5222 | 27846 |   0.8904302856085814 | 325.29003314735985
  77 |       77 |       717 |   20297 | 21150 |   339 |    0.698022009641036 | 326.18046343296845
  78 |       78 |       717 |   20297 |   207 | 27848 |   0.6564041634973928 |  326.8784854426095
  79 |       79 |       717 |   20297 | 21152 | 10348 |   0.9834944305474466 | 327.53488960610684
  80 |       80 |       717 |   20297 |  6954 | 10056 |   2.9402965329150215 |  328.5183840366543
  81 |       81 |       717 |   20297 |  6753 |  1727 |    5.355184246550181 |  331.4586805695693
  82 |       82 |       717 |   20297 |  1023 | 10929 |   3.8274834071623784 | 336.81386481611946
  83 |       83 |       717 |   20297 |  7362 |  1731 |   1.4213261487655227 | 340.64134822328185
  84 |       84 |       717 |   20297 |  1026 |  1733 |    4.631815146870902 | 342.06267437204735
  85 |       85 |       717 |   20297 |  1027 | 10921 |    3.940277020140121 | 346.69448951891826
  86 |       86 |       717 |   20297 |  7358 | 12969 |   0.8433302614957165 |  350.6347665390584
  87 |       87 |       717 |   20297 |  8924 | 10392 |    5.077008239497512 |  351.4780968005541
  88 |       88 |       717 |   20297 |  6978 | 12971 |    3.541402184491856 |  356.5551050400516
  89 |       89 |       717 |   20297 |  8926 | 24118 |    1.163994608512139 |  360.0965072245435
  90 |       90 |       717 |   20297 | 17746 |  1737 |    5.407282465448289 |  361.2605018330556
  91 |       91 |       717 |   20297 |  1029 |  1741 |   5.6631558817312015 | 366.66778429850393
  92 |       92 |       717 |   20297 |  1032 | 24307 |   2.8288056582150825 | 372.33094018023513
  93 |       93 |       717 |   20297 | 17919 | 10919 |   1.5788656574755486 |  375.1597458384502
  94 |       94 |       717 |   20297 |  7356 |    99 |   1.6125042321092125 | 376.73861149592574
  95 |       95 |       717 |   20297 |    59 |    97 |   1.4555596260266292 |  378.3511157280349
  96 |       96 |       717 |   20297 |    58 | 15816 |   0.7379112639781683 | 379.80667535406155
  97 |       97 |       717 |   20297 | 11171 |   510 |   1.0674675004507879 |  380.5445866180397
  98 |       98 |       717 |   20297 |   304 | 26944 |   0.9357212700059486 |  381.6120541184905
  99 |       99 |       717 |   20297 | 20297 |    -1 |                    0 | 382.54777538849646
(99 rows)

3.2.2. Exercise 5: Vehicle routing with penalization

Concept:

Change the cost values for the configuration table, in such a way, that the

  • Pedestrian roads are not used.

    • penalty < 0 makes the road not to be included in the graph.

  • Using residential roads is not encouraged.

    • penalty > 1 makes the road slower for the calculations.

  • Using “faster” roads is highly encouraged.

    • penalty < 1 makes the road faster for the calculations.

The penalty values can be changed with UPDATE queries.

Note

These values are an exaggeration.

-- Not including pedestrian ways
UPDATE configuration SET penalty=-1.0
WHERE tag_value IN ('steps','footway','pedestrian','cycleway');

-- Penalizing with 5 times the costs the unknown
UPDATE configuration SET penalty=5 WHERE tag_value IN ('unclassified');

-- Encuraging the use of "fast" roads
UPDATE configuration SET penalty=0.5 WHERE tag_value IN ('tertiary');
UPDATE configuration SET penalty=0.3
WHERE tag_value IN (
    'primary','primary_link',
    'trunk','trunk_link',
    'motorway','motorway_junction','motorway_link',
    'secondary');

Problem:

  • From the “Palacete Bolonha” to “Hangar Convention Center” with penalization.

From |place_3| to |place_1|

Solution:

  • Using cost_s (line 6) and reverse_cost_s (line 7) columns, which are in unit seconds.

    • Costs are to be multiplied by penalty (lines 6 and 7).

  • The configuration table is linked with the ways table by the tag_id field using a JOIN (lines 8 and 9).

  • The vehicle is going from vertex 717 (line 11) to vertex 20297 (line 12).

SELECT * FROM pgr_dijkstra(
  '
    SELECT gid AS id,
        source,
        target,
        cost_s * penalty AS cost,                   -- line 6
        reverse_cost_s * penalty AS reverse_cost    -- line 7
    FROM ways JOIN configuration                    -- line 8
    USING (tag_id)                                  -- line 9
  ',
  717, -- line 11
  20297); -- line 12
 seq | path_seq | start_vid | end_vid | node  | edge  |        cost         |      agg_cost      
-----+----------+-----------+---------+-------+-------+---------------------+--------------------
   1 |        1 |       717 |   20297 |   717 |  1183 |  0.2960057352141056 |                  0
   2 |        2 |       717 |   20297 |   716 | 23539 |  3.5400047592944794 | 0.2960057352141056
   3 |        3 |       717 |   20297 | 17233 | 16690 |  7.8358053541959585 |  3.836010494508585
   4 |        4 |       717 |   20297 | 11804 | 10431 |  0.7643930526247685 | 11.671815848704544
   5 |        5 |       717 |   20297 |  7006 | 13584 |  2.2684808789218165 | 12.436208901329312
   6 |        6 |       717 |   20297 |  9405 | 13586 |  1.1069099932147388 |  14.70468978025113
   7 |        7 |       717 |   20297 |  9406 | 26463 |  0.8553405109687702 | 15.811599773465868
   8 |        8 |       717 |   20297 | 19814 | 16689 |    1.33651411869866 | 16.666940284434638
   9 |        9 |       717 |   20297 | 11803 | 21121 |  0.3972810368164751 | 18.003454403133297
  10 |       10 |       717 |   20297 | 15159 |  1549 |  2.9702320596337426 | 18.400735439949774
  11 |       11 |       717 |   20297 |   922 |   321 |    2.77572136730283 | 21.370967499583514
  12 |       12 |       717 |   20297 |   198 | 23635 |  1.0302304079691458 | 24.146688866886343
  13 |       13 |       717 |   20297 | 17334 | 23637 |  0.7605955432844383 |  25.17691927485549
  14 |       14 |       717 |   20297 | 17335 | 26056 |  2.2793490335041517 | 25.937514818139928
  15 |       15 |       717 |   20297 | 19405 | 27290 |  1.0011633798277397 | 28.216863851644078
  16 |       16 |       717 |   20297 | 20639 | 23643 |  0.7170853581581006 |  29.21802723147182
  17 |       17 |       717 |   20297 | 17341 |  8117 | 0.05432648513812345 |  29.93511258962992
  18 |       18 |       717 |   20297 |  5339 | 23010 |  1.5206434695923998 | 29.989439074768043
  19 |       19 |       717 |   20297 | 16756 | 20374 |  1.4454066122998621 | 31.510082544360444
  20 |       20 |       717 |   20297 | 14634 | 23377 |  1.6560410968556265 | 32.955489156660306
  21 |       21 |       717 |   20297 | 17084 | 26684 |  1.4722213508349837 |  34.61153025351593
  22 |       22 |       717 |   20297 | 20035 | 27611 | 0.08917852794242753 | 36.083751604350915
  23 |       23 |       717 |   20297 | 20912 | 20329 | 0.22644193710012114 | 36.172930132293345
  24 |       24 |       717 |   20297 | 14602 | 18897 |   1.898086733563235 | 36.399372069393465
  25 |       25 |       717 |   20297 | 13533 | 26428 |  0.3042530905199942 |   38.2974588029567
  26 |       26 |       717 |   20297 | 19779 | 26766 |  0.8862794292609869 |  38.60171189347669
  27 |       27 |       717 |   20297 | 20117 |  1099 |  2.3041021996747384 |  39.48799132273768
  28 |       28 |       717 |   20297 |   668 | 26855 | 0.23226015198338862 | 41.792093522412415
  29 |       29 |       717 |   20297 | 20208 | 23388 |  0.4430726392125957 | 42.024353674395805
  30 |       30 |       717 |   20297 | 17096 |  1101 | 0.45625095251626535 |   42.4674263136084
  31 |       31 |       717 |   20297 |   669 | 27184 |  2.2656472325815242 |  42.92367726612466
  32 |       32 |       717 |   20297 | 20532 |  1125 | 0.30789185698870647 | 45.189324498706185
  33 |       33 |       717 |   20297 |   684 | 27612 |  2.9172937055237687 |  45.49721635569489
  34 |       34 |       717 |   20297 | 20913 | 20388 |  1.5935137876166687 |  48.41451006121866
  35 |       35 |       717 |   20297 | 14646 | 20389 |  3.7759663390562848 |  50.00802384883533
  36 |       36 |       717 |   20297 | 14647 | 23385 |  1.3779163294442702 |  53.78399018789161
  37 |       37 |       717 |   20297 | 17092 | 20391 |  0.7212891460549953 |  55.16190651733588
  38 |       38 |       717 |   20297 | 14648 | 20393 |   2.088273529229889 |  55.88319566339087
  39 |       39 |       717 |   20297 | 14649 | 23382 |  1.1698979217128171 |  57.97146919262076
  40 |       40 |       717 |   20297 | 17089 | 20394 |  2.8020997349636643 | 59.141367114333576
  41 |       41 |       717 |   20297 | 14650 | 12754 |   0.743484124264174 |  61.94346684929724
  42 |       42 |       717 |   20297 |  8757 | 11995 |  0.7535548812805611 |  62.68695097356141
  43 |       43 |       717 |   20297 |  8139 | 10847 | 0.17928453155545482 |  63.44050585484197
  44 |       44 |       717 |   20297 |  7295 |  7967 |   1.521051231781284 | 63.619790386397426
  45 |       45 |       717 |   20297 |  5243 | 25521 |  0.3977855879901294 |  65.14084161817871
  46 |       46 |       717 |   20297 | 18962 | 10375 |  1.0244476150686697 |  65.53862720616884
  47 |       47 |       717 |   20297 |  6970 |  2710 | 0.35838559039750933 |   66.5630748212375
  48 |       48 |       717 |   20297 |  1669 | 15160 |  0.5951480500947322 |  66.92146041163501
  49 |       49 |       717 |   20297 | 10678 | 15157 | 0.32541153954163504 |  67.51660846172975
  50 |       50 |       717 |   20297 | 10676 | 10845 |  0.4496486476432563 |  67.84202000127138
  51 |       51 |       717 |   20297 |  7294 | 10844 |   0.903123685521604 |  68.29166864891464
  52 |       52 |       717 |   20297 |  7293 | 10842 |  1.0909150137845127 |  69.19479233443624
  53 |       53 |       717 |   20297 |  7291 | 24811 | 0.32493410377611615 |  70.28570734822075
  54 |       54 |       717 |   20297 | 18351 | 10839 |  0.8556790177023017 |  70.61064145199687
  55 |       55 |       717 |   20297 |  7289 | 10826 | 0.08209178643889901 |  71.46632046969917
  56 |       56 |       717 |   20297 |  7279 | 10836 |  0.9198432656860073 |  71.54841225613806
  57 |       57 |       717 |   20297 |  7287 |   626 |  0.6684518844132583 |  72.46825552182408
  58 |       58 |       717 |   20297 |   368 | 10372 |   4.348360854966903 |  73.13670740623733
  59 |       59 |       717 |   20297 |  6968 | 10366 |  0.9233520605154579 |  77.48506826120423
  60 |       60 |       717 |   20297 |  6965 | 10939 |   2.420743212977811 |  78.40842032171969
  61 |       61 |       717 |   20297 |  7369 | 10363 |  1.7305037827913727 |   80.8291635346975
  62 |       62 |       717 |   20297 |  6963 | 23340 | 0.31531573482697495 |  82.55966731748887
  63 |       63 |       717 |   20297 | 17048 | 10938 |  1.2654733938415637 |  82.87498305231586
  64 |       64 |       717 |   20297 |  7368 | 23470 |   1.304946444530475 |  84.14045644615742
  65 |       65 |       717 |   20297 | 17170 | 19253 |  0.6518662419147195 |  85.44540289068789
  66 |       66 |       717 |   20297 | 13851 | 22805 |  0.9938139392433815 |   86.0972691326026
  67 |       67 |       717 |   20297 | 16579 |   102 |  0.1608441273544304 |  87.09108307184599
  68 |       68 |       717 |   20297 |    60 | 23245 |  1.3680895962932436 |  87.25192719920042
  69 |       69 |       717 |   20297 | 16962 | 10360 |  1.0115145657331035 |  88.62001679549367
  70 |       70 |       717 |   20297 |  6961 |  1644 |  1.0107518541961076 |  89.63153136122678
  71 |       71 |       717 |   20297 |   977 |  7943 |  0.7386198167075319 |  90.64228321542288
  72 |       72 |       717 |   20297 |  5225 |  7944 | 0.45293869222149435 |   91.3809030321304
  73 |       73 |       717 |   20297 |  5226 |  3194 | 0.23634909845193028 |   91.8338417243519
  74 |       74 |       717 |   20297 |  1982 |  1647 |  1.4770808341589294 |  92.07019082280382
  75 |       75 |       717 |   20297 |   979 | 27195 |  1.4338734185556012 |  93.54727165696275
  76 |       76 |       717 |   20297 | 20543 | 15321 |  0.9786166925588323 |  94.98114507551836
  77 |       77 |       717 |   20297 | 10806 | 12145 |  0.3303123758629418 |  95.95976176807719
  78 |       78 |       717 |   20297 |  8265 |  1653 | 0.21795874526878448 |  96.29007414394013
  79 |       79 |       717 |   20297 |   982 | 15314 |  0.2063676500487213 |  96.50803288920892
  80 |       80 |       717 |   20297 | 10802 | 12141 |   0.300171548674032 |  96.71440053925764
  81 |       81 |       717 |   20297 |  8262 | 18325 |  2.2877631889764114 |  97.01457208793167
  82 |       82 |       717 |   20297 | 13082 |  3154 | 0.20735973712822087 |  99.30233527690808
  83 |       83 |       717 |   20297 |  1958 | 18322 |  0.1767178020617331 |   99.5096950140363
  84 |       84 |       717 |   20297 | 13079 | 15309 |   2.340699868431616 |  99.68641281609803
  85 |       85 |       717 |   20297 | 10799 |  3160 |  0.4355746264335747 | 102.02711268452964
  86 |       86 |       717 |   20297 |  1961 | 11148 |  1.2387590651422975 | 102.46268731096322
  87 |       87 |       717 |   20297 |  7512 | 18328 |   1.521363198266221 | 103.70144637610552
  88 |       88 |       717 |   20297 | 13085 |  3165 | 0.19764015473731716 | 105.22280957437174
  89 |       89 |       717 |   20297 |  1964 | 15302 | 0.19873138860514403 | 105.42044972910905
  90 |       90 |       717 |   20297 | 10795 | 15299 |   2.292995680207269 | 105.61918111771419
  91 |       91 |       717 |   20297 | 10793 |   372 |  0.4855687331740849 | 107.91217679792146
  92 |       92 |       717 |   20297 |   225 | 15291 | 0.46280852426161573 | 108.39774553109555
  93 |       93 |       717 |   20297 | 10789 | 10414 |   2.430054645278157 | 108.86055405535717
  94 |       94 |       717 |   20297 |  6993 | 10412 |  0.2403102243836699 | 111.29060870063533
  95 |       95 |       717 |   20297 |  6992 | 10755 | 0.09652216723023253 |   111.530918925019
  96 |       96 |       717 |   20297 |  7236 | 15284 |  1.6809600659773452 | 111.62744109224923
  97 |       97 |       717 |   20297 | 10785 |  1845 |  1.0246421791193243 | 113.30840115822657
  98 |       98 |       717 |   20297 |  1090 |  3174 |  1.4157885581241294 |  114.3330433373459
  99 |       99 |       717 |   20297 |  1970 |  3172 |  0.7484957416341996 | 115.74883189547003
 100 |      100 |       717 |   20297 |  1968 |  7938 |  0.3401056091275093 | 116.49732763710423
 101 |      101 |       717 |   20297 |  5222 | 27846 | 0.26712908568257443 | 116.83743324623174
 102 |      102 |       717 |   20297 | 21150 |   339 |  0.2094066028923108 | 117.10456233191431
 103 |      103 |       717 |   20297 |   207 | 27848 | 0.19692124904921784 | 117.31396893480662
 104 |      104 |       717 |   20297 | 21152 | 10348 | 0.29504832916423396 | 117.51089018385584
 105 |      105 |       717 |   20297 |  6954 | 10056 |  0.8820889598745064 | 117.80593851302007
 106 |      106 |       717 |   20297 |  6753 |  1727 |  1.6065552739650542 | 118.68802747289457
 107 |      107 |       717 |   20297 |  1023 | 10929 |  1.1482450221487135 | 120.29458274685963
 108 |      108 |       717 |   20297 |  7362 |  1731 |  0.4263978446296568 | 121.44282776900835
 109 |      109 |       717 |   20297 |  1026 |  1733 |  1.3895445440612704 | 121.86922561363801
 110 |      110 |       717 |   20297 |  1027 | 10921 |  1.1820831060420363 | 123.25877015769927
 111 |      111 |       717 |   20297 |  7358 | 12969 | 0.25299907844871494 | 124.44085326374132
 112 |      112 |       717 |   20297 |  8924 | 10392 |  1.5231024718492534 | 124.69385234219003
 113 |      113 |       717 |   20297 |  6978 | 12971 |  1.0624206553475568 | 126.21695481403928
 114 |      114 |       717 |   20297 |  8926 | 24118 |  0.3491983825536417 | 127.27937546938684
 115 |      115 |       717 |   20297 | 17746 |  1737 |  1.6221847396344866 | 127.62857385194047
 116 |      116 |       717 |   20297 |  1029 |  1741 |  1.6989467645193603 | 129.25075859157496
 117 |      117 |       717 |   20297 |  1032 | 24307 |  0.8486416974645247 |  130.9497053560943
 118 |      118 |       717 |   20297 | 17919 | 10919 | 0.47365969724266455 | 131.79834705355884
 119 |      119 |       717 |   20297 |  7356 |    99 |  0.4837512696327637 |  132.2720067508015
 120 |      120 |       717 |   20297 |    59 |    97 | 0.43666788780798876 | 132.75575802043426
 121 |      121 |       717 |   20297 |    58 | 15816 |  0.2213733791934505 | 133.19242590824226
 122 |      122 |       717 |   20297 | 11171 |   510 |  0.3202402501352363 |  133.4137992874357
 123 |      123 |       717 |   20297 |   304 | 26944 |  0.2807163810017846 | 133.73403953757094
 124 |      124 |       717 |   20297 | 20297 |    -1 |                   0 | 134.01475591857272
(124 rows)

Note

Comparing with Exercise 3: Vehicle routing when time is money:

  • The total number of records changed.

    • The node sequence changed.

    • The edge sequence changed.

  • The route is avoiding the residential roads that have tag_id = 110.

  • The costs do not change proportionally.

3.2.3. Exercise 6: Time in seconds of penalized route

Problem:

Get the times in seconds of a penalized route

Solution:

  • Use as inner query the penalized query joined with the ways table

    • Keep the edge as gid (line 6)

    • Join using gid (line 18)

SELECT * FROM pgr_dijkstra(
  $$
  SELECT gid AS id, source, target, cost_s AS cost, reverse_cost_s AS reverse_cost
  FROM (
    -- penalized query
    SELECT edge AS gid FROM pgr_dijkstra( -- line 6
      '
        SELECT gid AS id,
        source,
        target,
        cost_s * penalty AS cost,
        reverse_cost_s * penalty AS reverse_cost
        FROM ways JOIN configuration
        USING (tag_id)
      ',
      717,
      20297) ) AS edges_in_route
  JOIN ways USING (gid)  -- line 18
  $$,
  717, 20297);
 seq | path_seq | start_vid | end_vid | node  | edge  |        cost         |      agg_cost      
-----+----------+-----------+---------+-------+-------+---------------------+--------------------
   1 |        1 |       717 |   20297 |   717 |  1183 |  0.9866857840470188 |                  0
   2 |        2 |       717 |   20297 |   716 | 23539 |  3.5400047592944794 | 0.9866857840470188
   3 |        3 |       717 |   20297 | 17233 | 16690 |  7.8358053541959585 |  4.526690543341498
   4 |        4 |       717 |   20297 | 11804 | 10431 |  0.7643930526247685 | 12.362495897537457
   5 |        5 |       717 |   20297 |  7006 | 13584 |   7.561602929739388 | 13.126888950162225
   6 |        6 |       717 |   20297 |  9405 | 13586 |  3.6896999773824626 | 20.688491879901612
   7 |        7 |       717 |   20297 |  9406 | 26463 |  2.8511350365625674 | 24.378191857284076
   8 |        8 |       717 |   20297 | 19814 | 16689 |   4.455047062328867 | 27.229326893846643
   9 |        9 |       717 |   20297 | 11803 | 21121 |  1.3242701227215836 |  31.68437395617551
  10 |       10 |       717 |   20297 | 15159 |  1549 |   9.900773532112476 |  33.00864407889709
  11 |       11 |       717 |   20297 |   922 |   321 |     9.2524045576761 | 42.909417611009566
  12 |       12 |       717 |   20297 |   198 | 23635 |   3.434101359897153 |  52.16182216868567
  13 |       13 |       717 |   20297 | 17334 | 23637 |  2.5353184776147946 |  55.59592352858282
  14 |       14 |       717 |   20297 | 17335 | 26056 |   7.597830111680507 |  58.13124200619762
  15 |       15 |       717 |   20297 | 19405 | 27290 |  3.3372112660924658 |  65.72907211787812
  16 |       16 |       717 |   20297 | 20639 | 23643 |  2.3902845271936686 |  69.06628338397059
  17 |       17 |       717 |   20297 | 17341 |  8117 | 0.18108828379374484 |  71.45656791116426
  18 |       18 |       717 |   20297 |  5339 | 23010 |      5.068811565308 |    71.637656194958
  19 |       19 |       717 |   20297 | 16756 | 20374 |   4.818022040999541 |    76.706467760266
  20 |       20 |       717 |   20297 | 14634 | 23377 |   5.520136989518755 |  81.52448980126553
  21 |       21 |       717 |   20297 | 17084 | 26684 |  4.9074045027832796 |  87.04462679078429
  22 |       22 |       717 |   20297 | 20035 | 27611 |  0.2972617598080918 |  91.95203129356757
  23 |       23 |       717 |   20297 | 20912 | 20329 |  0.7548064570004038 |  92.24929305337567
  24 |       24 |       717 |   20297 | 14602 | 18897 |   6.326955778544117 |  93.00409951037607
  25 |       25 |       717 |   20297 | 13533 | 26428 |  1.0141769683999808 |  99.33105528892018
  26 |       26 |       717 |   20297 | 19779 | 26766 |  2.9542647642032898 | 100.34523225732016
  27 |       27 |       717 |   20297 | 20117 |  1099 |   7.680340665582461 | 103.29949702152345
  28 |       28 |       717 |   20297 |   668 | 26855 |  0.7742005066112955 | 110.97983768710591
  29 |       29 |       717 |   20297 | 20208 | 23388 |   1.476908797375319 | 111.75403819371721
  30 |       30 |       717 |   20297 | 17096 |  1101 |  1.5208365083875512 | 113.23094699109252
  31 |       31 |       717 |   20297 |   669 | 27184 |   7.552157441938414 | 114.75178349948007
  32 |       32 |       717 |   20297 | 20532 |  1125 |   1.026306189962355 | 122.30394094141849
  33 |       33 |       717 |   20297 |   684 | 27612 |   9.724312351745896 | 123.33024713138084
  34 |       34 |       717 |   20297 | 20913 | 20388 |   5.311712625388896 | 133.05455948312675
  35 |       35 |       717 |   20297 | 14646 | 20389 |   12.58655446352095 | 138.36627210851566
  36 |       36 |       717 |   20297 | 14647 | 23385 |   4.593054431480901 |  150.9528265720366
  37 |       37 |       717 |   20297 | 17092 | 20391 |   2.404297153516651 |  155.5458810035175
  38 |       38 |       717 |   20297 | 14648 | 20393 |   6.960911764099629 | 157.95017815703414
  39 |       39 |       717 |   20297 | 14649 | 23382 |   3.899659739042724 | 164.91108992113377
  40 |       40 |       717 |   20297 | 17089 | 20394 |   9.340332449878881 |  168.8107496601765
  41 |       41 |       717 |   20297 | 14650 | 12754 |   2.478280414213913 | 178.15108211005537
  42 |       42 |       717 |   20297 |  8757 | 11995 |   2.511849604268537 | 180.62936252426928
  43 |       43 |       717 |   20297 |  8139 | 10847 |  0.5976151051848494 | 183.14121212853783
  44 |       44 |       717 |   20297 |  7295 |  7967 |    5.07017077260428 | 183.73882723372267
  45 |       45 |       717 |   20297 |  5243 | 25521 |  1.3259519599670981 | 188.80899800632696
  46 |       46 |       717 |   20297 | 18962 | 10375 |  3.4148253835622326 | 190.13494996629404
  47 |       47 |       717 |   20297 |  6970 |  2710 |  1.1946186346583645 | 193.54977534985628
  48 |       48 |       717 |   20297 |  1669 | 15160 |  1.9838268336491074 | 194.74439398451463
  49 |       49 |       717 |   20297 | 10678 | 15157 |  1.0847051318054501 | 196.72822081816375
  50 |       50 |       717 |   20297 | 10676 | 10845 |   1.498828825477521 |  197.8129259499692
  51 |       51 |       717 |   20297 |  7294 | 10844 |  3.0104122850720136 | 199.31175477544673
  52 |       52 |       717 |   20297 |  7293 | 10842 |   3.636383379281709 | 202.32216706051875
  53 |       53 |       717 |   20297 |  7291 | 24811 |  1.0831136792537206 | 205.95855043980046
  54 |       54 |       717 |   20297 | 18351 | 10839 |  2.8522633923410057 |  207.0416641190542
  55 |       55 |       717 |   20297 |  7289 | 10826 | 0.27363928812966337 |  209.8939275113952
  56 |       56 |       717 |   20297 |  7279 | 10836 |  3.0661442189533576 | 210.16756679952485
  57 |       57 |       717 |   20297 |  7287 |   626 |  2.2281729480441945 |  213.2337110184782
  58 |       58 |       717 |   20297 |   368 | 10372 |   14.49453618322301 |  215.4618839665224
  59 |       59 |       717 |   20297 |  6968 | 10366 |  3.0778402017181934 |  229.9564201497454
  60 |       60 |       717 |   20297 |  6965 | 10939 |   8.069144043259369 | 233.03426035146362
  61 |       61 |       717 |   20297 |  7369 | 10363 |   5.768345942637909 |   241.103404394723
  62 |       62 |       717 |   20297 |  6963 | 23340 |  1.0510524494232498 |  246.8717503373609
  63 |       63 |       717 |   20297 | 17048 | 10938 |   4.218244646138546 | 247.92280278678416
  64 |       64 |       717 |   20297 |  7368 | 23470 |   4.349821481768251 |  252.1410474329227
  65 |       65 |       717 |   20297 | 17170 | 19253 |   2.172887473049065 | 256.49086891469096
  66 |       66 |       717 |   20297 | 13851 | 22805 |  3.3127131308112716 |    258.66375638774
  67 |       67 |       717 |   20297 | 16579 |   102 |  0.5361470911814347 |  261.9764695185513
  68 |       68 |       717 |   20297 |    60 | 23245 |   4.560298654310812 | 262.51261660973273
  69 |       69 |       717 |   20297 | 16962 | 10360 |   3.371715219110345 | 267.07291526404356
  70 |       70 |       717 |   20297 |  6961 |  1644 |   3.369172847320359 |  270.4446304831539
  71 |       71 |       717 |   20297 |   977 |  7943 |   2.462066055691773 |  273.8138033304743
  72 |       72 |       717 |   20297 |  5225 |  7944 |  1.5097956407383146 | 276.27586938616605
  73 |       73 |       717 |   20297 |  5226 |  3194 |   0.787830328173101 |  277.7856650269044
  74 |       74 |       717 |   20297 |  1982 |  1647 |   4.923602780529765 |  278.5734953550775
  75 |       75 |       717 |   20297 |   979 | 27195 |   4.779578061852004 |  283.4970981356073
  76 |       76 |       717 |   20297 | 20543 | 15321 |  3.2620556418627746 |  288.2766761974593
  77 |       77 |       717 |   20297 | 10806 | 12145 |  1.1010412528764728 |  291.5387318393221
  78 |       78 |       717 |   20297 |  8265 |  1653 |  0.7265291508959483 |  292.6397730921986
  79 |       79 |       717 |   20297 |   982 | 15314 |   0.687892166829071 | 293.36630224309454
  80 |       80 |       717 |   20297 | 10802 | 12141 |    1.00057182891344 |  294.0541944099236
  81 |       81 |       717 |   20297 |  8262 | 18325 |   7.625877296588039 | 295.05476623883703
  82 |       82 |       717 |   20297 | 13082 |  3154 |  0.6911991237607362 |  302.6806435354251
  83 |       83 |       717 |   20297 |  1958 | 18322 |   0.589059340205777 |  303.3718426591858
  84 |       84 |       717 |   20297 | 13079 | 15309 |   7.802332894772054 |  303.9609019993916
  85 |       85 |       717 |   20297 | 10799 |  3160 |   1.451915421445249 | 311.76323489416365
  86 |       86 |       717 |   20297 |  1961 | 11148 |  4.1291968838076585 | 313.21515031560887
  87 |       87 |       717 |   20297 |  7512 | 18328 |   5.071210660887403 |  317.3443471994165
  88 |       88 |       717 |   20297 | 13085 |  3165 |  0.6588005157910573 |  322.4155578603039
  89 |       89 |       717 |   20297 |  1964 | 15302 |  0.6624379620171468 |   323.074358376095
  90 |       90 |       717 |   20297 | 10795 | 15299 |    7.64331893402423 | 323.73679633811213
  91 |       91 |       717 |   20297 | 10793 |   372 |  1.6185624439136164 |  331.3801152721364
  92 |       92 |       717 |   20297 |   225 | 15291 |  1.5426950808720525 |    332.99867771605
  93 |       93 |       717 |   20297 | 10789 | 10414 |    8.10018215092719 |  334.5413727969221
  94 |       94 |       717 |   20297 |  6993 | 10412 |  0.8010340812788996 |  342.6415549478493
  95 |       95 |       717 |   20297 |  6992 | 10755 | 0.32174055743410845 | 343.44258902912816
  96 |       96 |       717 |   20297 |  7236 | 15284 |   5.603200219924484 | 343.76432958656227
  97 |       97 |       717 |   20297 | 10785 |  1845 |  3.4154739303977477 | 349.36752980648674
  98 |       98 |       717 |   20297 |  1090 |  3174 |   4.719295193747098 |  352.7830037368845
  99 |       99 |       717 |   20297 |  1970 |  3172 |   2.494985805447332 |  357.5022989306316
 100 |      100 |       717 |   20297 |  1968 |  7938 |  1.1336853637583644 | 359.99728473607894
 101 |      101 |       717 |   20297 |  5222 | 27846 |  0.8904302856085814 |  361.1309700998373
 102 |      102 |       717 |   20297 | 21150 |   339 |   0.698022009641036 | 362.02140038544593
 103 |      103 |       717 |   20297 |   207 | 27848 |  0.6564041634973928 | 362.71942239508695
 104 |      104 |       717 |   20297 | 21152 | 10348 |  0.9834944305474466 |  363.3758265585843
 105 |      105 |       717 |   20297 |  6954 | 10056 |  2.9402965329150215 |  364.3593209891318
 106 |      106 |       717 |   20297 |  6753 |  1727 |   5.355184246550181 |  367.2996175220468
 107 |      107 |       717 |   20297 |  1023 | 10929 |  3.8274834071623784 | 372.65480176859694
 108 |      108 |       717 |   20297 |  7362 |  1731 |  1.4213261487655227 | 376.48228517575933
 109 |      109 |       717 |   20297 |  1026 |  1733 |   4.631815146870902 | 377.90361132452483
 110 |      110 |       717 |   20297 |  1027 | 10921 |   3.940277020140121 | 382.53542647139574
 111 |      111 |       717 |   20297 |  7358 | 12969 |  0.8433302614957165 | 386.47570349153585
 112 |      112 |       717 |   20297 |  8924 | 10392 |   5.077008239497512 |  387.3190337530316
 113 |      113 |       717 |   20297 |  6978 | 12971 |   3.541402184491856 |  392.3960419925291
 114 |      114 |       717 |   20297 |  8926 | 24118 |   1.163994608512139 | 395.93744417702095
 115 |      115 |       717 |   20297 | 17746 |  1737 |   5.407282465448289 |  397.1014387855331
 116 |      116 |       717 |   20297 |  1029 |  1741 |  5.6631558817312015 |  402.5087212509814
 117 |      117 |       717 |   20297 |  1032 | 24307 |  2.8288056582150825 |  408.1718771327126
 118 |      118 |       717 |   20297 | 17919 | 10919 |  1.5788656574755486 | 411.00068279092767
 119 |      119 |       717 |   20297 |  7356 |    99 |  1.6125042321092125 |  412.5795484484032
 120 |      120 |       717 |   20297 |    59 |    97 |  1.4555596260266292 |  414.1920526805124
 121 |      121 |       717 |   20297 |    58 | 15816 |  0.7379112639781683 | 415.64761230653903
 122 |      122 |       717 |   20297 | 11171 |   510 |  1.0674675004507879 |  416.3855235705172
 123 |      123 |       717 |   20297 |   304 | 26944 |  0.9357212700059486 |   417.452991070968
 124 |      124 |       717 |   20297 | 20297 |    -1 |                   0 | 418.38871234097394
(124 rows)

Note

Comparing with Exercise 5: Vehicle routing with penalization:

  • The total number of records is the same.

  • The route is the same

  • The cost column have the original vales from the ways table.