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: drt now supported by default in the core module #185

Merged
merged 11 commits into from
Jan 17, 2024
Merged

Conversation

tkchouaki
Copy link
Collaborator

The objective of this PR is to natively support DRT in Eqasim. By making use of the recent developments that allow optional modules to be defined in EqasimConfigurator and its subclasses, the DRT module and related functionalities are activated when a MultiModeDrtConfigGroup is detected.

This implementation is compatible with the presence of various DRT modes running simultaneously.

As for the mode choice, besides extending the ModeParameters class with DrtParameters, the following base components are added

  • a DrtWalkConstraint that prevents drt trips with walk legs only from being selected by the mode choice model
  • a DrtVariables class comprising the wait, access, travel and egress times as well ass the euclidean distance and the monetary cost of the trip
  • a DrtPredictor interface and a DefaultDrtPredictor implementation class.
  • a DrtUtilityEstimator using the ModeParameters and the DrtPredictor.

Functionality for DRT analysis is also included.

Moreover, two scripts are present to ease the building of drt scenarios

  • CreateDrtVehicles to create a drt_vehicles.xml file with a certain number of vehicles distributed randomly on the road network.
  • AdaptConfigForDrt to convert a regular config file to one well adapted for running drt with Eqasim by making sure that:
    • The drt modes are added to the set of cached modes
    • The DrtWalkConstraint is added to the set of verified trip constaints
    • The cost models and utility estimators are properly set (as provided or the default ones if not)
    • The QSim start time interpretation and end time interpretation are set correctly
    • Default parameters for max wait time, detour factor, rebalancing, insertion search, and zonal system are also set

This functionality for creating a DRT scenario and then running it is tested.

In order to use it in one of the use case modules, users can follow an approach analogous to the one present in the related unit test. The minimum requirement consists of a ModeAvailability that allows the agents to use DRT mode. The other mode choice components should be extended if needed.

Alongside the functionality for DRT, this PR also includes the replacing of EqasimMainModeIdentifier by RoutingModeMainModeIdentifier as mentioned in #184.

@tkchouaki tkchouaki requested a review from sebhoerl December 16, 2023 21:54
Tarek Chouaki and others added 2 commits December 17, 2023 11:11
…core

# Conflicts:
#	ile_de_france/src/test/java/org/eqasim/ile_de_france/TestCorisica.java
@sebhoerl sebhoerl changed the title DRT now supported by default in the core module feat: drt now supported by default in the core module Dec 19, 2023
Tarek Chouaki added 4 commits December 19, 2023 18:58
…_core

# Conflicts:
#	ile_de_france/src/test/java/org/eqasim/ile_de_france/TestCorisica.java
…core

# Conflicts:
#	core/src/test/java/org/eqasim/TestSimulationPipeline.java
@tkchouaki tkchouaki merged commit 4b87117 into develop Jan 17, 2024
1 check passed
@tkchouaki tkchouaki deleted the drt_core branch January 17, 2024 11:29
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.

2 participants