public static void main(final String[] args) { String configFile = args[0]; Config config; // reading the config file: config = ConfigUtils.loadConfig(configFile); // manipulate config // add "pt interaction" cause controler.init() is called too late and in a protected way ActivityParams transitActivityParams = new ActivityParams(PtConstants.TRANSIT_ACTIVITY_TYPE); transitActivityParams.setTypicalDuration(120.0); config.planCalcScore().addActivityParams(transitActivityParams); // reading the scenario (based on the config): MutableScenario sc = (MutableScenario) ScenarioUtils.loadScenario(config); Controler tc = new Controler(sc); tc.setScoringFunctionFactory( new BvgScoringFunctionFactory(sc, new BvgScoringFunctionConfigGroup(config))); // Not needed to use own scoring function // if(args.length > 1 && args[1].equalsIgnoreCase("true")){ // tc.setUseOTFVis(true); // } tc.getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); // tc.setCreateGraphs(false); tc.run(); }
public static void main(final String[] args) { OutputDirectoryLogging.catchLogEntries(); final String configFile = args[0]; // read the config with our special parameters // Note that you need scoring parameters converted // from the KTI config by something like // playground.thibautd.scripts.KtiToSimiliKtiConfig final Config config = ConfigUtils.createConfig(); config.addModule(new KtiPtConfigGroup()); config.addModule(new KtiLikeScoringConfigGroup()); ConfigUtils.loadConfig(config, configFile); // just make sure the scenario is loaded // Controler accepts a config, but if the Scenario is not // fully loaded when creating the routing module, we may get into // troubles later... final Scenario scenario = ScenarioUtils.loadScenario(config); final Controler controler = new Controler(scenario); controler.setTripRouterFactory(new KtiTripRouterFactory(scenario)); controler.setScoringFunctionFactory( new KtiLikeActivitiesScoringFunctionFactory( new StageActivityTypesImpl(PtConstants.TRANSIT_ACTIVITY_TYPE), (KtiLikeScoringConfigGroup) config.getModule(KtiLikeScoringConfigGroup.GROUP_NAME), config.planCalcScore(), scenario)); // we're done! controler.run(); }
public static void main(String[] args) { String configFile = args[0]; Config config = ConfigUtils.loadConfig(configFile); String originalOutputDir = config.getParam("controler", "outputDirectory"); for (int i = 0; i <= 10; i++) { GlobalTESFParameters.currentYear = i; config = ConfigUtils.loadConfig(configFile); String yearFolderName = originalOutputDir + "//year" + i + "//"; File file = new File(yearFolderName); file.mkdir(); config.setParam("controler", "outputDirectory", yearFolderName); ConfigWriter cw = new ConfigWriter(config); String newConfigFile = configFile + "_temp"; cw.writeFileV2(newConfigFile); Controler controler = RunZurichScenario.startZHScenario(newConfigFile); controler.run(); } }
public static void main(String[] args) { Controler controler = null; if (args.length == 0) { controler = new Controler(initSampleScenario()); } else controler = new Controler(args); /* * Scoring also has to take the social costs into account. * This cannot be moved to the initializer since the scoring functions * are created even before the startup event is created. */ // controler.setScoringFunctionFactory(new TimeAndMoneyDependentScoringFunctionFactory()); InitializerV2 initializer = new InitializerV2(0.1); controler.addControlerListener(initializer); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); controler.run(); }
public void testScenarioRun() { // load config and use ParallelQSim with 2 Threads Config config = loadConfig("test/scenarios/equil/config.xml"); QSimConfigGroup qSimConfig = config.qsim(); qSimConfig.setNumberOfThreads(2); config.controler().setMobsim("qsim"); config.controler().setLastIteration(0); config.qsim().setStartTime(0.0); config .qsim() .setSimStarttimeInterpretation(QSimConfigGroup.StarttimeInterpretation.onlyUseStarttime); Controler controler = new Controler(config); controler.addOverridingModule(new WithinDayModule()); controler.addOverridingModule( new AbstractModule() { @Override public void install() { addMobsimListenerBinding().to(MobsimListenerForTests.class); } }); controler.getConfig().controler().setCreateGraphs(false); controler.getConfig().controler().setDumpDataAtEnd(false); controler.getConfig().controler().setWriteEventsInterval(0); controler.getConfig().controler().setWritePlansInterval(0); controler.run(); }
public static void main(final String[] args) { Config config; if (args.length == 0) { config = ConfigUtils.loadConfig("examples/equil/config.xml"); } else { config = ConfigUtils.loadConfig(args[0]); } int lastStrategyIdx = config.strategy().getStrategySettings().size(); StrategySettings stratSets = new StrategySettings(Id.create(lastStrategyIdx + 1, StrategySettings.class)); stratSets.setStrategyName("doSomethingSpecial"); stratSets.setWeight(0.1); config.strategy().addStrategySettings(stratSets); final Controler controler = new Controler(config); controler.addOverridingModule( new AbstractModule() { @Override public void install() { addPlanStrategyBinding("doSomethingSpecial").toProvider(MyPlanStrategyFactory.class); } }); controler.run(); }
private double walkingDistanceFor3CarScenarioWithVariableParkingCapacity(int parkingCapacity) { ParkingChoiceLib.isTestCaseRun = true; Config config = super.loadConfig("test/input/playground/wrashid/parkingChoice/chessConfig.xml"); Controler controler = new Controler(config); // setup parking infrastructure LinkedList<PParking> parkingCollection = new LinkedList<PParking>(); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { ParkingImpl parking = new ParkingImpl(new Coord((double) (i * 1000 + 500), (double) (j * 1000 + 500))); parking.setMaxCapacity(parkingCapacity); parkingCollection.add(parking); } } ParkingModule parkingModule = new ParkingModule(controler, parkingCollection); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); controler.run(); return parkingModule.getAverageWalkingDistance(); }
/** * Tests the setup with a traffic light that shows all the time green in the 0th iteration. After * the mobsim is run the signal settings are changed thus in the 1st iteration the signal should * be red in sec [0,99] and green in [100,2000] */ @Test public void testModifySignalControlDataOnsetOffset() { // configure and load standard scenario Fixture fixture = new Fixture(); Scenario scenario = fixture.createAndLoadTestScenario(false); scenario.getConfig().controler().setFirstIteration(0); scenario.getConfig().controler().setLastIteration(1); scenario.getConfig().controler().setOutputDirectory(testUtils.getOutputDirectory()); Controler controler = new Controler(scenario); controler.getConfig().controler().setCreateGraphs(false); controler.addControlerListener( new AfterMobsimListener() { @Override public void notifyAfterMobsim(AfterMobsimEvent event) { Scenario scenario = event.getServices().getScenario(); int dropping = 0; int onset = 100; for (SignalSystemControllerData intersectionSignal : ((SignalsData) scenario.getScenarioElement(SignalsData.ELEMENT_NAME)) .getSignalControlData() .getSignalSystemControllerDataBySystemId() .values()) { for (SignalPlanData plan : intersectionSignal.getSignalPlanData().values()) { plan.setCycleTime(2000); for (SignalGroupSettingsData data : plan.getSignalGroupSettingsDataByGroupId().values()) { data.setDropping(dropping); data.setOnset(onset); } } } } }); controler.addControlerListener( new IterationStartsListener() { @Override public void notifyIterationStarts(IterationStartsEvent event) { event.getServices().getEvents().addHandler(new EventsLogger()); TestLink2EnterEventHandler enterHandler = new TestLink2EnterEventHandler(); if (0 == event.getIteration()) { enterHandler.link2EnterTime = 38.0; } if (1 == event.getIteration()) { enterHandler.link2EnterTime = 100.0; SignalGroupStateChangedEventHandler signalsHandler0 = new TestSignalGroupStateChangedHandler(); event.getServices().getEvents().addHandler(signalsHandler0); } } }); controler.run(); }
public static void main(final String[] args) { final String configFile = args[0]; final Scenario sc = BikeSharingScenarioUtils.loadScenario(configFile); final Controler controler = new Controler(sc); controler.addOverridingModule(new BikeSharingTripRouterModule(sc, null)); controler.addOverridingModule( new AbstractModule() { @Override public void install() { bindMobsim() .toProvider( new Provider<Mobsim>() { @Override public Mobsim get() { return new BikeSharingWithoutRelocationQsimFactory() .createMobsim(controler.getScenario(), controler.getEvents()); } }); } }); controler.run(); }
/** @param args */ public static void main(String[] args) { log.info("Running SylviaMain..."); String[] args2 = null; if (args == null || args.length == 0) { throw new RuntimeException("No arguments given, expecting path to config!"); } else { args2 = args; } // DgCottbusSylviaAnalysisControlerListener analysis = new // DgCottbusSylviaAnalysisControlerListener(); Controler controler = new Controler(args2); DgSylviaConfig sylviaConfig = new DgSylviaConfig(); // FIXME: Take care that the normal SignalsControllerListener is NOT added. controler.addControlerListener( new DgSylviaControlerListenerFactory(sylviaConfig).createSignalsControllerListener()); // controler.addControlerListener(analysis); controler .getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles); controler.run(); }
public static void main(String[] args) throws IOException { Config c = ConfigUtils.createConfig(); ConfigUtils.loadConfig(c, RAW_INPUT + "output_config.xml.gz"); Scenario sc = ScenarioUtils.createScenario(c); // Network net = sc.getNetwork(); new MatsimNetworkReader(sc.getNetwork()).readFile(RAW_INPUT + "/output_network.xml.gz"); new PopulationReader(sc).readFile(RAW_INPUT + "output_plans.xml.gz"); // dropDepTimes(sc.getPopulation()); c.controler().setOutputDirectory(NEW_DIR + "output/"); c.network().setInputFile(NEW_DIR + "input/network.xml.gz"); c.plans().setInputFile(NEW_DIR + "input/population.xml.gz"); new NetworkWriter(sc.getNetwork()).write(c.network().getInputFile()); new PopulationWriter(sc.getPopulation(), sc.getNetwork()).write(c.plans().getInputFile()); new ConfigWriter(c).write(NEW_DIR + "input/config.xml"); c.controler().setLastIteration(0); Controler cntr = new Controler(sc); cntr.getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles); cntr.run(); Analyzer.main( new String[] { NEW_DIR + "/output/ITERS/it.0/0.events.xml.gz", "/Users/laemmel/arbeit/papers/2015/TRBwFZJ/hybridsim_trb2016/analysis/runagain-vehicles_plot_data" }); }
public static void main(String[] args) { String path = "./ihop2/matsim-input/config.xml"; Config config = ConfigUtils.loadConfig(path); final Scenario scenario = ScenarioUtils.loadScenario(config); Controler controler = new Controler(scenario); double samplesize = config.qsim().getStorageCapFactor(); String outputRoot = "./ihop2/matsim-output/output"; // LogToOutputSaver.setOutputDirectory(outputRoot); double departureTime = 8. * 60 * 60; // Changing vehicle and road capacity according to sample size PTCapacityAdjusmentPerSample capadjuster = new PTCapacityAdjusmentPerSample(); capadjuster.adjustStoarageAndFlowCapacity(scenario, samplesize); // controler.getConfig().qsim().setInflowConstraint(InflowConstraint.maxflowFromFdiag); // controler.getConfig().qsim().setTrafficDynamics(TrafficDynamics.withHoles); Network network = scenario.getNetwork(); TransitSchedule schedule = scenario.getTransitSchedule(); new CreatePseudoNetwork(schedule, network, "tr_").createNetwork(); // NetworkWriter networkWriter = new NetworkWriter(network); // networkWriter.write("/home/saleem/input/PseudoNetwork.xml"); // networkWriter.write("H:\\Matsim\\Stockholm // Scenario\\teleportation\\input\\PseudoNetwork.xml"); // controler.addControlerListener(new FareControlListener()); // controler.setScoringFunctionFactory(new ScoringFunctionFactory() { // @Inject CharyparNagelScoringParametersForPerson parameters; // @Override // public ScoringFunction createNewScoringFunction(Person person) { // final CharyparNagelScoringParameters params = parameters.getScoringParameters( person ); // SumScoringFunction sumScoringFunction = new SumScoringFunction(); // sumScoringFunction.addScoringFunction(new CharyparNagelActivityScoring( params )); // sumScoringFunction.addScoringFunction(new StockholmLegScoring( person, params , // scenario.getNetwork())); // sumScoringFunction.addScoringFunction(new StockholmMoneyScoring(person, params )); // sumScoringFunction.addScoringFunction(new CharyparNagelAgentStuckScoring( params )); // return sumScoringFunction; } // }); // controler.addControlerListener(new FareControlListener()); controler.run(); TransitRouter trouter = controler.getInjector().getBinding(TransitRouter.class).getProvider().get(); createStopsFile(scenario.getTransitSchedule().getFacilities(), outputRoot + "ptStops.csv", ","); // // // The locationFacilitiesMap is passed twice: Once for origins and once for destinations. // // In other uses the two maps may be different -- thus the duplication here. new ThreadedMatrixCreator( scenario, scenario.getTransitSchedule().getFacilities(), scenario.getTransitSchedule().getFacilities(), departureTime, outputRoot, " ", 1, trouter); }
/** @param args */ public static void main(String[] args) { Config config = ConfigUtils.createConfig(); config.controler().setLastIteration(0); config.controler().setOverwriteFileSetting(OverwriteFileSetting.deleteDirectoryIfExists); Collection<String> sf = new ArrayList<>(); sf.add("otfvis"); config.controler().setSnapshotFormat(sf); config.controler().setWriteSnapshotsInterval(1); config.qsim().setStartTime(0); config.qsim().setSimStarttimeInterpretation(StarttimeInterpretation.onlyUseStarttime); config.qsim().setEndTime(10. * 3600.); config.qsim().setSimEndtimeInterpretation(EndtimeInterpretation.onlyUseEndtime); config.qsim().setNumberOfThreads(1); config.qsim().setSnapshotPeriod(1); OTFVisConfigGroup otfconf = ConfigUtils.addOrGetModule(config, OTFVisConfigGroup.GROUP_NAME, OTFVisConfigGroup.class); otfconf.setColoringScheme(ColoringScheme.byId); Scenario scenario = ScenarioUtils.createScenario(config); Network net = scenario.getNetwork(); NetworkFactory nf = net.getFactory(); Node node1 = nf.createNode(Id.createNodeId(1), new Coord(0., 0.)); net.addNode(node1); Node node2 = nf.createNode(Id.createNodeId(2), new Coord(LEN * 7.5, 0.)); net.addNode(node2); Node node3 = nf.createNode(Id.createNodeId(3), new Coord(0., -LEN * 7.5)); net.addNode(node3); Node node4 = nf.createNode(Id.createNodeId(4), new Coord(0., LEN * 7.5)); net.addNode(node4); Link link = nf.createLink(Id.createLinkId("1-2"), node1, node2); link.setLength(LEN * 7.5); net.addLink(link); // Link link2 = nf.createLink(Id.createLinkId("1-3"), node1, node3) ; // link.setLength( LEN*7.5 ); // net.addLink( link2 ) ; Controler controler = new Controler(scenario); controler.addOverridingModule( new AbstractModule() { @Override public void install() { bind(QNetworkFactory.class).to(MyQNetworkFactory.class); } }); controler.addOverridingModule(new OTFVisLiveModule()); controler.addOverridingModule(new OTFVisFileWriterModule()); controler.run(); }
public static void main(final String[] args) { final String configFile = args[0]; // This allows to get a log file containing the log messages happening // before controler init. OutputDirectoryLogging.catchLogEntries(); // This is the location choice MultiNodeDijkstra. // Suppress all log messages of level below error --- to avoid spaming the config // file with zillions of "not route found" messages. Logger.getLogger(org.matsim.core.router.MultiNodeDijkstra.class) .setLevel(Level.ERROR); // this is location choice Logger.getLogger(org.matsim.pt.router.MultiNodeDijkstra.class).setLevel(Level.ERROR); final Config config = ConfigUtils.loadConfig( configFile, // this adds a new config group, used by the specific scoring function // we use new KtiLikeScoringConfigGroup(), new DestinationChoiceConfigGroup()); // This is currently needed for location choice: initializing // the location choice writes K-values files to the output directory, which: // - fails if the directory does not exist // - makes the controler crash latter if the unsafe setOverwriteFiles( true ) // is not called. // This ensures that we get safety with location choice working as expected, // before we sort this out and definitely kick out setOverwriteFiles. createEmptyDirectoryOrFailIfExists(config.controler().getOutputDirectory()); final Scenario scenario = ScenarioUtils.loadScenario(config); final Controler controler = new Controler(scenario); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); connectFacilitiesWithNetwork(controler); initializeLocationChoice(controler); // We use a specific scoring function, that uses individual preferences // for activity durations. controler.setScoringFunctionFactory( new MATSim2010ScoringFunctionFactory( controler.getScenario(), new StageActivityTypesImpl(PtConstants.TRANSIT_ACTIVITY_TYPE))); 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)); 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 StopStopTimeCalculator stopStopTimeCalculator = new StopStopTimeCalculator( 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(), ((ScenarioImpl) 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.getWaitTimes(), stopStopTimeCalculator.getStopStopTimes(), 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. kai, jul'15 controler.run(); }
void run() { if (!new File(outputDir + "/input/").exists()) { new File(outputDir + "/input/").mkdirs(); } createTolledNetwork(); createDemand(); createConfig(); Controler controler = new Controler(sc); if (isComparing) { TollHandler tollHandler = new TollHandler(sc); final TollDisutilityCalculatorFactory fact = new TollDisutilityCalculatorFactory(tollHandler); controler.addOverridingModule( new AbstractModule() { @Override public void install() { bindTravelDisutilityFactory().toInstance(fact); } }); switch (congestionImpl) { case "implV3": controler.addControlerListener( new MarginalCongestionPricingContolerListener( sc, tollHandler, new CongestionHandlerImplV3(controler.getEvents(), (ScenarioImpl) sc))); break; case "implV4": controler.addControlerListener( new MarginalCongestionPricingContolerListener( sc, tollHandler, new CongestionHandlerImplV4(controler.getEvents(), sc))); break; case "implV6": // controler.addControlerListener(new MarginalCongestionPricingContolerListener(sc, // tollHandler, new CongestionHandlerImplV6(controler.getEvents(), sc))); break; default: break; } } controler.run(); }
@Test public final void testMain() { try { Config config = ConfigUtils.createConfig(); config.controler().setLastIteration(1); config.controler().setOverwriteFileSetting(OverwriteFileSetting.deleteDirectoryIfExists); Scenario scenario = ScenarioUtils.loadScenario(config); Controler controler = new Controler(scenario); controler.run(); } catch (Exception ee) { Logger.getLogger(this.getClass()).fatal("there was an exception: \n" + ee); // if one catches an exception, then one needs to explicitly fail the test: Assert.fail(); } }
@Test public void test_RunTutorial() { Config config = this.utils.loadConfig("test/scenarios/pt-tutorial/config.xml"); config.planCalcScore().setWriteExperiencedPlans(true); config.controler().setLastIteration(0); config.plans().setInputFile("test/scenarios/pt-tutorial/population2.xml"); Controler controler = new Controler(config); controler .getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles); controler.getConfig().controler().setCreateGraphs(false); controler.run(); MutableScenario s = (MutableScenario) controler.getScenario(); Assert.assertNotNull(s.getTransitSchedule()); Assert.assertEquals(4, s.getTransitSchedule().getFacilities().size()); Assert.assertEquals(1, s.getTransitSchedule().getTransitLines().size()); }
/** @param args */ public static void main(String[] args) { if (args == null) { // set a default config for convenience... args[0] = "examples/tutorial/programming/example7-config.xml"; } Config config = ConfigUtils.loadConfig(args[0]); Scenario scenario = ScenarioUtils.loadScenario(config); // Create an instance of the controler Controler controler = new Controler(config); // add the events handlers controler.getEvents().addHandler(new MyEventHandler1()); controler.getEvents().addHandler(new MyEventHandler2(500)); controler.getEvents().addHandler(new MyEventHandler3()); controler.getEvents().addHandler(new CongestionDetectionEventHandler(scenario.getNetwork())); // call run() to start the simulation controler.run(); }
public static void main(String[] args) { Header.printHeader(RunCapeTownFreight.class.toString(), args); String folder = args[0] + (args[0].endsWith("/") ? "" : "/"); Machine machine = Machine.valueOf(args[1]); /* Check if output folder exists, and DELETE if it is there. */ File f = new File(folder + "output/"); if (f.exists() && f.isDirectory()) { LOG.warn("Deleting the output folder " + folder + "output/"); FileUtils.delete(f); } /* Set up the simulation run. */ Config config = setupConfig(folder, machine); Scenario sc = setupScenario(config); Controler controler = setupControler(sc); controler.run(); Header.printFooter(); }
/* * Just starts a randomized router. * */ @Ignore @Test public final void test2() { String configFile1 = testUtils.getPackageInputDirectory() + "CNTest/config1.xml"; Controler controler = new Controler(configFile1); TollHandler tollHandler = new TollHandler(controler.getScenario()); final CongestionTollTimeDistanceTravelDisutilityFactory factory = new CongestionTollTimeDistanceTravelDisutilityFactory( new RandomizingTimeDistanceTravelDisutilityFactory( TransportMode.car, controler.getConfig().planCalcScore()), tollHandler, controler.getConfig().planCalcScore()); factory.setSigma(3.); controler.addOverridingModule( new AbstractModule() { @Override public void install() { this.bindCarTravelDisutilityFactory().toInstance(factory); } }); controler.addControlerListener( new MarginalCongestionPricingContolerListener( controler.getScenario(), tollHandler, new CongestionHandlerImplV3(controler.getEvents(), controler.getScenario()))); controler.addOverridingModule(new OTFVisFileWriterModule()); controler .getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); controler.run(); }
public static void main(String[] args) { Config config = ConfigUtils.createConfig(); config.controler().setLastIteration(0); config.controler().setOutputDirectory("./freespeed-output"); config.controler().setMobsim(MobsimType.JDEQSim.toString()); // config.controler().setMobsim("DoNothing"); config.global().setCoordinateSystem("EPSG:3395"); config.global().setNumberOfThreads(8); config.controler().setWriteSnapshotsInterval(5); // config.getQSimConfigGroup().setStorageCapFactor(100); // config.getQSimConfigGroup().setFlowCapFactor(100); // config.getQSimConfigGroup().setSnapshotStyle(QSimConfigGroup.SNAPSHOT_AS_QUEUE); // config.getQSimConfigGroup().setRemoveStuckVehicles(false); // config.getQSimConfigGroup().setNumberOfThreads(8); // config.getQSimConfigGroup().setEndTime(27*60*60); config.plansCalcRoute().setTeleportedModeSpeed("other", 5.0 / 3.6); // 5 km/h beeline config.plansCalcRoute().setBeelineDistanceFactor(1.0); config.plansCalcRoute().setNetworkModes(Arrays.asList("car")); config.controler().setWriteEventsInterval(10); ActivityParams sighting = new ActivityParams("sighting"); // sighting.setOpeningTime(0.0); // sighting.setClosingTime(0.0); sighting.setTypicalDuration(30.0 * 60); config.planCalcScore().addActivityParams(sighting); config .planCalcScore() .getModes() .get(TransportMode.car) .setMarginalUtilityOfTraveling((double) 0); config.planCalcScore().getModes().get(TransportMode.car).setConstant((double) 0); config.planCalcScore().getModes().get(TransportMode.car).setMonetaryDistanceRate((double) 0); // config.planCalcScore().setWriteExperiencedPlans(true); config.setParam("JDEQSim", "flowCapacityFactor", "100"); config.setParam("JDEQSim", "storageCapacityFactor", "100"); double endTime = 60 * 60 * 32; config.setParam("JDEQSim", "endTime", Double.toString(endTime)); Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario).readFile("/Users/zilske/d4d/output/network.xml"); AltPopulationReaderMatsimV5 altPopulationReaderMatsimV5 = new AltPopulationReaderMatsimV5(scenario); // altPopulationReaderMatsimV5.readFile("/Users/zilske/d4d/output/population.xml"); altPopulationReaderMatsimV5.readFile("/Users/zilske/d4d/output/population-capital-only.xml"); ParallelPersonAlgorithmRunner.run( scenario.getPopulation(), 8, new PersonAlgorithm() { @Override public void run(Person person) { PlanUtils.insertLinkIdsIntoGenericRoutes(person.getSelectedPlan()); } }); // ParallelPersonAlgorithmRunner.run(scenario.getPopulation(), 8, new PersonAlgorithm() { // // @Override // public void run(Person person) { // Plan plan = person.getSelectedPlan(); // for (int i = 0; i < plan.getPlanElements().size()-2; i++) { // PlanElement pe = plan.getPlanElements().get(i); // if (pe instanceof Activity) { // Activity activity = (Activity) pe; // Leg leg = (Leg) plan.getPlanElements().get(i+1); // Activity nextActivity = (Activity) plan.getPlanElements().get(i+2); // double earliest = activity.getEndTime(); // double latest = nextActivity.getEndTime() - leg.getTravelTime(); // activity.setEndTime(earliest + MatsimRandom.getRandom().nextDouble() * (latest - // earliest)); // } // } // } // // }); Controler controler = new Controler(scenario); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); controler.run(); }
public static void main(String[] args) { // loading and modifying the config: Config config; if (args.length > 0) { config = ConfigUtils.loadConfig(args[0]); } else { throw new RuntimeException("needs argument config.xml"); } // request FEATHERS2 as a PlanStrategy (it is added to the controler further below): StrategySettings stratSets = new StrategySettings(ConfigUtils.createAvailableStrategyId(config)); stratSets.setStrategyName(FEATHERS2); stratSets.setWeight(0.1); config.strategy().addStrategySettings(stratSets); // loading the scenario: final Scenario scenario = ScenarioUtils.loadScenario(config); // loading and modifying the controler: final Controler ctrl = new Controler(scenario); // generate the FEATHERS adapter class: final FeathersModule feathers2 = new FeathersModule(); // make it an events handler (so it can listen to events; a different solution may be desired // here) ctrl.getEvents().addHandler(feathers2); // add it as a PlanStrategy: final javax.inject.Provider<PlanStrategy> planStrategyFactory = new javax.inject.Provider<PlanStrategy>() { @Override public PlanStrategy get() { PlanSelector<Plan, Person> planSelector = new RandomPlanSelector<>(); PlanStrategyImpl.Builder builder = new PlanStrategyImpl.Builder(planSelector); PlanStrategyModule module = new PlanStrategyModule() { @Override public void prepareReplanning(ReplanningContext replanningContext) {} @Override public void handlePlan(Plan plan) { // the following should (test!!!) only retain the plan we are looking at: Person person = scenario.getPopulation().getPersons().get(plan.getPerson()); List<Plan> planToKeep = new ArrayList<>(); planToKeep.add(plan); person.getPlans().retainAll(planToKeep); PopulationFactory pf = scenario.getPopulation().getFactory(); // modify plan by feathers: plan = feathers2.createPlan(plan.getPerson(), pf); } @Override public void finishReplanning() {} }; builder.addStrategyModule(module); return builder.build(); } }; ctrl.addOverridingModule( new AbstractModule() { @Override public void install() { addPlanStrategyBinding(FEATHERS2).toProvider(planStrategyFactory); } }); // running the controler: ctrl.run(); }
public static void main(final String[] args) { final String configFile = args[0]; // This allows to get a log file containing the log messages happening // before controler init. OutputDirectoryLogging.catchLogEntries(); // This is the location choice MultiNodeDijkstra. // Suppress all log messages of level below error --- to avoid spaming the config // file with zillions of "not route found" messages. Logger.getLogger(org.matsim.core.router.MultiNodeDijkstra.class) .setLevel(Level.ERROR); // this is location choice Logger.getLogger(org.matsim.pt.router.MultiNodeDijkstra.class).setLevel(Level.ERROR); final Config config = ConfigUtils.loadConfig( configFile, // this adds a new config group, used by the specific scoring function // we use new KtiLikeScoringConfigGroup()); // This is currently needed for location choice: initializing // the location choice writes K-values files to the output directory, which: // - fails if the directory does not exist // - makes the controler crash latter if the unsafe setOverwriteFiles( true ) // is not called. // This ensures that we get safety with location choice working as expected, // before we sort this out and definitely kick out setOverwriteFiles. createEmptyDirectoryOrFailIfExists(config.controler().getOutputDirectory()); OneWayCarsharingRDConfigGroup configGroup = new OneWayCarsharingRDConfigGroup(); config.addModule(configGroup); FreeFloatingConfigGroup configGroupff = new FreeFloatingConfigGroup(); config.addModule(configGroupff); TwoWayCSConfigGroup configGrouptw = new TwoWayCSConfigGroup(); config.addModule(configGrouptw); AllCSModesConfigGroup configGroupAll = new AllCSModesConfigGroup(); config.addModule(configGroupAll); final Scenario scenario = ScenarioUtils.loadScenario(config); final Controler controler = new Controler(scenario); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); Set<String> modes = new TreeSet<String>(); modes.add("freefloating"); modes.add("twowaycarsharing"); modes.add("onewaycarsharing"); modes.add("car"); modes.add("walk"); modes.add("pt"); modes.add("bike"); TripsAnalyzer tripsAnalyzer = new TripsAnalyzer( controler.getConfig().getParam("controler", "outputDirectory") + "/tripsFile", controler.getConfig().getParam("controler", "outputDirectory") + "/durationsFile", controler.getConfig().getParam("controler", "outputDirectory") + "/distancesFile", modes, true, controler.getScenario().getNetwork()); controler.addControlerListener(tripsAnalyzer); controler.addControlerListener( new AllCSModesTestListener( controler, Integer.parseInt( controler.getConfig().getModule("AllCSModes").getValue("statsWriterFrequency")))); controler.addOverridingModule( new AbstractModule() { @Override public void install() { bindMobsim().toProvider(AllCSModesQsimFactory.class); } }); controler.addOverridingModule( new AbstractModule() { @Override public void install() { addRoutingModuleBinding("twowaycarsharing").toInstance(new TwoWayCSRoutingModule()); addRoutingModuleBinding("freefloating").toInstance(new FreeFloatingRoutingModule()); addRoutingModuleBinding("onewaycarsharing") .toInstance(new OneWayCarsharingRDRoutingModule()); bind(MainModeIdentifier.class) .toInstance( new MainModeIdentifier() { final MainModeIdentifier defaultModeIdentifier = new MainModeIdentifierImpl(); @Override public String identifyMainMode(List<? extends PlanElement> tripElements) { for (PlanElement pe : tripElements) { if (pe instanceof Leg && ((Leg) pe).getMode().equals("twowaycarsharing")) { return "twowaycarsharing"; } else if (pe instanceof Leg && ((Leg) pe).getMode().equals("onewaycarsharing")) { return "onewaycarsharing"; } else if (pe instanceof Leg && ((Leg) pe).getMode().equals("freefloating")) { return "freefloating"; } } // if the trip doesn't contain a carsharing leg, // fall back to the default identification method. return defaultModeIdentifier.identifyMainMode(tripElements); } }); } }); connectFacilitiesWithNetwork(controler); initializeLocationChoice(controler); // We use a specific scoring function, that uses individual preferences // for activity durations. controler.setScoringFunctionFactory( new CarsharingMATSimLectureScoringFunctionFactory( controler.getScenario(), new StageActivityTypesImpl(PtConstants.TRANSIT_ACTIVITY_TYPE))); controler.run(); }
public static void main(String[] args) { // SubpopulationConfig subPopConfig = new SubpopulationConfig(); // subPopConfig.run(); // Config config = subPopConfig.getPatnaConfig(); Config config = ConfigUtils.loadConfig(args[0]); Scenario sc = ScenarioUtils.loadScenario(config); sc.getConfig().qsim().setUseDefaultVehicles(false); ((ScenarioImpl) sc).createVehicleContainer(); Map<String, VehicleType> modesType = new HashMap<String, VehicleType>(); VehicleType slum_car = VehicleUtils.getFactory().createVehicleType(Id.create("slum_car", VehicleType.class)); slum_car.setMaximumVelocity(60.0 / 3.6); slum_car.setPcuEquivalents(1.0); modesType.put("slum_car", slum_car); sc.getVehicles().addVehicleType(slum_car); VehicleType nonSlum_car = VehicleUtils.getFactory().createVehicleType(Id.create("nonSlum_car", VehicleType.class)); nonSlum_car.setMaximumVelocity(60.0 / 3.6); nonSlum_car.setPcuEquivalents(1.0); modesType.put("nonSlum_car", nonSlum_car); sc.getVehicles().addVehicleType(nonSlum_car); VehicleType slum_motorbike = VehicleUtils.getFactory().createVehicleType(Id.create("slum_motorbike", VehicleType.class)); slum_motorbike.setMaximumVelocity(60.0 / 3.6); slum_motorbike.setPcuEquivalents(0.25); modesType.put("slum_motorbike", slum_motorbike); sc.getVehicles().addVehicleType(slum_motorbike); VehicleType nonSlum_motorbike = VehicleUtils.getFactory() .createVehicleType(Id.create("nonSlum_motorbike", VehicleType.class)); nonSlum_motorbike.setMaximumVelocity(60.0 / 3.6); nonSlum_motorbike.setPcuEquivalents(0.25); modesType.put("nonSlum_motorbike", nonSlum_motorbike); sc.getVehicles().addVehicleType(nonSlum_motorbike); VehicleType slum_bike = VehicleUtils.getFactory().createVehicleType(Id.create("slum_bike", VehicleType.class)); slum_bike.setMaximumVelocity(15.0 / 3.6); slum_bike.setPcuEquivalents(0.25); modesType.put("slum_bike", slum_bike); sc.getVehicles().addVehicleType(slum_bike); VehicleType nonSlum_bike = VehicleUtils.getFactory().createVehicleType(Id.create("nonSlum_bike", VehicleType.class)); nonSlum_bike.setMaximumVelocity(15.0 / 3.6); nonSlum_bike.setPcuEquivalents(0.25); modesType.put("nonSlum_bike", nonSlum_bike); sc.getVehicles().addVehicleType(nonSlum_bike); VehicleType slum_walk = VehicleUtils.getFactory().createVehicleType(Id.create("slum_walk", VehicleType.class)); slum_walk.setMaximumVelocity(1.5); // walk.setPcuEquivalents(0.10); modesType.put("slum_walk", slum_walk); sc.getVehicles().addVehicleType(slum_walk); VehicleType nonSlum_walk = VehicleUtils.getFactory().createVehicleType(Id.create("nonSlum_walk", VehicleType.class)); nonSlum_walk.setMaximumVelocity(1.5); // walk.setPcuEquivalents(0.10); modesType.put("nonSlum_walk", nonSlum_walk); sc.getVehicles().addVehicleType(nonSlum_walk); VehicleType slum_pt = VehicleUtils.getFactory().createVehicleType(Id.create("slum_pt", VehicleType.class)); slum_pt.setMaximumVelocity(40 / 3.6); // pt.setPcuEquivalents(5); modesType.put("slum_pt", slum_pt); sc.getVehicles().addVehicleType(slum_pt); VehicleType nonSlum_pt = VehicleUtils.getFactory().createVehicleType(Id.create("nonSlum_pt", VehicleType.class)); nonSlum_pt.setMaximumVelocity(40 / 3.6); // pt.setPcuEquivalents(5); modesType.put("nonSlum_pt", nonSlum_pt); sc.getVehicles().addVehicleType(nonSlum_pt); for (Person p : sc.getPopulation().getPersons().values()) { Id<Vehicle> vehicleId = Id.create(p.getId(), Vehicle.class); String travelMode = null; for (PlanElement pe : p.getSelectedPlan().getPlanElements()) { if (pe instanceof Leg) { travelMode = ((Leg) pe).getMode(); break; } } Vehicle vehicle = VehicleUtils.getFactory().createVehicle(vehicleId, modesType.get(travelMode)); sc.getVehicles().addVehicle(vehicle); } final Controler controler = new Controler(sc); // IOUtils.deleteDirectory(new File(controler.getConfig().controler().getOutputDirectory())); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); controler.setDumpDataAtEnd(true); controler.getConfig().controler().setCreateGraphs(true); controler.addOverridingModule( new AbstractModule() { @Override public void install() { addPlanStrategyBinding("ChangeLegMode_slum") .toProvider( new javax.inject.Provider<PlanStrategy>() { String[] availableModes_slum = { "slum_bike", "slum_motorbike", "slum_pt", "slum_walk" }; @Override public PlanStrategy get() { final Builder builder = new Builder(new RandomPlanSelector<Plan, Person>()); builder.addStrategyModule( new ChangeLegMode( controler.getConfig().global().getNumberOfThreads(), availableModes_slum, true)); builder.addStrategyModule(new ReRoute(controler.getScenario())); return builder.build(); } }); } }); controler.addOverridingModule( new AbstractModule() { @Override public void install() { addPlanStrategyBinding("ChangeLegMode_nonSlum") .toProvider( new javax.inject.Provider<PlanStrategy>() { String[] availableModes_nonSlum = { "nonSlum_car", "nonSlum_bike", "nonSlum_motorbike", "nonSlum_pt", "nonSlum_walk" }; @Override public PlanStrategy get() { final Builder builder = new Builder(new RandomPlanSelector<Plan, Person>()); builder.addStrategyModule( new ChangeLegMode( controler.getConfig().global().getNumberOfThreads(), availableModes_nonSlum, true)); builder.addStrategyModule(new ReRoute(controler.getScenario())); return builder.build(); } }); } }); // controler.setScoringFunctionFactory(new // SubPopulationScoringFactory(controler.getScenario())); controler.run(); }
public void run() { new MatsimNetworkReader(scenario).readFile(scenario.getConfig().network().getInputFile()); new TransitScheduleReaderV1(scenario) .readFile(this.scenario.getConfig().transit().getTransitScheduleFile()); Logger.getLogger(this.getClass()) .fatal( "cannot say if the following should be vehicles or transit vehicles; aborting ... . kai, feb'15"); System.exit(-1); new VehicleReaderV1((scenario).getTransitVehicles()) .readFile(this.scenario.getConfig().transit().getVehiclesFile()); Controler controler = new Controler(this.scenario); controler .getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles); controler.addOverridingModule(new OTFVisFileWriterModule()); controler.addControlerListener( new OptControlerListener( this.fare, this.scenario, this.calculate_inVehicleTimeDelayEffects, this.calculate_waitingTimeDelayEffects, this.calculate_capacityDelayEffects, this.marginalCostPricingPt, this.calculate_carCongestionEffects, this.marginalCostPricingCar)); ControlerConfigGroup controlerConfGroup = controler.getConfig().controler(); if (controlerConfGroup.getLastIteration() == 0) { controlerConfGroup.setWriteEventsInterval(1); controlerConfGroup.setWritePlansInterval(1); } else { controlerConfGroup.setWriteEventsInterval(controlerConfGroup.getLastIteration()); controlerConfGroup.setWritePlansInterval(controlerConfGroup.getLastIteration()); } PlanCalcScoreConfigGroup planCalcScoreConfigGroup = controler.getConfig().planCalcScore(); planCalcScoreConfigGroup.setMarginalUtilityOfMoney(MARGINAL_UTILITY_OF_MONEY); planCalcScoreConfigGroup.setPerforming_utils_hr(PERFORMING); planCalcScoreConfigGroup.getModes().get(TransportMode.car).setConstant(CONSTANT_CAR); planCalcScoreConfigGroup .getModes() .get(TransportMode.car) .setMarginalUtilityOfTraveling(TRAVEL_CAR); planCalcScoreConfigGroup .getModes() .get(TransportMode.car) .setMonetaryDistanceRate(MONETARY_DISTANCE_COST_RATE_CAR); planCalcScoreConfigGroup.getModes().get(TransportMode.walk).setConstant(CONSTANT_WALK); planCalcScoreConfigGroup .getModes() .get(TransportMode.walk) .setMarginalUtilityOfTraveling(TRAVEL_WALK); planCalcScoreConfigGroup .getModes() .get(TransportMode.pt) .setMonetaryDistanceRate(MONETARY_DISTANCE_COST_RATE_PT); planCalcScoreConfigGroup.getModes().get(TransportMode.pt).setConstant(CONSTANT_PT); planCalcScoreConfigGroup .getModes() .get(TransportMode.pt) .setMarginalUtilityOfTraveling(TRAVEL_PT_IN_VEHICLE); planCalcScoreConfigGroup.setMarginalUtlOfWaitingPt_utils_hr(TRAVEL_PT_WAITING); planCalcScoreConfigGroup.setUtilityOfLineSwitch(LINE_SWITCH); planCalcScoreConfigGroup.setLateArrival_utils_hr(LATE_ARRIVAL); planCalcScoreConfigGroup.setEarlyDeparture_utils_hr(EARLY_DEPARTURE); planCalcScoreConfigGroup.setMarginalUtlOfWaiting_utils_hr(WAITING); OptimizationScoringFunctionFactory scoringfactory = new OptimizationScoringFunctionFactory(scenario, STUCK_SCORE); controler.setScoringFunctionFactory(scoringfactory); controler.getConfig().controler().setCreateGraphs(false); controler.run(); }
public static void main(String[] args) { Config config = ConfigUtils.createConfig(); config.removeModule(StrategyConfigGroup.GROUP_NAME); config.addModule(new StrategyPopsConfigGroup()); ConfigUtils.loadConfig(config, args[0]); controler = new Controler(ScenarioUtils.loadScenario(config)); controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); controler.addControlerListener( new LegHistogramListener( controler.getEvents(), true, controler.getScenario().getPopulation())); controler.addControlerListener( new ScoreStats( controler.getScenario().getPopulation(), ScoreStatsControlerListener.FILENAME_SCORESTATS, true)); // services.addControlerListener(new CalibrationStatsListener(services.getEvents(), new // String[]{args[1], args[2]}, 1, "Travel Survey (Benchmark)", "Red_Scheme", new // HashSet<Id<Person>>())); 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 StopStopTimeCalculator stopStopTimeCalculator = new StopStopTimeCalculator( 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 TransitRouterWSImplFactory( controler.getScenario(), waitTimeCalculator.getWaitTimes(), stopStopTimeCalculator.getStopStopTimes())); } }); controler.setScoringFunctionFactory( new CharyparNagelOpenTimesScoringFunctionFactory( controler.getConfig().planCalcScore(), controler.getScenario())); AbstractModule myStrategyManagerModule = new AbstractModule() { @Override public void install() { bind(StrategyManager.class).toInstance(myLoadStrategyManager()); } }; controler.addOverridingModule(myStrategyManagerModule); controler.run(); }
/* * Tests if different travel disutility factories result in the same outcome. * */ @Ignore @Test public final void test3() { String configFile1 = testUtils.getPackageInputDirectory() + "CNTest/config1.xml"; // 1: Config config1 = ConfigUtils.loadConfig(configFile1); String outputDirectory1 = testUtils.getOutputDirectory() + "a"; config1.controler().setOutputDirectory(outputDirectory1); Scenario scenario1 = ScenarioUtils.loadScenario(config1); Controler controler1 = new Controler(scenario1); TollHandler tollHandler1 = new TollHandler(scenario1); final CongestionTollTimeDistanceTravelDisutilityFactory factory1 = new CongestionTollTimeDistanceTravelDisutilityFactory( new RandomizingTimeDistanceTravelDisutilityFactory( TransportMode.car, config1.planCalcScore()), tollHandler1, config1.planCalcScore()); factory1.setSigma(0.); factory1.setBlendFactor(0.1); controler1.addOverridingModule( new AbstractModule() { @Override public void install() { this.bindCarTravelDisutilityFactory().toInstance(factory1); } }); controler1.addControlerListener( new MarginalCongestionPricingContolerListener( controler1.getScenario(), tollHandler1, new CongestionHandlerImplV3(controler1.getEvents(), controler1.getScenario()))); controler1.addOverridingModule(new OTFVisFileWriterModule()); controler1 .getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); controler1.run(); // 2: "deprecated way" Config config2 = ConfigUtils.loadConfig(configFile1); String outputDirectory2 = testUtils.getOutputDirectory() + "b"; config2.controler().setOutputDirectory(outputDirectory2); Scenario scenario2 = ScenarioUtils.loadScenario(config2); Controler controler2 = new Controler(scenario2); TollHandler tollHandler2 = new TollHandler(scenario2); final TollDisutilityCalculatorFactory factory2 = new TollDisutilityCalculatorFactory(tollHandler2, config2.planCalcScore()); controler2.addOverridingModule( new AbstractModule() { @Override public void install() { bindCarTravelDisutilityFactory().toInstance(factory2); } }); controler2.addControlerListener( new MarginalCongestionPricingContolerListener( controler2.getScenario(), tollHandler2, new CongestionHandlerImplV3(controler2.getEvents(), controler2.getScenario()))); controler2.addOverridingModule(new OTFVisFileWriterModule()); controler2 .getConfig() .controler() .setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); controler2.run(); // compare LinkDemandEventHandler handler1 = analyzeEvents(outputDirectory1, configFile1); // a System.out.println("Bottleneck demand - (a): " + getBottleneckDemand(handler1)); // a LinkDemandEventHandler handler2 = analyzeEvents(outputDirectory2, configFile1); // b System.out.println("Bottleneck demand - (b): " + getBottleneckDemand(handler2)); // b Assert.assertEquals( "run a and b should result in the exact same outcome (without accounting for randomness!)", true, getBottleneckDemand(handler1) == getBottleneckDemand(handler2)); }
public static void main(String[] args) { Config config = new Config(); config.addCoreModules(); Controler controler = new Controler(config); // controler settings controler .getConfig() .controler() .setOverwriteFileSetting( true ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists); controler.getConfig().controler().setCreateGraphs(false); // controlerConfigGroup ControlerConfigGroup ccg = controler.getConfig().controler(); ccg.setOutputDirectory(outputPath); ccg.setFirstIteration(0); ccg.setLastIteration(0); ccg.setMobsim("qsim"); Set set = new HashSet(); set.add(EventsFileFormat.xml); ccg.setEventsFileFormats(set); // ccg.setRunId("321"); // qsimConfigGroup QSimConfigGroup qcg = controler.getConfig().qsim(); qcg.setStartTime(0 * 3600.); qcg.setEndTime(30 * 3600.); qcg.setFlowCapFactor(0.1); qcg.setStorageCapFactor(0.3); // qcg.setFlowCapFactor(0.01); // qcg.setStorageCapFactor(0.03); qcg.setNumberOfThreads(1); qcg.setRemoveStuckVehicles(false); qcg.setStuckTime(10.0); // planCalcScoreConfigGroup PlanCalcScoreConfigGroup pcs = controler.getConfig().planCalcScore(); Set<String> activities = new HashSet<String>(); activities.add("unknown"); activities.add("work"); activities.add("pickup"); activities.add("with adult"); activities.add("other"); activities.add("pvWork"); activities.add("pvHome"); activities.add("gvHome"); activities.add("education"); activities.add("business"); activities.add("shopping"); activities.add("private"); activities.add("leisure"); activities.add("sports"); activities.add("home"); activities.add("friends"); for (String activity : activities) { ActivityParams params = new ActivityParams(activity); params.setTypicalDuration(30 * 3600); pcs.addActivityParams(params); } // strategy StrategyConfigGroup scg = controler.getConfig().strategy(); StrategySettings strategySettings = new StrategySettings(Id.create("1", StrategySettings.class)); strategySettings.setStrategyName("ChangeExpBeta"); strategySettings.setWeight(1.0); scg.addStrategySettings(strategySettings); // network NetworkConfigGroup ncg = controler.getConfig().network(); ncg.setInputFile(networkFile); // plans PlansConfigGroup pcg = controler.getConfig().plans(); pcg.setInputFile(plansFile); // define emission tool input files EmissionsConfigGroup ecg = new EmissionsConfigGroup(); controler.getConfig().addModule(ecg); ecg.setEmissionRoadTypeMappingFile(roadTypeMappingFile); ecg.setEmissionVehicleFile(emissionVehicleFile); ecg.setAverageWarmEmissionFactorsFile(averageFleetWarmEmissionFactorsFile); ecg.setAverageColdEmissionFactorsFile(averageFleetColdEmissionFactorsFile); ecg.setUsingDetailedEmissionCalculation(isUsingDetailedEmissionCalculation); ecg.setDetailedWarmEmissionFactorsFile(detailedWarmEmissionFactorsFile); ecg.setDetailedColdEmissionFactorsFile(detailedColdEmissionFactorsFile); // TODO: the following does not work yet. Need to force controler to always write events in the // last iteration. VspExperimentalConfigGroup vcg = controler.getConfig().vspExperimental(); vcg.setWritingOutputEvents(false); controler.addControlerListener(new EmissionControlerListener()); controler.run(); }
public static void main(String[] args) { // Input and output String networkFile = "../../matsimExamples/countries/za/nmbm/network/NMBM_Network_CleanV7.xml.gz"; String facilitiesFile = "../../matsimExamples/countries/za/nmbm/facilities/20121010/facilities.xml.gz"; String outputDirectory = "../../accessibility-sa/data/12/"; // String travelTimeMatrix = folderStructure + // "matsimExamples/countries/za/nmbm/minibus-pt/JTLU_14i_06/travelTimeMatrix.csv.gz"; // String travelDistanceMatrix = folderStructure + // "matsimExamples/countries/za/nmbm/minibus-pt/JTLU_14i_06/travelDistanceMatrix.csv.gz"; // String ptStops = folderStructure + // "matsimExamples/countries/za/nmbm/minibus-pt/JTLU_14i_06/measuringPointsAsStops.csv.gz"; // String minibusPtTravelTimeMatrix = folderStructure + // "matsimExamples/countries/za/nmbm/minibus-pt/JTLU_14i_07/travelTimeMatrix.csv"; // String minibusPtTravelDistanceMatrix = folderStructure + // "matsimExamples/countries/za/nmbm/minibus-pt/JTLU_14i_07/travelDistanceMatrix.csv"; // String measuringPointsAsPtStops = folderStructure + // "matsimExamples/countries/za/nmbm/minibus-pt/JTLU_14i_07/measuringPointsAsStops.csv"; // Parameters boolean includeDensityLayer = true; String crs = TransformationFactory.WGS84_SA_Albers; Double lowerBound = 2.; Double upperBound = 5.5; Integer range = 9; int symbolSize = 1010; int populationThreshold = (int) (200 / (1000 / cellSize * 1000 / cellSize)); final Config config = ConfigUtils.createConfig(new AccessibilityConfigGroup()); config.controler().setOverwriteFileSetting(OverwriteFileSetting.deleteDirectoryIfExists); config.controler().setOutputDirectory(outputDirectory); config.network().setInputFile(networkFile); config.facilities().setInputFile(facilitiesFile); config.controler().setLastIteration(0); final Scenario scenario = ScenarioUtils.loadScenario(config); String typeWEQ = "w-eq"; List<String> activityTypes = new ArrayList<>(); activityTypes.add(typeWEQ); final ActivityFacilities homes = FacilitiesUtils.createActivityFacilities("homes"); final ActivityFacilities amenities = FacilitiesUtils.createActivityFacilities("amenities"); for (ActivityFacility fac : scenario.getActivityFacilities().getFacilities().values()) { for (ActivityOption option : fac.getActivityOptions().values()) { // figure out all activity types if (!activityTypes.contains(option.getType())) { activityTypes.add(option.getType()); } // add all facilites that are not home or work if (!option.getType().equals("h") && !option.getType().equals("w") && !option.getType().equals("minor")) { if (!amenities.getFacilities().containsKey(fac.getId())) { amenities.addActivityFacility(fac); } } // figure out where the homes are if (option.getType().equals("h")) { homes.addActivityFacility(fac); } } } // extends of the network are (as they can looked up by using the bounding box): // minX = 111083.9441831379, maxX = 171098.03695045778, minY = -3715412.097693177, maxY = // -3668275.43481496 // double[] mapViewExtent = {100000,-3720000,180000,-3675000}; // choose map view a bit bigger double[] mapViewExtent = { 115000, -3718000, 161000, -3679000 }; // what actually needs to be drawn Controler controler = new Controler(scenario); controler.addOverridingModule( new AbstractModule() { @Override public void install() { addControlerListenerBinding() .toProvider( new Provider<ControlerListener>() { @Inject Scenario scenario; @Inject Map<String, TravelTime> travelTimes; @Inject Map<String, TravelDisutilityFactory> travelDisutilityFactories; @Override public ControlerListener get() { GridBasedAccessibilityControlerListenerV3 listener = new GridBasedAccessibilityControlerListenerV3( amenities, null, config, scenario, travelTimes, travelDisutilityFactories); listener.setComputingAccessibilityForMode( Modes4Accessibility.freeSpeed, true); listener.addAdditionalFacilityData(homes); listener.generateGridsAndMeasuringPointsByNetwork(cellSize); listener.writeToSubdirectoryWithName("w-eq"); listener.setUrbansimMode( false); // avoid writing some (eventually: all) files that related to // matsim4urbansim return listener; } }); } }); controler.run(); String workingDirectory = config.controler().getOutputDirectory(); String osName = System.getProperty("os.name"); // for (String actType : activityTypes) { String actSpecificWorkingDirectory = workingDirectory + typeWEQ + "/"; for (Modes4Accessibility mode : Modes4Accessibility.values()) { // VisualizationUtilsDZ.createQGisOutput(typeWEQ, mode, mapViewExtent, workingDirectory, // crs, includeDensityLayer); VisualizationUtilsDZ.createQGisOutput( typeWEQ, mode, mapViewExtent, workingDirectory, crs, includeDensityLayer, lowerBound, upperBound, range, symbolSize, populationThreshold); VisualizationUtilsDZ.createSnapshot(actSpecificWorkingDirectory, mode, osName); } // } }