Skip to content

Shipments aren't being assigned to vehicles with breaks on v1.15.0 #1337

@danielcxt

Description

@danielcxt

We are using v1.15.0. Compare the following request/response pairs:

  1. One shipment and one vehicle with a break that starts after the shipment pickup and delivery time windows. The stops are not assigned to the vehicle.
{
    "vehicles": [
        {
            "description": "vehicle",
            "id": 1,
            "end_index": 2,
            "time_window": [
                0,
                7200
            ],
            "breaks": [
                {
                    "id": 1,
                    "description": "break",
                    "time_windows": [
                        [
                            6800,
                            6800
                        ]
                    ],
                    "service": 300
                }
            ],
            "end": [
                0,
                0
            ]
        }
    ],
    "shipments": [
        {
            "pickup": {
                "id": 1,
                "description": "pickup",
                "location_index": 0,
                "service": 5,
                "time_windows": [
                    [
                        0,
                        3600
                    ]
                ],
                "location": [
                    0,
                    0
                ]
            },
            "delivery": {
                "id": 2,
                "description": "delivery",
                "location_index": 1,
                "service": 5,
                "time_windows": [
                    [
                        0,
                        3600
                    ]
                ],
                "location": [
                    0,
                    0
                ]
            }
        }
    ],
    "matrices": {
        "car": {
            "durations": [
                [
                    0,
                    300,
                    0
                ],
                [
                    300,
                    0,
                    0
                ],
                [
                    0,
                    0,
                    0
                ]
            ]
        }
    }
}
{
    "code": 0,
    "summary": {
        "cost": 0,
        "routes": 0,
        "unassigned": 2,
        "setup": 0,
        "service": 0,
        "duration": 0,
        "waiting_time": 0,
        "priority": 0,
        "violations": [],
        "computing_times": {
            "loading": 0,
            "solving": 1,
            "routing": 0
        }
    },
    "unassigned": [
        {
            "id": 2,
            "location": [
                0.0,
                0.0
            ],
            "location_index": 1,
            "type": "delivery",
            "description": "delivery"
        },
        {
            "id": 1,
            "location": [
                0.0,
                0.0
            ],
            "location_index": 0,
            "type": "pickup",
            "description": "pickup"
        }
    ],
    "routes": []
}
  1. Same as the first request except with the break removed. The stops are assigned to the vehicle.
{
    "vehicles": [
        {
            "description": "vehicle",
            "id": 1,
            "end_index": 2,
            "time_window": [
                0,
                7200
            ],
            "end": [
                0,
                0
            ]
        }
    ],
    "shipments": [
        {
            "pickup": {
                "id": 1,
                "description": "pickup",
                "location_index": 0,
                "service": 5,
                "time_windows": [
                    [
                        0,
                        3600
                    ]
                ],
                "location": [
                    0,
                    0
                ]
            },
            "delivery": {
                "id": 2,
                "description": "delivery",
                "location_index": 1,
                "service": 5,
                "time_windows": [
                    [
                        0,
                        3600
                    ]
                ],
                "location": [
                    0,
                    0
                ]
            }
        }
    ],
    "matrices": {
        "car": {
            "durations": [
                [
                    0,
                    300,
                    0
                ],
                [
                    300,
                    0,
                    0
                ],
                [
                    0,
                    0,
                    0
                ]
            ]
        }
    }
}
{
    "code": 0,
    "summary": {
        "cost": 300,
        "routes": 1,
        "unassigned": 0,
        "setup": 0,
        "service": 10,
        "duration": 300,
        "waiting_time": 0,
        "priority": 0,
        "violations": [],
        "computing_times": {
            "loading": 0,
            "solving": 1,
            "routing": 0
        }
    },
    "unassigned": [],
    "routes": [
        {
            "vehicle": 1,
            "cost": 300,
            "description": "vehicle",
            "setup": 0,
            "service": 10,
            "duration": 300,
            "waiting_time": 0,
            "priority": 0,
            "steps": [
                {
                    "type": "start",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 0,
                    "setup": 0,
                    "service": 0,
                    "waiting_time": 0,
                    "arrival": 0,
                    "duration": 0,
                    "violations": []
                },
                {
                    "type": "pickup",
                    "description": "pickup",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 0,
                    "id": 1,
                    "setup": 0,
                    "service": 5,
                    "waiting_time": 0,
                    "job": 1,
                    "arrival": 0,
                    "duration": 0,
                    "violations": []
                },
                {
                    "type": "delivery",
                    "description": "delivery",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 1,
                    "id": 2,
                    "setup": 0,
                    "service": 5,
                    "waiting_time": 0,
                    "job": 2,
                    "arrival": 305,
                    "duration": 300,
                    "violations": []
                },
                {
                    "type": "end",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 2,
                    "setup": 0,
                    "service": 0,
                    "waiting_time": 0,
                    "arrival": 310,
                    "duration": 300,
                    "violations": []
                }
            ],
            "violations": []
        }
    ]
}
  1. Same as the first request except with two jobs instead of a shipment. The stops are assigned to the vehicle.
{
    "vehicles": [
        {
            "description": "vehicle",
            "id": 1,
            "end_index": 2,
            "time_window": [
                0,
                7200
            ],
            "breaks": [
                {
                    "id": 1,
                    "description": "break",
                    "time_windows": [
                        [
                            6800,
                            6800
                        ]
                    ],
                    "service": 300
                }
            ],
            "end": [
                0,
                0
            ]
        }
    ],
    "jobs": [
        {
            "id": 1,
            "description": "job",
            "location_index": 0,
            "service": 5,
            "time_windows": [
                [
                    0,
                    3600
                ]
            ],
            "location": [
                0,
                0
            ]
        },
        {
            "id": 2,
            "description": "job",
            "location_index": 1,
            "service": 5,
            "time_windows": [
                [
                    0,
                    3600
                ]
            ],
            "location": [
                0,
                0
            ]
        }
    ],
    "matrices": {
        "car": {
            "durations": [
                [
                    0,
                    300,
                    0
                ],
                [
                    300,
                    0,
                    0
                ],
                [
                    0,
                    0,
                    0
                ]
            ]
        }
    }
}
{
    "code": 0,
    "summary": {
        "cost": 300,
        "routes": 1,
        "unassigned": 0,
        "setup": 0,
        "service": 310,
        "duration": 300,
        "waiting_time": 3195,
        "priority": 0,
        "violations": [],
        "computing_times": {
            "loading": 0,
            "solving": 1,
            "routing": 0
        }
    },
    "unassigned": [],
    "routes": [
        {
            "vehicle": 1,
            "cost": 300,
            "description": "vehicle",
            "setup": 0,
            "service": 310,
            "duration": 300,
            "waiting_time": 3195,
            "priority": 0,
            "steps": [
                {
                    "type": "start",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 1,
                    "setup": 0,
                    "service": 0,
                    "waiting_time": 0,
                    "arrival": 3295,
                    "duration": 0,
                    "violations": []
                },
                {
                    "type": "job",
                    "description": "job",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 1,
                    "id": 2,
                    "setup": 0,
                    "service": 5,
                    "waiting_time": 0,
                    "job": 2,
                    "arrival": 3295,
                    "duration": 0,
                    "violations": []
                },
                {
                    "type": "job",
                    "description": "job",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 0,
                    "id": 1,
                    "setup": 0,
                    "service": 5,
                    "waiting_time": 0,
                    "job": 1,
                    "arrival": 3600,
                    "duration": 300,
                    "violations": []
                },
                {
                    "type": "break",
                    "description": "break",
                    "id": 1,
                    "setup": 0,
                    "service": 300,
                    "waiting_time": 3195,
                    "arrival": 3605,
                    "duration": 300,
                    "violations": []
                },
                {
                    "type": "end",
                    "location": [
                        0.0,
                        0.0
                    ],
                    "location_index": 2,
                    "setup": 0,
                    "service": 0,
                    "waiting_time": 0,
                    "arrival": 7100,
                    "duration": 300,
                    "violations": []
                }
            ],
            "violations": []
        }
    ]
}

Also, the demo server (http://solver.vroom-project.org) actually does assign the stops for the first request. Is it running v1.15.0?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions