-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
Illegal avoiding of congestions on motorways (Preventing dive-bombs) #5244
Comments
But in some region drivers like this behavior to avoid congestion, e.g. CN. So it's better to consider this feature also with an option or switch to enable/disable it. |
seems like a bit of a grey area. a driver might have valid reasons for taking the off-ramp, but changing his/her mind. the treshold for what length of detour is allowed also seems a bit arbitrary. maybe another approach could be to penalizy entry into a motorway with a low traffic speeds. typically a low speed indicates congestion, meaning it's inconvenient to enter. |
we're tried this tweaking - but it's no real fix unfortunately. Setting the right parameter is also tricky, because if the penalty is too high, weird detours can happen 😞 |
This issue seems to be stale. It will be closed in 30 days if no further activity occurs. |
This issue seems to be stale. It will be closed in 30 days if no further activity occurs. |
Issue
With
osrm-backend
's option to digest traffic updates and thus congestion information, it is possible that motorways have a very low speed that is even lower than the speed on off- and on-ramps.One phenomenon visible in such cases are routes that avoid staying on a motorway and driving around congestion by taking the off-ramp and taking the next on-ramp immediately.
This driving behaviour of taking advantage of on/off-ramps when traffic is present, is very asocial and in many regions/countries even illegal. OSRM should not offer these routes even though (from a routing engine's perspective) they seem to be the shortest path.
I will refer to these kinds of routes as
dive-bombs
from now on (lending the term from here)Proposal
I have two proposals (sketched up together with @oxidase). There is also an interesting related paper by Daniel Delling, Dennis Schieferdecker and Christian Sommer http://sommer.jp/trafficrouting.pdf
These are notes jotted down for the future. Any other ideas and brainstorms are highly appreciated!
For OSRM I see two options:
Divebombfree traffic updates
The idea of dive-bombfree traffic updates is that whenever we update traffic data, we make sure that the weight of a dive-bomb is never faster than the weight of staying on a highway.

Using the example above it means, that even though the duration of staying on a highway is 10min, we set its weight to 3min so that the dive-bomb is not faster:
How would we implement it?
In preprocessing, we look at

motorways
and identify ways that could potentially be dive-bombed and remember them:Now, every time we update traffic, we check whether one of the dive-bombable edges were updated.
If they were updated, we check what the shortest path from the start and the end of a dive-bombable way is. If the shortest path is a dive-bomb 💣, we will adjust the weight of the dive-bombable way in such a way, that its weight is smaller than the dive-bomb.
This ensures that every time when traffic data is updated, no dive-bomb is introduced
Challenges:
Multiple via way restrictions
The keyword multiple via way restrictions has been a hot topic for a while. Here is how we could implement something like a multiple via way restriction to prevent dive-bombs:
This is our dive-bomb prone geometry:

When this graph is turned into an edge based graph, we generate following turn edges:

The maneouver, that we want to prevent is the following:

We can forbid this turn during the edge-based-graph generation:
Steps necessary for this would be
Challenges
Opportunities
The text was updated successfully, but these errors were encountered: