Hello,
I’m running some tests where my input contains 3 jobs and 1 shipment (pickup + delivery). However, when I routed it through Vroom, it suggested a route that includes all the jobs and the delivery, but not the pickup. I’d like to understand why this happens, because I believe that having a delivery without its corresponding pickup should be considered an error.
I’m using Vroom (ghcr.io/vroom-project/vroom-docker:v1.14.0) together with ORS (openrouteservice/openrouteservice:v9.3.1).
Input:
{
"vehicles": [
{
"id": 6,
"steps": [],
"profile": "driving-car",
"start": [
-81.379955,
19.3382467
]
}
],
"jobs": [
{
"priority": 20,
"service": 300,
"id": 3,
"location": [
-81.37384314090014,
19.346415730057807
],
"time_windows": [
[
1763689658,
1763691179
]
],
"description": "oTSK9xuUno3NWW1BCjbt"
},
{
"service": 300,
"priority": 10,
"id": 4,
"description": "fKqGF6FPDq0g00qHco0T",
"location": [
-81.37947980314493,
19.338493017306277
],
"time_windows": [
[
1763689658,
1763690848
]
]
},
{
"description": "VAJTlkYXhf3iS8XhTvhH",
"time_windows": [
[
1763689658,
1763690981
]
],
"location": [
-81.38847693800926,
19.362235645416423
],
"priority": 20,
"id": 5,
"service": 300
}
],
"options": {
"c": false,
"g": true
},
"shipments": [
{
"pickup": {
"time_windows": [
[
1763689778,
1763690378
]
],
"location": [
-81.3806984,
19.34498
],
"id": 1,
"description": "9FxRelhIxCLGgVRqLUD8",
"service": 300
},
"delivery": {
"description": "9FxRelhIxCLGgVRqLUD8",
"time_windows": [
[
1763689778,
1763692178
]
],
"service": 300,
"id": 2,
"location": [
-81.39821369200945,
19.37080055393572
]
}
}
]
}
Output:
{
"code": 0,
"summary": {
"cost": 1124,
"routes": 1,
"unassigned": 1,
"setup": 0,
"service": 1200,
"duration": 1124,
"waiting_time": 0,
"priority": 50,
"distance": 9684,
"violations": [],
"computing_times": {
"loading": 3,
"solving": 0,
"routing": 2
}
},
"unassigned": [
{
"id": 1,
"location": [
-81.3806984,
19.34498
],
"type": "pickup",
"description": "9FxRelhIxCLGgVRqLUD8"
}
],
"routes": [
{
"vehicle": 6,
"cost": 1124,
"setup": 0,
"service": 1200,
"duration": 1124,
"waiting_time": 0,
"priority": 50,
"distance": 9684,
"steps": [
{
"type": "start",
"location": [
-81.379955,
19.3382467
],
"setup": 0,
"service": 0,
"waiting_time": 0,
"arrival": 1763689382,
"duration": 0,
"violations": [],
"distance": 0
},
{
"type": "job",
"description": "oTSK9xuUno3NWW1BCjbt",
"location": [
-81.37384314090014,
19.346415730057807
],
"id": 3,
"setup": 0,
"service": 300,
"waiting_time": 0,
"job": 3,
"arrival": 1763689658,
"duration": 276,
"violations": [],
"distance": 2005
},
{
"type": "job",
"description": "fKqGF6FPDq0g00qHco0T",
"location": [
-81.37947980314493,
19.338493017306277
],
"id": 4,
"setup": 0,
"service": 300,
"waiting_time": 0,
"job": 4,
"arrival": 1763690292,
"duration": 610,
"violations": [],
"distance": 4469
},
{
"type": "job",
"description": "VAJTlkYXhf3iS8XhTvhH",
"location": [
-81.38847693800926,
19.362235645416423
],
"id": 5,
"setup": 0,
"service": 300,
"waiting_time": 0,
"job": 5,
"arrival": 1763690888,
"duration": 906,
"violations": [],
"distance": 7842
},
{
"type": "delivery",
"description": "9FxRelhIxCLGgVRqLUD8",
"location": [
-81.39821369200945,
19.37080055393572
],
"id": 2,
"setup": 0,
"service": 300,
"waiting_time": 0,
"job": 2,
"arrival": 1763691406,
"duration": 1124,
"violations": [],
"distance": 9684
},
{
"type": "end",
"location": [
-81.39821369200945,
19.37080055393572
],
"setup": 0,
"service": 0,
"waiting_time": 0,
"arrival": 1763691706,
"duration": 1124,
"violations": [],
"distance": 9684
}
],
"violations": [],
"geometry": "y~_uBtouoN?p@?`@K?aESWAEAUAwBC{@@_@@Em@WyAG_@Ig@GYO_AI_@O}@IUQMSCQIMOGUAUDUHONMLENAL?RHj@Bp@CrIAOsMGe@Oi@Q_@S]sAsAg@Ye@CwCBc@CiBu@]UIOM_@Ca@CyAIc@M]KM{DwDc@]e@Uc@OUEcAAaBF`BGbA@TDb@Nd@Tb@\\zDvDJLL\\Hb@BxAB`@L^HN\\ThBt@b@BvCCd@Bf@XrArAR\\P^Nh@Fd@NrM|BFjBLfAHzEZj@DfAH~@FfDRPAf@KHKLGLCNAN@LFJHJPFT?TGTMPKF[FO?MEMGIIe@_@e@Q_Hg@m@EkEWcAGsBOINEPFpH?Nu@CmDKApA@`A?b@EAUAwBC{@@_@@E?gBNaAL}@L}Bd@SDmDj@wCd@MBc@H[DeC`@o@Js@LMB{AXaDr@YFIB_Bh@WJMFSHQ@O?OEUKMOIWEa@@y@?KCe@Ks@Ms@Ga@EUe@c@UGUAq@DeAPmDnCo@^eA^IBeFjAe@JWJ]J}LvEcC`AyB|@]Pw@f@q@j@kAt@IJK^BP?TCTIRKHM`@It@IdAK`@Mb@Q^e@r@e@d@YTa@ReAj@e@Xg@XeAv@cBzAA@_Az@e@d@URMJa@\\wAlA_DiE~ChECBa@ZgAx@}@r@gAv@{BfBWPoAbAWRm@t@mA~AoBjC_AnAGFo@z@OPe@f@g@`@_B~@iAj@g@VqAx@y@n@e@b@s@z@a@h@g@~@IPU^_A`AUZKRQp@]M][Wc@kA{AIEaCaBDjC@x@Gx@g@~@rAbB"
}
]
}
Hello,
I’m running some tests where my input contains 3 jobs and 1 shipment (pickup + delivery). However, when I routed it through Vroom, it suggested a route that includes all the jobs and the delivery, but not the pickup. I’d like to understand why this happens, because I believe that having a delivery without its corresponding pickup should be considered an error.
I’m using Vroom (ghcr.io/vroom-project/vroom-docker:v1.14.0) together with ORS (openrouteservice/openrouteservice:v9.3.1).
Input:
{ "vehicles": [ { "id": 6, "steps": [], "profile": "driving-car", "start": [ -81.379955, 19.3382467 ] } ], "jobs": [ { "priority": 20, "service": 300, "id": 3, "location": [ -81.37384314090014, 19.346415730057807 ], "time_windows": [ [ 1763689658, 1763691179 ] ], "description": "oTSK9xuUno3NWW1BCjbt" }, { "service": 300, "priority": 10, "id": 4, "description": "fKqGF6FPDq0g00qHco0T", "location": [ -81.37947980314493, 19.338493017306277 ], "time_windows": [ [ 1763689658, 1763690848 ] ] }, { "description": "VAJTlkYXhf3iS8XhTvhH", "time_windows": [ [ 1763689658, 1763690981 ] ], "location": [ -81.38847693800926, 19.362235645416423 ], "priority": 20, "id": 5, "service": 300 } ], "options": { "c": false, "g": true }, "shipments": [ { "pickup": { "time_windows": [ [ 1763689778, 1763690378 ] ], "location": [ -81.3806984, 19.34498 ], "id": 1, "description": "9FxRelhIxCLGgVRqLUD8", "service": 300 }, "delivery": { "description": "9FxRelhIxCLGgVRqLUD8", "time_windows": [ [ 1763689778, 1763692178 ] ], "service": 300, "id": 2, "location": [ -81.39821369200945, 19.37080055393572 ] } } ] }Output:
{ "code": 0, "summary": { "cost": 1124, "routes": 1, "unassigned": 1, "setup": 0, "service": 1200, "duration": 1124, "waiting_time": 0, "priority": 50, "distance": 9684, "violations": [], "computing_times": { "loading": 3, "solving": 0, "routing": 2 } }, "unassigned": [ { "id": 1, "location": [ -81.3806984, 19.34498 ], "type": "pickup", "description": "9FxRelhIxCLGgVRqLUD8" } ], "routes": [ { "vehicle": 6, "cost": 1124, "setup": 0, "service": 1200, "duration": 1124, "waiting_time": 0, "priority": 50, "distance": 9684, "steps": [ { "type": "start", "location": [ -81.379955, 19.3382467 ], "setup": 0, "service": 0, "waiting_time": 0, "arrival": 1763689382, "duration": 0, "violations": [], "distance": 0 }, { "type": "job", "description": "oTSK9xuUno3NWW1BCjbt", "location": [ -81.37384314090014, 19.346415730057807 ], "id": 3, "setup": 0, "service": 300, "waiting_time": 0, "job": 3, "arrival": 1763689658, "duration": 276, "violations": [], "distance": 2005 }, { "type": "job", "description": "fKqGF6FPDq0g00qHco0T", "location": [ -81.37947980314493, 19.338493017306277 ], "id": 4, "setup": 0, "service": 300, "waiting_time": 0, "job": 4, "arrival": 1763690292, "duration": 610, "violations": [], "distance": 4469 }, { "type": "job", "description": "VAJTlkYXhf3iS8XhTvhH", "location": [ -81.38847693800926, 19.362235645416423 ], "id": 5, "setup": 0, "service": 300, "waiting_time": 0, "job": 5, "arrival": 1763690888, "duration": 906, "violations": [], "distance": 7842 }, { "type": "delivery", "description": "9FxRelhIxCLGgVRqLUD8", "location": [ -81.39821369200945, 19.37080055393572 ], "id": 2, "setup": 0, "service": 300, "waiting_time": 0, "job": 2, "arrival": 1763691406, "duration": 1124, "violations": [], "distance": 9684 }, { "type": "end", "location": [ -81.39821369200945, 19.37080055393572 ], "setup": 0, "service": 0, "waiting_time": 0, "arrival": 1763691706, "duration": 1124, "violations": [], "distance": 9684 } ], "violations": [], "geometry": "y~_uBtouoN?p@?`@K?aESWAEAUAwBC{@@_@@Em@WyAG_@Ig@GYO_AI_@O}@IUQMSCQIMOGUAUDUHONMLENAL?RHj@Bp@CrIAOsMGe@Oi@Q_@S]sAsAg@Ye@CwCBc@CiBu@]UIOM_@Ca@CyAIc@M]KM{DwDc@]e@Uc@OUEcAAaBF`BGbA@TDb@Nd@Tb@\\zDvDJLL\\Hb@BxAB`@L^HN\\ThBt@b@BvCCd@Bf@XrArAR\\P^Nh@Fd@NrM|BFjBLfAHzEZj@DfAH~@FfDRPAf@KHKLGLCNAN@LFJHJPFT?TGTMPKF[FO?MEMGIIe@_@e@Q_Hg@m@EkEWcAGsBOINEPFpH?Nu@CmDKApA@`A?b@EAUAwBC{@@_@@E?gBNaAL}@L}Bd@SDmDj@wCd@MBc@H[DeC`@o@Js@LMB{AXaDr@YFIB_Bh@WJMFSHQ@O?OEUKMOIWEa@@y@?KCe@Ks@Ms@Ga@EUe@c@UGUAq@DeAPmDnCo@^eA^IBeFjAe@JWJ]J}LvEcC`AyB|@]Pw@f@q@j@kAt@IJK^BP?TCTIRKHM`@It@IdAK`@Mb@Q^e@r@e@d@YTa@ReAj@e@Xg@XeAv@cBzAA@_Az@e@d@URMJa@\\wAlA_DiE~ChECBa@ZgAx@}@r@gAv@{BfBWPoAbAWRm@t@mA~AoBjC_AnAGFo@z@OPe@f@g@`@_B~@iAj@g@VqAx@y@n@e@b@s@z@a@h@g@~@IPU^_A`AUZKRQp@]M][Wc@kA{AIEaCaBDjC@x@Gx@g@~@rAbB" } ] }