cnpryer / solverstack-route

Flask service for poc optimized vehicle routing.
MIT License
1 stars 0 forks source link

solution stop distance processing may be flawed #31

Open cnpryer opened 3 years ago

cnpryer commented 3 years ago

during the postprocessing for the ortools model solution the stop distances look off. I need to look into this more.

cnpryer commented 3 years ago

a quick debug makes me think that this is just seemingly problematic due to the unique solution.

cnpryer commented 3 years ago

for reference when I have more time to look into this:

vrp_testing_data.csv


vehicles
[[Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=6, lat=44.7793, lon=-93.5197, demand=21, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=50757)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=57, lat=45.8817, lon=-95.382, demand=25, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=64514)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=4, lat=44.7793, lon=-93.5197, demand=24, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=50757)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=5, lat=44.7793, lon=-93.5197, demand=24, dist=10293),
  Stop(idx=95, lat=44.8471, lon=-93.1543, demand=2, dist=0),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=49791)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=10, lat=41.9501, lon=-87.69586600000001, demand=25, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=15874)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=11, lat=41.9501, lon=-87.69586600000001, demand=25, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=15874)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=13, lat=41.9214, lon=-87.8924, demand=26, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=15547)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=14, lat=41.7454, lon=-87.7135, demand=25, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=67, lat=41.4884, lon=-88.1572, demand=25, dist=33520),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=12071)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=86, lat=42.0362, lon=-87.7328, demand=26, dist=22321),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=16541)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=90, lat=41.4191, lon=-87.7748, demand=26, dist=30482),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=11555)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=94, lat=42.0376, lon=-88.3186, demand=22, dist=26466),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=16587)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=100, lat=41.4547, lon=-87.0656, demand=25, dist=31496),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13079)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=87, lat=41.7662, lon=-88.141, demand=3, dist=37913),
  Stop(idx=101, lat=41.4547, lon=-87.0656, demand=23, dist=21391),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13079)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=103, lat=41.9335, lon=-88.0054, demand=21, dist=22582),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=15631)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=106, lat=41.9501, lon=-87.945, demand=25, dist=22582),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=15769)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=3, lat=43.7266, lon=-87.8242, demand=26, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=30145)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=7, lat=42.3989, lon=-87.8554, demand=24, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=19413)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=15, lat=41.7454, lon=-87.7135, demand=22, dist=19413),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=16, lat=41.7454, lon=-87.7135, demand=24, dist=2670),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=17, lat=41.7454, lon=-87.7135, demand=21, dist=2670),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=18, lat=41.7454, lon=-87.7135, demand=23, dist=15874),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=19, lat=41.7454, lon=-87.7135, demand=26, dist=15874),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=20, lat=41.7454, lon=-87.7135, demand=25, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=22, lat=41.7454, lon=-87.7135, demand=9, dist=14218),
  Stop(idx=21, lat=41.7454, lon=-87.7135, demand=11, dist=1785),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14218)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=23, lat=41.678999999999995, lon=-88.1403, demand=25, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13601)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=32, lat=42.3989, lon=-87.8554, demand=19, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=19413)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=38, lat=43.8454, lon=-88.8424, demand=16, dist=14218),
  Stop(idx=68, lat=41.4884, lon=-88.1572, demand=8, dist=16706),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=12071)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=48, lat=42.666000000000004, lon=-88.2749, demand=20, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=21617)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=61, lat=41.6404, lon=-88.0696, demand=22, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13268)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=62, lat=41.6404, lon=-88.0696, demand=26, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13268)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=63, lat=41.6404, lon=-88.0696, demand=25, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13268)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=64, lat=41.6404, lon=-88.0696, demand=23, dist=14218),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13268)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=65, lat=41.6404, lon=-88.0696, demand=26, dist=13601),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13268)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=66, lat=41.4884, lon=-88.1572, demand=19, dist=19409),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=12071)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=69, lat=41.4884, lon=-88.1572, demand=23, dist=14562),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=12071)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=81, lat=42.562, lon=-89.086, demand=24, dist=12305),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=21736)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=84, lat=41.8482, lon=-88.3098, demand=22, dist=10112),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=15061)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=88, lat=41.7662, lon=-88.141, demand=22, dist=19413),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=14304)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=91, lat=41.4191, lon=-87.7748, demand=24, dist=21702),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=11555)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=93, lat=42.0376, lon=-88.3186, demand=24, dist=21702),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=16587)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=99, lat=41.4547, lon=-87.0656, demand=26, dist=16583),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=13079)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=77, lat=39.687, lon=-88.3037, demand=25, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=3156)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=78, lat=39.687, lon=-88.3037, demand=21, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=3156)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=8, lat=40.3107, lon=-88.1462, demand=26, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=2670)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=9, lat=40.3107, lon=-88.1462, demand=11, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=2670)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=37, lat=41.2438, lon=-85.8508, demand=1, dist=10293),
  Stop(idx=24, lat=41.052695, lon=-85.161001, demand=0, dist=13000),
  Stop(idx=70, lat=42.7692, lon=-86.1164, demand=20, dist=26831),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=25131)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=40, lat=39.0963, lon=-84.5719, demand=26, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=22582)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=30, lat=39.064925, lon=-84.631225, demand=26, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=22321)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=43, lat=39.0963, lon=-84.5719, demand=26, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=22582)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=42, lat=39.0963, lon=-84.5719, demand=25, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=22582)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=41, lat=39.0963, lon=-84.5719, demand=26, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=22582)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=50, lat=39.1594, lon=-84.35655, demand=25, dist=19413),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=23695)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=49, lat=39.1594, lon=-84.35655, demand=24, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=23695)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=60, lat=38.2083, lon=-84.245, demand=24, dist=2670),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=27649)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=102, lat=40.2874, lon=-84.1622, demand=18, dist=15874),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=23828)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=33, lat=39.8814, lon=-83.0839, demand=21, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=30482)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=74, lat=39.7187, lon=-82.6031, demand=26, dist=19413),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=33562)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=73, lat=39.8581, lon=-82.8872, demand=23, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=31712)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=59, lat=39.8581, lon=-82.8872, demand=23, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=31712)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=47, lat=40.2932, lon=-83.0723, demand=26, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=30539)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=46, lat=40.2932, lon=-83.0723, demand=24, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=30539)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=45, lat=40.2932, lon=-83.0723, demand=23, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=30539)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=76, lat=39.7187, lon=-82.6031, demand=26, dist=2670),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=33562)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=75, lat=39.7187, lon=-82.6031, demand=25, dist=2670),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=33562)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=35, lat=38.0045, lon=-85.6888, demand=25, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=21702)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=34, lat=38.0045, lon=-85.6888, demand=23, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=21702)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=83, lat=38.2306, lon=-85.7905, demand=24, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=19915)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=36, lat=36.8453, lon=-86.8823, demand=23, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=26466)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=82, lat=36.9663, lon=-86.3933, demand=9, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=26547)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=39, lat=41.9521, lon=-91.6853, demand=26, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=27472)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=26, lat=44.03, lon=-91.7009, demand=0, dist=10293),
  Stop(idx=71, lat=38.995, lon=-92.3112, demand=24, dist=12126),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=28091)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=89, lat=42.4833, lon=-91.1183, demand=19, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=27606)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=31, lat=42.0379, lon=-93.6003, demand=15, dist=10293),
  Stop(idx=105, lat=39.7551, lon=-94.8173, demand=5, dist=22167),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=42329)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=80, lat=40.8116, lon=-81.4973, demand=23, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=40553)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=96, lat=41.4467, lon=-82.0204, demand=9, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=38447)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=44, lat=41.3921, lon=-81.5232, demand=25, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=41250)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=79, lat=40.8116, lon=-81.4973, demand=20, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=40553)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=52, lat=41.0449, lon=-83.6457, demand=26, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=28056)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=51, lat=41.0449, lon=-83.6457, demand=25, dist=10293),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=28056)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=53, lat=41.0449, lon=-83.6457, demand=14, dist=30145),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=28056)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=25, lat=43.2828, lon=-84.6088, demand=8, dist=10293),
  Stop(idx=104, lat=42.291000000000004, lon=-83.465, demand=3, dist=53155),
  Stop(idx=85, lat=42.0295, lon=-84.1839, demand=5, dist=62214),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=28473)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=54, lat=42.5582, lon=-83.4773, demand=0, dist=10293),
  Stop(idx=55, lat=42.534, lon=-83.5285, demand=22, dist=27321),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=34019)],
 [Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=0),
  Stop(idx=56, lat=42.534, lon=-83.5285, demand=25, dist=50757),
  Stop(idx=0, lat=40.0, lon=-88.0, demand=0, dist=34019)]]