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

Feat: [FeederDrt] a more flexible structure for access and egress stop selection #258

Merged
merged 5 commits into from
Sep 23, 2024

Conversation

tkchouaki
Copy link
Collaborator

This PR relates to the FeederDrt feature present in eqasim-java.

Previously, the selection of access and egress transit stops in an intermodal route betweeen PT and DRT included both identifying the possible stops and the selection criteria.

In this PR, we distinguish between the two by having two separate interfaces. Now, the FeederDrtRouting module takes both an AccessEgressStopSearch and an AccessEgressStopSelector. The former is in charge of identifying the possible transit stops, and the second for selecting among them.

Now, we have three implementations of AccessEgressStopSearch:

  • The first is TransitStopByModeAccessEgressStopSearch, allowing to filter transit stops by the modes of the transit routes they are located on. Also permits to filter only the ones that are inside a certain area given a shapefile.
  • The second is TransitStopByIdAccessEgressStopSearch, allowing to directly specify transit stops by their IDs
  • The third is CompositeAccessEgressStopSearch. This one allows to combine multiple AccessEgressStopSearch strategies into one. This allows to easily build simulations where we allow intermodality at all train stops and a few bus stops determined by their IDs. Or allowing all train stops of a given city, plus all subway stops of another city...

Now, The XML looks like this:

<module name="multiModeFeederDrt" >
    <!-- Whether or not to perform the analysis for feeder drt services. If set to true, will follow the analysis interval specified in the configuration of the eqasim module -->
    <param name="performAnalysis" value="true" />
    <parameterset type="feederDrt" >
        <!-- The name of the drt mode to use for access and egress segments -->
        <param name="accessEgressModeName" value="drt_for_feeder_b" />
        <!-- Possible values: CLOSEST -->
        <param name="accessEgressStopSelection" value="CLOSEST" />
        <!-- Mode which will be handled by PassengerEngine and VrpOptimizer (passengers'/customers' perspective) -->
        <param name="mode" value="feeder_b" />
        <!-- The name by which the pt mode is known to the agents. Most usually pt -->
        <param name="ptModeName" value="pt" />
        <!-- A regex that if matches with the from facility id (resp to facility id) will result in an access (resp egress) drt leg not being constructed. Leave empty to consider access and egress segments at all times -->
        <param name="skipAccessAndEgressAtFacilities" value="^outside*+" />
        <parameterset type="CompositeAccessEgressStopSearchParameterSet" >
            <parameterset type="TransitStopByIdAccessEgressStopSearch" >
                <param name="ids" value="IDFM:482345.link:305887,IDFM:31170.link:618272,IDFM:462597.link:511974" />
            </parameterset>
            <parameterset type="TransitStopByModeAccessEgressStopSearch" >
                <!-- Comma separated list of PT transit modes (rail, bus...) where intermodality can happen, leave empty to allow intermodality everywhere -->
                <param name="accessEgressTransitStopModes" value="rail,tram,subway" />
            </parameterset>
        </parameterset>
    </parameterset>
    <parameterset type="feederDrt" >
        <param name="accessEgressModeName" value="drt_for_feeder_a" />
        <param name="accessEgressStopSelection" value="CLOSEST" />
        <param name="mode" value="feeder_a" />
        <param name="ptModeName" value="pt" />
        <param name="skipAccessAndEgressAtFacilities" value="^outside*+" />
        <parameterset type="CompositeAccessEgressStopSearchParameterSet" >
            <parameterset type="TransitStopByIdAccessEgressStopSearch" >
                <param name="ids" value="IDFM:482345.link:305887,IDFM:31170.link:618272,IDFM:462597.link:511974" />
            </parameterset>
            <parameterset type="TransitStopByModeAccessEgressStopSearch" >
                <param name="accessEgressTransitStopModes" value="rail,tram,subway" />
            </parameterset>
        </parameterset>
    </parameterset>
</module>

The documentation entry for this functionality has been updated according to the changes introduced by this PR.

@tkchouaki tkchouaki merged commit 83a53fe into develop Sep 23, 2024
1 check passed
@tkchouaki tkchouaki deleted the feeder_drt_selector branch September 23, 2024 12:08
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

Successfully merging this pull request may close these issues.

1 participant