Perform services without locations in route towards the next service

Hello,

I’m trying to solve a TSP planned weekly, meaning that I only want to specify my starting location for the week and finish location. The days
in between I don’t care where I finish the day, just that it is optimal.
I’ve tried using the shifts approach, but I couldn’t guarantee that the finish location of a shift would the starting location of the next one.
I’m trying to solve this with a single vehicle, where I’m creating the breaks (lunch and finish day - ex: Monday 5PM to Tuesday 9AM - ) as suggested
in this post and implemented in this pull request

The issue that I found is that while the vehicle waits for the break, it doesn’t drive towards the next service with a specified location.
This can create a lot of downtime that ideally could be avoided.

I’ve made a scenario that shows this:

{"vehicles":[{"vehicle_id":"Vehicle_1","type_id":"car","earliest_start":1643621400,"latest_end":1643995800,"return_to_depot":false,"start_address":{"location_id":"start","lon":-9.2335338,"lat":51.8483623}}],"vehicle_types":[{"type_id":"car","profile":"car","consider_traffic":true}],"services":[{"id":"14","name":"RigBag","address":{"location_id":"124_139","lon":-9.6694279,"lat":52.2866425},"duration":5400,"time_windows":[{"earliest":1643619600,"latest":1643630400},{"earliest":1643637600,"latest":1643650200},{"earliest":1643706000,"latest":1643716800},{"earliest":1643724000,"latest":1643736600},{"earliest":1643792400,"latest":1643803200},{"earliest":1643810400,"latest":1643823000},{"earliest":1643878800,"latest":1643889600},{"earliest":1643896800,"latest":1643909400},{"earliest":1643965200,"latest":1643976000},{"earliest":1643983200,"latest":1643995800}],"priority":1},{"id":"12","name":"Tweak","address":{"location_id":"124_19","lon":-9.6675299,"lat":52.2880528},"duration":1800,"time_windows":[{"earliest":1643619600,"latest":1643630400},{"earliest":1643637600,"latest":1643650200},{"earliest":1643706000,"latest":1643716800},{"earliest":1643724000,"latest":1643736600},{"earliest":1643792400,"latest":1643803200},{"earliest":1643810400,"latest":1643823000},{"earliest":1643878800,"latest":1643889600},{"earliest":1643896800,"latest":1643909400},{"earliest":1643965200,"latest":1643976000},{"earliest":1643983200,"latest":1643995800}],"priority":1},{"id":"15","name":"Instant Opinion","address":{"location_id":"124_116","lon":-7.2513829,"lat":52.6495409},"duration":1800,"time_windows":[{"earliest":1643619600,"latest":1643630400},{"earliest":1643637600,"latest":1643650200},{"earliest":1643706000,"latest":1643716800},{"earliest":1643724000,"latest":1643736600},{"earliest":1643792400,"latest":1643803200},{"earliest":1643810400,"latest":1643823000},{"earliest":1643878800,"latest":1643889600},{"earliest":1643896800,"latest":1643909400},{"earliest":1643965200,"latest":1643976000},{"earliest":1643983200,"latest":1643995800}],"priority":1},{"id":"1","name":"lunch-shift_1","duration":7200,"time_windows":[{"earliest":1643630400,"latest":1643637600}],"priority":1},{"id":"2","name":"lunch-shift_2","duration":7200,"time_windows":[{"earliest":1643716800,"latest":1643724000}],"priority":1},{"id":"day_end_1","name":"day_end_1","duration":55800,"time_windows":[{"earliest":1643650200,"latest":1643650201}]}],"configuration":{"routing":{"calc_points":true,"consider_traffic":true,"network_data_provider":"tomtom","return_snapped_waypoints":false}},"objectives":[{"type":"min","value":"vehicles"},{"type":"min","value":"completion_time"}]}

Maybe I’m not defining the problem correctly, but I couldn’t find an alternative.
Any help would be appreciated

Powered by Discourse