Exemple #1
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(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();
  }
Exemple #3
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();
  }
  private static void initializeLocationChoice(final Controler controler) {
    final Scenario scenario = controler.getScenario();
    final DestinationChoiceBestResponseContext lcContext =
        new DestinationChoiceBestResponseContext(scenario);
    lcContext.init();

    controler.addControlerListener(new DestinationChoiceInitializer(lcContext));
  }
  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();
  }
    @Override
    public void notifyIterationStarts(IterationStartsEvent event) {
      if (event.getIteration() == 0) {
        Controler controler = event.getControler();

        // initialize the social costs calculator
        SocialCostCalculatorV2 scc =
            new SocialCostCalculatorV2(
                controler.getScenario().getNetwork(),
                controler.getEvents(),
                controler.getLinkTravelTimes(),
                controler,
                blendFactor);

        controler.addControlerListener(scc);
        controler.getEvents().addHandler(scc);

        // initialize the social costs disutility calculator
        final SocialCostTravelDisutilityFactory factory =
            new SocialCostTravelDisutilityFactory(scc);
        controler.addOverridingModule(
            new AbstractModule() {
              @Override
              public void install() {
                bindCarTravelDisutilityFactory().toInstance(factory);
              }
            });

        // create a plot containing the mean travel times
        Set<String> transportModes = new HashSet<String>();
        transportModes.add(TransportMode.car);
        transportModes.add(TransportMode.pt);
        transportModes.add(TransportMode.walk);
        MeanTravelTimeCalculator mttc =
            new MeanTravelTimeCalculator(controler.getScenario(), transportModes);
        controler.addControlerListener(mttc);
        controler.getEvents().addHandler(mttc);
      }
    }
  public ChoiceSetWithCrowdingGenerator(Config config, String eventsFile) {

    if (internalizationOfCrowdingDelay)
      log.info("Internalization of external PT Travel Delay cost is enabled.");
    if (internalizationOfComfortDisutility)
      log.info("Internalization of external Crowding cost is enabled.");

    choiceGenerationControler = new ChoiceGenerationWithCrowdingControler(config, eventsFile);
    choiceGenerationControler.setInternalizationOfComfortDisutility(
        internalizationOfComfortDisutility);
    choiceGenerationControler.setInternalizationOfCrowdingDelay(internalizationOfCrowdingDelay);
    choiceGenerationControler.load();

    this.controler = choiceGenerationControler.getControler();
    this.population = controler.getScenario().getPopulation();

    controler.addControlerListener(this);
  }
Exemple #8
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 = 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();
  }
  @Override
  public void notifyStartup(StartupEvent event) {
    Controler controler = event.getControler();

    // compute or read maxDCScore but do not add it to the context:
    // context can then be given to scoring classes both during regular scoring and in
    // pre-processing
    ReadOrComputeMaxDCScore computer = new ReadOrComputeMaxDCScore(dcContext);
    computer.readOrCreateMaxDCScore(controler, dcContext.kValsAreRead());
    this.personsMaxDCScoreUnscaled = computer.getPersonsMaxEpsUnscaled();

    for (String actType : this.dcContext.getFlexibleTypes()) {
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(), "best", actType, dcContext.getConverter(), TransportMode.car));
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(), "best", actType, dcContext.getConverter(), TransportMode.pt));
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(),
              "best",
              actType,
              dcContext.getConverter(),
              TransportMode.bike));
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(),
              "best",
              actType,
              dcContext.getConverter(),
              TransportMode.walk));
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(),
              "best",
              actType,
              dcContext.getConverter(),
              TransportMode.other));
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(),
              "best",
              actType,
              dcContext.getConverter(),
              TransportMode.ride));
      controler.addControlerListener(
          new DistanceStats(
              controler.getConfig(),
              "best",
              actType,
              dcContext.getConverter(),
              TransportMode.transit_walk));
    }
    MaxDCScoreWrapper dcScore = new MaxDCScoreWrapper();
    dcScore.setPersonsMaxDCScoreUnscaled(personsMaxDCScoreUnscaled);
    controler
        .getScenario()
        .addScenarioElement(DestinationChoiceBestResponseContext.ELEMENT_NAME, dcContext);
    controler.getScenario().addScenarioElement(MaxDCScoreWrapper.ELEMENT_NAME, dcScore);

    log.info("dc initialized");
  }
  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();
  }
Exemple #12
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 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();
  }
Exemple #14
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();
  }
