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

Illegal avoiding of congestions on motorways (Preventing dive-bombs) #5244

Open
chaupow opened this issue Oct 22, 2018 · 5 comments
Open

Illegal avoiding of congestions on motorways (Preventing dive-bombs) #5244

chaupow opened this issue Oct 22, 2018 · 5 comments

Comments

@chaupow
Copy link
Member

chaupow commented Oct 22, 2018

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:

  1. make sure traffic updates do not introduce dive-bombs by having only dive-bombfree traffic updates OR
  2. change the graph structure such that dive-bombs are not possible anymore with multiple via way restrictions

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:
motorway copy

How would we implement it?

In preprocessing, we look at motorways and identify ways that could potentially be dive-bombed and remember them:
dive-bombable copy

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:

  • is this fast enough during traffic update?
  • what happens when we update the dive-bomb weights but not the dive-bombable way?
  • what happens if the dive-bombable way consists of multiple edges?
  • can this lead to a weird inconsistent state of weights?

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:
motorway copy 3

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

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

We can forbid this turn during the edge-based-graph generation:

  1. we do no create the turn edge that exits the motorway and goes on to the ramp
  2. we additionally create a shortcut edge from the highway to all possible exits but not back to the same highway directly - the shortcut does not use the off-ramp

motorway copy 6

  • The geometry of the shortcut is the geometry of taking the off-ramp and using the exit
  • dive-bomb is prevented because there is no shortcut from the motorway and on the motorway again
  • rerouting onto the highway is still possible because the original graph is still there, we only delete the turn-edge

Steps necessary for this would be

  1. identifying dive-bombs in preprocessing
  2. implementing short-cut turn edges that represents the geometry of multiple edges

Challenges

  • how do we implement shortcut edges?
  • how do we implement shortcut edges?
  • how do we implement shortcut edges?

Opportunities

  • Multiple via-way restrictions is maybe something we want anyways. They could be implemented the same way, if we generalize the process
  • in any case, multiple via-way-restrictions probably would need shortcuts that represent a sequence of edges anyways, implementing a dive-bomb preventer using this approach could unlock a blocker for multiple via-way restrictions
@chaupow chaupow changed the title Bypassing congestions on motorways (Preventing dive-bombs) Illegal avoiding of congestions on motorways (Preventing dive-bombs) Oct 22, 2018
@wangyoucao577
Copy link
Contributor

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.

@emiltin
Copy link
Contributor

emiltin commented Oct 23, 2018

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.

@chaupow
Copy link
Member Author

chaupow commented Nov 13, 2018

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 😞

Copy link

github-actions bot commented Jul 8, 2024

This issue seems to be stale. It will be closed in 30 days if no further activity occurs.

@github-actions github-actions bot added the Stale label Jul 8, 2024
@1ec5 1ec5 removed the Stale label Jul 9, 2024
Copy link

github-actions bot commented Jan 6, 2025

This issue seems to be stale. It will be closed in 30 days if no further activity occurs.

@github-actions github-actions bot added the Stale label Jan 6, 2025
@1ec5 1ec5 removed the Stale label Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants