public TimeDiscretizer(TravelTimeCalculatorConfigGroup ttcConfig) { this(ttcConfig.getMaxTime(), ttcConfig.getTraveltimeBinSize(), Type.OPEN_ENDED); }
public TravelTimeCalculator(final Network network, TravelTimeCalculatorConfigGroup ttconfigGroup) { this(network, ttconfigGroup.getTraveltimeBinSize(), ttconfigGroup.getMaxTime(), ttconfigGroup); }
public DvrpOfflineTravelTimeEstimator(TravelTime initialTT, TravelTime observedTT, Network network, TravelTimeCalculatorConfigGroup ttCalcConfig, double travelTimeEstimationAlpha) { this.observedTT = observedTT; this.network = network; alpha = travelTimeEstimationAlpha; if (alpha > 1 || alpha <= 0) { throw new IllegalArgumentException("travelTimeEstimationAlpha must be in (0,1]"); } interval = ttCalcConfig.getTraveltimeBinSize(); intervalCount = TimeBinUtils.getTimeBinCount(ttCalcConfig.getMaxTime(), interval); linkTTs = Maps.newHashMapWithExpectedSize(network.getLinks().size()); init(initialTT); }
private int getIntervalNr(double time) { double timeBinSize = congestionInfo.getScenario().getConfig().travelTimeCalculator().getTraveltimeBinSize(); return (int) (time / timeBinSize); }
private int getIntervalNr(double time) { double timeBinSize = congestionInfo.getScenario().getConfig().travelTimeCalculator().getTraveltimeBinSize(); return (int) (time / timeBinSize); }
@Inject public StopStopTimeCalculatorImpl(final TransitSchedule transitSchedule, final Config config, EventsManager eventsManager) { this(transitSchedule, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime()-config.qsim().getStartTime())); eventsManager.addHandler(this); } public StopStopTimeCalculatorImpl(final TransitSchedule transitSchedule, final int timeSlot, final int totalTime) {
@Inject public WaitTimeStuckCalculator(final Population population, final TransitSchedule transitSchedule, final Config config, final EventsManager eventsManager) { this(population, transitSchedule, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime()-config.qsim().getStartTime())); eventsManager.addHandler(this); } public WaitTimeStuckCalculator(final Population population, final TransitSchedule transitSchedule, final int timeSlot, final int totalTime) {
@Inject public WaitTimeCalculatorImpl(final TransitSchedule transitSchedule, final Config config, EventsManager eventsManager) { this(transitSchedule, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime()-config.qsim().getStartTime())); eventsManager.addHandler(this); } public WaitTimeCalculatorImpl(final TransitSchedule transitSchedule, final int timeSlot, final int totalTime) {
TollTimeDistanceTravelDisutility(final TravelTime timeCalculator, PlanCalcScoreConfigGroup cnScoringGroup, double sigma, DecongestionInfo info) { this.info = info; this.marginalUtilityOfMoney = cnScoringGroup.getMarginalUtilityOfMoney(); this.sigma = sigma; final RandomizingTimeDistanceTravelDisutilityFactory builder = new RandomizingTimeDistanceTravelDisutilityFactory( TransportMode.car, cnScoringGroup ); builder.setSigma(sigma); this.delegate = builder.createTravelDisutility(timeCalculator); this.timeBinSize = info.getScenario().getConfig().travelTimeCalculator().getTraveltimeBinSize(); log.info("Using the toll-adjusted travel disutility (improved version) in the decongestion package."); }
public StopStopTimeCalculatorSerializable(final TransitSchedule transitSchedule, final Config config) { this(transitSchedule, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime()-config.qsim().getStartTime())); } public static void printCallStatisticsAndReset(){
@Override public void handleEvent(LinkLeaveEvent event) { if (!decongestionInfo.getTransitVehicleIDs().contains(event.getVehicleId()) && decongestionInfo.getlinkInfos().get(event.getLinkId()) != null) { int currentTimeBin = (int) (event.getTime() / this.decongestionInfo.getScenario().getConfig().travelTimeCalculator().getTraveltimeBinSize()); if (decongestionInfo.getlinkInfos().get(event.getLinkId()).getTime2toll().get(currentTimeBin) != null) { double toll = decongestionInfo.getlinkInfos().get(event.getLinkId()).getTime2toll().get(currentTimeBin); this.eventsManager.processEvent(new PersonMoneyEvent(event.getTime(), this.decongestionInfo.getVehicleId2personId().get(event.getVehicleId()), -1. * toll)); // this.eventsManager.processEvent(new PersonLinkMoneyEvent(event.getTime(), this.decongestionInfo.getVehicleId2personId().get(event.getVehicleId()), event.getLinkId(), -1. * toll, event.getTime(), "congestion")); this.totalTollPayments = this.totalTollPayments + toll; } } }
public StopStopTimeCalculatorTuple(final TransitSchedule transitSchedule, final Config config) { this(transitSchedule, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime()-config.qsim().getStartTime())); } public StopStopTimeCalculatorTuple(final TransitSchedule transitSchedule, final int timeSlot, final int totalTime) {
public VehicleOccupancyCalculator(final TransitSchedule transitSchedule, final Vehicles vehicles, final Config config) { this(transitSchedule, vehicles, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime()-config.qsim().getStartTime())); } public VehicleOccupancyCalculator(final TransitSchedule transitSchedule, final Vehicles vehicles, final int timeSlot, final int totalTime) {
public WaitTimeCalculatorSerializable(final TransitSchedule transitSchedule, final Config config) { this(transitSchedule, config.travelTimeCalculator().getTraveltimeBinSize(), (int) (config.qsim().getEndTime() - config.qsim().getStartTime())); }
@Inject TravelTimeCalculator(TravelTimeCalculatorConfigGroup ttconfigGroup, EventsManager eventsManager, Network network) { // this injected constructor is not used when getSeparateModes is true this(network, ttconfigGroup.getTraveltimeBinSize(), ttconfigGroup.getMaxTime(), ttconfigGroup.isCalculateLinkTravelTimes(), ttconfigGroup.isCalculateLinkToLinkTravelTimes(), ttconfigGroup.isFilterModes(), CollectionUtils.stringToSet(ttconfigGroup.getAnalyzedModes())); eventsManager.addHandler(this); configure(this, ttconfigGroup, network); }
@Override public TravelTimeCalculator get() { TravelTimeCalculator calculator = new TravelTimeCalculator(network, config.getTraveltimeBinSize(), config.getMaxTime(), config.isCalculateLinkTravelTimes(), config.isCalculateLinkToLinkTravelTimes(), true, CollectionUtils.stringToSet(mode)); eventsManager.addHandler(calculator); return TravelTimeCalculator.configure(calculator, config, network); } }
private void computeDelays(AfterMobsimEvent event) { TravelTime travelTime = event.getServices().getLinkTravelTimes(); int timeBinSize = scenario.getConfig().travelTimeCalculator().getTraveltimeBinSize(); for (Link link : scenario.getNetwork().getLinks().values()){ double freespeedTT = link.getLength() / link.getFreespeed(); int timeBinCounter = 0; double summedDelay = 0.0; for (int endTime = timeBinSize ; endTime <= scenario.getConfig().travelTimeCalculator().getMaxTime(); endTime = endTime + timeBinSize ) { double avgDelay = travelTime.getLinkTravelTime(link, (endTime - timeBinSize/2.), null, null) - freespeedTT; summedDelay += avgDelay; timeBinCounter++; } link2avgDelay.put(link.getId(), summedDelay/timeBinCounter); LOG.info("Link id: " + link.getId() + ", avg delay: " + summedDelay/timeBinCounter); } }
public TransitRouterNetworkTravelTimeAndDisutilityWS(final TransitRouterConfig config, TransitRouterNetworkWW routerNetwork, WaitTime waitTime, StopStopTime stopStopTime, TravelTimeCalculatorConfigGroup tTConfigGroup, double startTime, double endTime, PreparedTransitSchedule preparedTransitSchedule) { super(config, preparedTransitSchedule); timeSlot = tTConfigGroup.getTraveltimeBinSize(); numSlots = (int) ((endTime-startTime)/timeSlot); for(TransitRouterNetworkWW.TransitRouterNetworkLink link:routerNetwork.getLinks().values()) if(link.route!=null) { double[] times = new double[numSlots]; for(int slot = 0; slot<numSlots; slot++) times[slot] = stopStopTime.getStopStopTime(link.fromNode.stop.getStopFacility().getId(), link.toNode.stop.getStopFacility().getId(), startTime+slot*timeSlot); linkTravelTimes.put(link.getId(), times); } else if(link.toNode.route!=null) { double[] times = new double[numSlots]; for(int slot = 0; slot<numSlots; slot++) times[slot] = waitTime.getRouteStopWaitTime(link.toNode.line.getId(), link.toNode.route.getId(), link.fromNode.stop.getStopFacility().getId(), startTime+slot*timeSlot); linkWaitingTimes.put(link.getId(), times); } } @Override
public static void main(String[] args) { Config config = ConfigUtils.createConfig(); ConfigUtils.loadConfig(config, args[0]); final Controler controler = new Controler(ScenarioUtils.loadScenario(config)); final WaitTimeStuckCalculator waitTimeCalculator = new WaitTimeStuckCalculator(controler.getScenario().getPopulation(), controler.getScenario().getTransitSchedule(), controler.getConfig().travelTimeCalculator().getTraveltimeBinSize(), (int) (controler.getConfig().qsim().getEndTime()-controler.getConfig().qsim().getStartTime())); controler.getEvents().addHandler(waitTimeCalculator); final StopStopTimeCalculatorImpl stopStopTimeCalculator = new StopStopTimeCalculatorImpl(controler.getScenario().getTransitSchedule(), controler.getConfig().travelTimeCalculator().getTraveltimeBinSize(), (int) (controler.getConfig().qsim().getEndTime()-controler.getConfig().qsim().getStartTime())); controler.getEvents().addHandler(stopStopTimeCalculator); final VehicleOccupancyCalculator vehicleOccupancyCalculator = new VehicleOccupancyCalculator(controler.getScenario().getTransitSchedule(), ((MutableScenario)controler.getScenario()).getTransitVehicles(), controler.getConfig().travelTimeCalculator().getTraveltimeBinSize(), (int) (controler.getConfig().qsim().getEndTime()-controler.getConfig().qsim().getStartTime())); controler.getEvents().addHandler(vehicleOccupancyCalculator); controler.addOverridingModule(new AbstractModule() { @Override public void install() { bind(TransitRouter.class).toProvider(new TransitRouterEventsWSVFactory(controler.getScenario(), waitTimeCalculator.get(), stopStopTimeCalculator.get(), vehicleOccupancyCalculator.getVehicleOccupancy())); } }); // yyyyyy note that in the above script only the router is modified, but not the scoring. With standard matsim, a slower bu // less crowded pt route will only be accepted by the agent when the faster but more crowded option was never presented // to the agent. (Alternatively, e.g. with the Singapore scenario, there may be boarding denials, in which case // routes that avoid crowded sections may also be beneficial.) kai, jul'15 controler.run(); }
public static void main(String[] args) { Config config = ConfigUtils.createConfig(); ConfigUtils.loadConfig(config, args[0]); final Controler controler = new Controler(ScenarioUtils.loadScenario(config)); controler.getConfig().controler().setOverwriteFileSetting(OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles); final WaitTimeStuckCalculator waitTimeCalculator = new WaitTimeStuckCalculator(controler.getScenario().getPopulation(), controler.getScenario().getTransitSchedule(), controler.getConfig().travelTimeCalculator().getTraveltimeBinSize(), (int) (controler.getConfig().qsim().getEndTime()-controler.getConfig().qsim().getStartTime())); controler.getEvents().addHandler(waitTimeCalculator); final StopStopTimeCalculatorImpl stopStopTimeCalculator = new StopStopTimeCalculatorImpl(controler.getScenario().getTransitSchedule(), controler.getConfig().travelTimeCalculator().getTraveltimeBinSize(), (int) (controler.getConfig().qsim().getEndTime()-controler.getConfig().qsim().getStartTime())); controler.getEvents().addHandler(stopStopTimeCalculator); controler.addOverridingModule(new AbstractModule() { @Override public void install() { bind(TransitRouter.class).toProvider(new TransitRouterEventsWSFactory(controler.getScenario(), waitTimeCalculator.get(), stopStopTimeCalculator.get())); } }); controler.run(); }