I have a model of Tokyo to examine Ridesharing autonomous vehicles and how they may interact with transit. I am using the Discrete Choice Model module for my mode choice as seen below. I am also defining a few access modes: walk to rail, robotaxi(drt) to rail, and finally, bike-to-rail. The relevant parts of the config file are posted below. It seems that the module is able to score the walk and drt at a reasonable mode ratio, however it is overestimates the bike to rail acccess mode choice. I am having difficulty to determine what parameter I should change to calibrate the SwissRailRaptor mode choice, and I hope someone can guide me to the relevant code or config file section.
So far I have tried to change the RaptorParameter: marginalUtilityOfWaitingPt_utl_s in the config file and through my main method but have not seen results. these code changes are below. If anyone could suggest the way forward it would be greatly appreciated
<!-- This module is dedicated to configuring the multi-modal DRT (Demand Responsive Transport). -->
<module name="multiModeDrt">
<parameterset type="drt">
<!-- The search strategy for finding a vehicle for a DRT request. -->
<parameterset type="ExtensiveInsertionSearch"/>
<!-- The duration of a stop in seconds. This is the time a vehicle waits at a stop. -->
<param name="stopDuration" value="60"/>
<!-- Operational Scheme, either of door2door, stopbased or serviceAreaBased. door2door by default -->
<param name="operationalScheme" value="serviceAreaBased"/>
<!-- Maximum wait time in seconds before being picked up by a DRT vehicle. -->
<param name="maxWaitTime" value="600"/>
<!-- Alpha parameter for max travel time estimation. Used to increase the travel time estimation based on direct travel time. -->
<param name="maxTravelTimeAlpha" value="3.0"/>
<!-- Beta parameter for max travel time estimation. This value in seconds will be added to the estimated travel time. -->
<param name="maxTravelTimeBeta" value="1200"/>
<param name="drtServiceAreaShapeFile" value="Shapefiles/EntireOdakyuCorridorUTM54N.shp"/>
<param name="vehiclesFile" value="outputdrts0S4(200).xml"/>
<parameterset type="zonalSystem">
<!-- Specifies how the zones are generated. Here, it's based on a grid derived from the network. -->
<param name="zonesGeneration" value="ShapeFile"/>
<!-- The cell size of the grid in meters. This defines the size of each zone in the zonal system. -->
<param name="cellSize" value="100"/>
<param name="zonesShapeFile" value="Shapefiles/EntireOdakyuCorridorUTM54N.shp"/>
</parameterset>
<parameterset type="rebalancing">
<!-- Uses the min-cost flow rebalancing strategy. -->
<parameterset type="minCostFlowRebalancingStrategy">
<!-- Target alpha value for the rebalancing strategy. -->
<param name="targetAlpha" value="0.5"/>
<!-- Target beta value for the rebalancing strategy. -->
<param name="targetBeta" value="0.5"/>
</parameterset>
</parameterset>
<parameterset type="drtfare">
<!-- Base fare for a DRT trip. -->
<param name="basefare" value="0.0"/>
<!-- Daily subscription fee for using the DRT service. -->
<param name="dailySubscriptionFee" value="0.0"/>
<!-- Fare per meter of travel. -->
<param name="distanceFare_m" value="0.05"/>
<!-- Fare per hour of travel. -->
<param name="timeFare_h" value="0"/>
<!-- Minimum fare charged per DRT trip. -->
<param name="minFarePerTrip" value="0.50"/>
</parameterset>
</parameterset>
</module>
<module name="swissRailRaptor" >
<!-- Sets whether intermodal access and egress modes are selected by least cost (default) or randomly chosen out of the available access / egress modes. -->
<param name="intermodalAccessEgressModeSelection" value="CalcLeastCostModePerStop" />
<param name="useIntermodalAccessEgress" value="true" />
<param name="useRangeQuery" value="true" />
<param name="scoringParameters" value="Default" />
<param name="transferPenaltyBaseCost" value="200" />
<param name="transferPenaltyCostPerTravelTimeHour" value="200" />
<param name="transferPenaltyMaxCost" value="700" />
<param name="transferPenaltyMinCost" value="130" />
<param name="useModeMappingForPassengers" value="true" />
<!-- The configuration for walking as access/egress mode. -->
<parameterset type="intermodalAccessEgress" >
<!-- Initial distance around a person's origin or destination within which transit stops are looked for. -->
<param name="initialSearchRadius" value="1500.0" />
<!-- Maximum distance a person is willing to walk to/from a transit stop. -->
<param name="maxRadius" value="2500.0" />
<!-- If less than 2 transit stops are found within the initial search radius,
this value is added to the initial radius iteratively until transit stops are found or maxRadius is reached. -->
<param name="searchExtensionRadius" value="500.0" />
<!-- mode of transport for this parameterset is walking. -->
<param name="mode" value="walk" />
</parameterset>
<parameterset type="intermodalAccessEgress" >
<!-- Initial distance around a person's origin or destination within which transit stops are looked for. -->
<param name="initialSearchRadius" value="1500.0" />
<!-- Maximum distance a person is willing to walk to/from a transit stop. -->
<param name="maxRadius" value="2500.0" />
<!-- If less than 2 transit stops are found within the initial search radius,
this value is added to the initial radius iteratively until transit stops are found or maxRadius is reached. -->
<param name="searchExtensionRadius" value="500.0" />
<!-- mode of transport for this parameterset is walking. -->
<param name="mode" value="bike" />
</parameterset>
<!-- <parameterset type="intermodalAccessEgress" >-->
<!-- <!– Initial distance around a person's origin or destination within which transit stops are looked for. –>-->
<!-- <param name="initialSearchRadius" value="1500.0" />-->
<!-- <!– Maximum distance a person is willing to walk to/from a transit stop. –>-->
<!-- <param name="maxRadius" value="2500.0" />-->
<!-- <!– If less than 2 transit stops are found within the initial search radius,-->
<!-- this value is added to the initial radius iteratively until transit stops are found or maxRadius is reached. –>-->
<!-- <param name="searchExtensionRadius" value="500.0" />-->
<!-- <!– mode of transport for this parameterset is walking. –>-->
<!-- <param name="mode" value="ride" />-->
<!-- </parameterset>-->
<!-- The configuration for DRT as access/egress mode. -->
<parameterset type="intermodalAccessEgress" >
<param name="mode" value="drt" />
<!-- Initial distance around a person's origin or destination within which transit stops are looked for when using DRT. -->
<param name="initialSearchRadius" value="3000.0" />
<!-- If specific link IDs are to be used for DRT, they would be specified by an attribute.
In this case, no such attribute is set (null). -->
<param name="linkIdAttribute" value="null" />
<!-- Maximum distance a person is willing to travel using DRT to/from a transit stop. -->
<param name="maxRadius" value="4000.0" />
<!-- Specific agent attributes considered for DRT access/egress. -->
<param name="personFilterAttribute" value="null" />
<param name="personFilterValue" value="null" />
<!-- Similar to walking, if fewer transit stops are found,
this value is added to the initial radius until stops are found or maxRadius is reached. -->
<param name="searchExtensionRadius" value="3000.0" />
<!-- If sharing of DRT vehicles is considered, this defines the maximum search radius for potential ride-sharing opportunities.
Here, it's set to infinity, meaning there's no limit. -->
<param name="shareTripSearchRadius" value="Infinity" />
<!-- If transit stops are filtered based on specific attributes, those would be defined here.
In this case, no such attributes are set. -->
<param name="stopFilterAttribute" value="null" />
<param name="stopFilterValue" value="null" />
</parameterset>
<parameterset type="rangeQuerySettings" >
<param name="maxEarlierDeparture_sec" value="300" />
<param name="maxLaterDeparture_sec" value="300" />
</parameterset>
<parameterset type="routeSelector" >
<param name="betaDepartureTime" value="0.0" />
<param name="betaTransferCount" value="3000.0" />
<param name="betaTravelTime" value="1" />
<param name="subpopulations" value="" />
</parameterset>
<parameterset type="modeMapping">
<param name="routeMode" value="local" />
<param name="passengerMode" value="pt" />
</parameterset>
<parameterset type="modeMapping">
<param name="routeMode" value="express" />
<param name="passengerMode" value="pt" />
</parameterset>
</module>
<module name="DiscreteModeChoice">
<param name="modelType" value="Tour" />
<param name="selector" value="MultinomialLogit" />
<param name="tourConstraints" value="VehicleContinuity,SubtourMode" />
<param name="tourFinder" value="PlanBased" />
<param name="tripEstimator" value="NasirEstimatorName" />
<param name="tourEstimator" value="Cumulative" />
<parameterset type="modeAvailability:Car">
<param name="availableModes" value="pt, car, walk, bike, drt" />
</parameterset>
</module>
config = ConfigUtils.loadConfig( "examples/scenarios/Odakyu4/configSAVnoride.xml", new MultiModeDrtConfigGroup(),
new DvrpConfigGroup(), new OTFVisConfigGroup(),new DiscreteModeChoiceConfigGroup());
config.controler().setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists );
config.controler().setOutputDirectory("examples/scenarios/Odakyu4/outputDec14(200)NewUtil-1seatSAV");
// possibly modify config here
config.qsim().setSimStarttimeInterpretation(QSimConfigGroup.StarttimeInterpretation.onlyUseStarttime);
config.qsim().setSimEndtimeInterpretation((QSimConfigGroup.EndtimeInterpretation.onlyUseEndtime));
// Create an instance of RaptorParameters
SwissRailRaptorConfigGroup raptorConfig = (SwissRailRaptorConfigGroup) config.getModules().get("raptor");
RaptorParameters raptorParameters = new RaptorParameters(raptorConfig);
// Set the marginal utility of travel time for different travel modes
raptorParameters.setMarginalUtilityOfTravelTime_utl_s("bike", -50);
Controler controller = DrtControlerCreator.createControler(config, false);
// Add Discrete Choice Module
controller.addOverridingModule(new DiscreteModeChoiceModule());
controller.addOverridingModule(new NasirSAVDMCExtension());
DiscreteModeChoiceConfigurator.configureAsModeChoiceInTheLoop(config);
// Run the simulation
controller.run();
Hello there,
I have a model of Tokyo to examine Ridesharing autonomous vehicles and how they may interact with transit. I am using the Discrete Choice Model module for my mode choice as seen below. I am also defining a few access modes: walk to rail, robotaxi(drt) to rail, and finally, bike-to-rail. The relevant parts of the config file are posted below. It seems that the module is able to score the walk and drt at a reasonable mode ratio, however it is overestimates the bike to rail acccess mode choice. I am having difficulty to determine what parameter I should change to calibrate the SwissRailRaptor mode choice, and I hope someone can guide me to the relevant code or config file section.
So far I have tried to change the RaptorParameter: marginalUtilityOfWaitingPt_utl_s in the config file and through my main method but have not seen results. these code changes are below. If anyone could suggest the way forward it would be greatly appreciated