Exemple #15
0
 public static void main(String[] args) throws IOException, ClassNotFoundException {
   Config config = ConfigUtils.createConfig();
   ConfigUtils.loadConfig(config, args[0]);
   final Controler controler = new Controler(ScenarioUtils.loadScenario(config));
   if (args.length > 3) {
     final StopStopTimeCalculator stopStopTimeCalculatorEvents =
         new StopStopTimeCalculator(
             controler.getScenario().getTransitSchedule(),
             controler.getConfig().travelTimeCalculator().getTraveltimeBinSize(),
             (int)
                 (controler.getConfig().qsim().getEndTime()
                     - controler.getConfig().qsim().getStartTime()));
     stopStopTimeCalculatorEvents.setUseVehicleIds(false);
     EventsManager eventsManager = EventsUtils.createEventsManager(controler.getConfig());
     eventsManager.addHandler(stopStopTimeCalculatorEvents);
     (new MatsimEventsReader(eventsManager)).readFile(args[3]);
     controler.addOverridingModule(
         new AbstractModule() {
           @Override
           public void install() {
             bindMobsim()
                 .toProvider(
                     new Provider<Mobsim>() {
                       @Override
                       public Mobsim get() {
                         return new PTQSimFactory(stopStopTimeCalculatorEvents.getStopStopTimes())
                             .createMobsim(controler.getScenario(), controler.getEvents());
                       }
                     });
           }
         });
   } else
     controler.addOverridingModule(
         new AbstractModule() {
           @Override
           public void install() {
             bindMobsim()
                 .toProvider(
                     new Provider<Mobsim>() {
                       @Override
                       public Mobsim get() {
                         return new PTQSimFactory()
                             .createMobsim(controler.getScenario(), controler.getEvents());
                       }
                     });
           }
         });
   controler
       .getConfig()
       .controler()
       .setOverwriteFileSetting(
           true
               ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles
               : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists);
   controler.addControlerListener(
       new CalibrationStatsListener(
           controler.getEvents(),
           new String[] {args[1], args[2]},
           1,
           "Travel Survey (Benchmark)",
           "Red_Scheme",
           new HashSet<Id<Person>>()));
   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);
   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 TransitRouterEventsWSFactory factory =
       new TransitRouterEventsWSFactory(
           controler.getScenario(),
           waitTimeCalculator.getWaitTimes(),
           stopStopTimeCalculator.getStopStopTimes());
   controler.addOverridingModule(
       new AbstractModule() {
         @Override
         public void install() {
           bind(TransitRouter.class).toProvider(factory);
         }
       });
   controler.run();
 }
  public static void main(final String[] args) {
    log.info(
        "Starting the matsim run from the urbansim interface.  This looks a little rough initially since 'normal' matsim");
    log.info("is not entered until later (after 'DONE with demand generation from urbansim').");

    int year = 0;
    double samplingRate = 0.01;
    for (int ii = 1; ii < args.length; ii++) { // args[0] is the config file
      log.info(" ii: " + ii + " args[ii]: " + args[ii]);
      String[] parts = args[ii].split("=");
      if (parts[0].equals("--year")) {
        year = Integer.parseInt(parts[1]);
      } else if (parts[0].equals("--samplingRate")) {
        samplingRate = Double.parseDouble(parts[1]);
      }
    }
    log.info("year: " + year + " samplingRate: " + samplingRate);
    for (int ii = args.length - 1; ii >= 1; ii--) {
      args[ii] = "";
    }

    // parse the config arguments so we have a config.  generate scenario data from this

    Config config = ConfigUtils.loadConfig(args[0]);
    MatsimRandom.reset(config.global().getRandomSeed());
    Scenario scenario = ScenarioUtils.createScenario(config);
    ScenarioUtils.loadScenario(scenario);

    // get the network.  Always cleaning it seems a good idea since someone may have modified the
    // input files manually in
    // order to implement policy measures.  Get network early so readXXX can check if links still
    // exist.
    Network network = scenario.getNetwork();

    log.info("");
    log.info("cleaning network ...");
    NetworkCleaner nwCleaner = new NetworkCleaner();
    nwCleaner.run(network);
    log.info("... finished cleaning network.");
    log.info("");

    ReadFromUrbansimParcelModel readFromUrbansim = new ReadFromUrbansimParcelModel(year);

    // read urbansim facilities (these are simply those entities that have the coordinates!)
    ActivityFacilitiesImpl facilities =
        new ActivityFacilitiesImpl("urbansim locations (gridcells _or_ parcels _or_ ...)");
    ActivityFacilitiesImpl zones = new ActivityFacilitiesImpl("urbansim zones");
    readFromUrbansim.readFacilities(facilities, zones);

    new FacilitiesWriter(facilities).write(PATH_TO_OPUS_MATSIM + "tmp/locations.xml.gz");

    Population oldPop;
    if (config.plans().getInputFile() != null) {
      log.info(
          "Population specified in matsim config file; assuming WARM start with pre-existing pop file.");
      log.info(
          "Persons not found in pre-existing pop file are added; persons no longer in urbansim persons file are removed.");
      oldPop = scenario.getPopulation();
      log.info(
          "Note that the `continuation of iterations' will only work if you set this up via different config files for");
      log.info(" every year and know what you are doing.");
    } else {
      log.warn("No population specified in matsim config file; assuming COLD start.");
      log.info("(I.e. generate new pop from urbansim files.)");
      oldPop = null;
    }

    Population newPop =
        ((MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig()))
            .getPopulation();
    // read urbansim persons.  Generates hwh acts as side effect
    readFromUrbansim.readPersons(oldPop, newPop, facilities, network, samplingRate);
    oldPop = null;
    System.gc();

    new PopulationWriter(newPop, network).write(PATH_TO_OPUS_MATSIM + "tmp/pop.xml.gz");

    log.info("### DONE with demand generation from urbansim ###");

    ((MutableScenario) scenario).setPopulation(newPop);
    Controler controler = new Controler(scenario);
    controler
        .getConfig()
        .controler()
        .setOverwriteFileSetting(
            true
                ? OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles
                : OutputDirectoryHierarchy.OverwriteFileSetting.failIfDirectoryExists);

    // The following lines register what should be done _after_ the iterations were run:
    MyControlerListener myControlerListener = new MyControlerListener(zones);
    controler.addControlerListener(myControlerListener);

    // run the iterations, including the post-processing:
    controler.run();
  }