Example #1
0
  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();
  }
Example #2
0
  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();
  }
Example #7
0
  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();
  }
Example #8
0
  /**
   * 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();
  }
Example #10
0
  /** @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();
  }
Example #11
0
  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);
  }
Example #13
0
  /** @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();
  }
Example #14
0
  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();
  }
Example #15
0
  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();
  }
Example #17
0
  @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();
  }
Example #20
0
  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();
  }
Example #21
0
  /*
   * 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();
  }
Example #23
0
  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();
  }
Example #25
0
  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();
  }
Example #27
0
  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();
  }
Example #28
0
  /*
   * 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);
    }
    //		}
  }