Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Helicopter problem: how to manage optimally demands larger than capacities of transportation units #1808

Closed
SebastienP385 opened this issue Dec 26, 2019 · 6 comments
Assignees
Labels
Duplicate Help Needed Modeling/Usage problem Solver: Routing Uses the Routing library and the original CP solver
Milestone

Comments

@SebastienP385
Copy link

SebastienP385 commented Dec 26, 2019

Hi!

I have had a lot of pleasure using OR-tools, on a pick up and delivery case, to which I added capacity constraints, to model a set of helicopters routes serving multiple stations.
This is what I found and where I need some help:

let's assume I have 23 passengers going from Point A to Point B, using choppers with capacity of 15 (and 5 passengers from Point B to C, etc...)
OR-tools optimal solution is calculated on a demand between A to B. If I set up 23, it does not work because of the constraint. If I put 15+8 (to force 2 choppers to handle the load), it works, but the result might be less optimum than let's say 13+10. I might also have to combine this with a split of the 5 passengers from B to C into 3+2 or 4+1. This leads to more optimal routings, and is realistic as overall I manage 5-9 flights a day, between circa 15 stations, in the current test case.
I currently manage this search of the optimal 'demand splits' via a search algorithm on top of OR tool (genetic search does not work super well, so it is a sort of random search at the end).
Would there be a way to have OR tool calculating the optimal splits/distribution of demand batches?

NB: I have tried to create a lot of sub-demands, let's says 23 individuals demands to go from point A to point B. The drawback is that I have to create 23 pseudo-nodes A, and 23 pseudo-nodes B: this leads to an explosion in the number of nodes, and in calculation time.
I have tried also fancy methods like : 23 = 1+2+3+6+11, to give the chance to OR tool to find the right combination of 2-3 flights. It did not bring as good results as the search, and takes a lot of time. The inconvenient of the search is that it is not very repeatable.

Thanks a lot in advance, and happy (prep of the ) new year 2020!

@SebastienP385 SebastienP385 changed the title Helicopter problem Helicopter problem: how to manage optimally demands larger than capacities of transportation units Dec 27, 2019
@hklarner
Copy link

I have tried to create a lot of sub-demands, let's says 23 individuals demands to go from point A to point B

I think this is the way to go.

@Mizux Mizux added Help Needed Modeling/Usage problem Solver: Routing Uses the Routing library and the original CP solver Duplicate labels Jan 15, 2020
@Mizux
Copy link
Collaborator

Mizux commented Jan 15, 2020

At its core or-tools routing is a TSP meaning only visit a node once, so auto splitting is not a built-in/supported feature unfortunately... :(

note: there is already few issues on the same subject (#938, #689, #630, #1246, #1323)

@Mizux Mizux closed this as completed Jan 15, 2020
@Mizux Mizux added this to the v7.5 milestone Jan 15, 2020
@nag96
Copy link

nag96 commented Jun 14, 2020

Hi Sebastien,

Can you please share the code of how you're achieving splitting demand to sub-demands where the capacity is breached. I'm working on a problem related to this. Please help!

Thanks in advance.

@Mizux Mizux self-assigned this Oct 26, 2020
@glazaridis
Copy link

Hi Sebastien,

Can you please share the code of how you're achieving splitting demand to sub-demands where the capacity is breached. I'm working on a problem related to this. Please help!

Thanks in advance.

Any news on that?

@nag96
Copy link

nag96 commented Jan 7, 2021 via email

@lperron
Copy link
Collaborator

lperron commented Jan 7, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Duplicate Help Needed Modeling/Usage problem Solver: Routing Uses the Routing library and the original CP solver
Projects
None yet
Development

No branches or pull requests

6 participants