On Wed, Jan 21, 2015, at 10:29, Laurent Gregoire wrote:
> By removing do you mean removing or deprecating the code or just
> making it a non-default option?
At the highest level, all I want to do is remove the --longDistance
switch, always precompute transfers when building a graph, and not force
the person deploying OTP to choose between two server-wide "modes" when
starting up the server. It would perhaps be more accurate to say I want
to merge all the search techniques, keeping the more successful ideas
from LD mode active when transit routing is selected.
I was planning to remove the path services other than LD, and then
eliminate the concept of pluggable path services entirely. This
abstraction was already present so we used it to try out some
experimental search techniques, but the interface and multiple alternate
implementations belie the simplicity of what we're really doing here:
just enabling or disabling a couple blocks of logic farther down in the
call stack (a goal-direction heuristic or the comparison function used
when building an SPT). That can be done in a much more readable,
maintainable way with a couple of booleans and conditional blocks.
There's no clear reason to modify behavior globally by plugging together
application components at startup time, that's simply a relic of Spring.
> The classic mode allows hybrid transit / bike share trip plans (bike
> share at the start, end or middle of a journey).
Note that I do not intend to keep LD mode exactly as it currently is.
The restriction of the on-street searches via the heuristic and the path
parser was just a way to let the classic and LD systems coexist while we
were experimenting. It is really quite an arcane way to impose the LD
constraints on our stock SPT-generator class.
Once we unify the search techniques, we could actually perform the
access-to-transit and egress-from-transit searches separately, saving
the on-street paths that successfully reach transit stops before ever
beginning the on-transit part of the search. It will avoid repeating the
destination-zone search for every path, and would would make it quite
efficient to use any mode (including rental/parking variations) at the
beginning or end of the trip.
> I'm wondering if it would be possible to include it in the
> middle?
We will still have a code path that runs a simple forward search
disabling the special LD mode heuristic. This is essential for
single-mode bike or driving requests, as well as one-to-many searches.
This same logic with precomputed transfers disabled would conceivably
allow bike transfers mid-route.
The use of precomputed transfers, origin/destination street searches
before ever entering transit, and the transit-friendly reverse heuristic
would all be independently switchable ingredients rather than a
prepackaged "mode" that requires rebuilding the graph and restarting the
server with a different configuration.
Note however that major users of OTP have clearly stated that they and
their users perceive mid-trip bike transfers as a bug, and it's faster
to use precomputed transfers, so I'm thinking it should be diabled by
default.
> We may also want to keep bike P+R, "OV-fiets" modes and various
> other bike+transit combinations, we have to make sure they are
> compatible with the long distance mode.
We absolutely want to keep these modes: they are among the most valuable
features of OTP. I would even say one of the main motivations for
switching entirely to LD mode is to ensure that all these new modes can
be used efficiently both before and after transit.
-Andrew