コード例 #1
0
ファイル: MyRuns.java プロジェクト: Janekdererste/matsim
  /**
   * Used this routine for MeisterEtAl_Heureka_2008 paper, plot of number of deps, arrs by activity
   * type to visualize the time distribution from microcensus.
   */
  public static void analyseInitialTimes(Config config) {

    MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config);
    // initialize scenario with events from a given events file
    // - network
    logger.info("Reading network xml file...");
    new MatsimNetworkReader(scenario).readFile(scenario.getConfig().network().getInputFile());
    logger.info("Reading network xml file...done.");
    // - population
    PersonAlgorithm pa = new PersonAnalyseTimesByActivityType(TIME_BIN_SIZE);
    ArrayList<PersonAlgorithm> plansAlgos = new ArrayList<PersonAlgorithm>();
    plansAlgos.add(pa);

    PopulationImpl matsimAgentPopulation = (PopulationImpl) scenario.getPopulation();
    matsimAgentPopulation.setIsStreaming(true);
    PopulationReader plansReader = new MatsimPopulationReader(scenario);
    plansReader.readFile(scenario.getConfig().plans().getInputFile());
    matsimAgentPopulation.printPlansCount();
    int[][] numDeps = ((PersonAnalyseTimesByActivityType) pa).getNumDeps();
    MyRuns.writeAnArray(numDeps, "output/deptimes.txt");
    int[][] numArrs = ((PersonAnalyseTimesByActivityType) pa).getNumArrs();
    MyRuns.writeAnArray(numArrs, "output/arrtimes.txt");
    int[][] numTraveling = ((PersonAnalyseTimesByActivityType) pa).getNumTraveling();
    MyRuns.writeAnArray(numTraveling, "output/traveling.txt");
  }
コード例 #2
0
  @Test
  public void testOutsideTollTime() {
    Config config = matsimTestUtils.loadConfig(null);
    MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config);
    Fixture.createNetwork2(scenario);

    // a basic toll where only the morning hours are tolled
    RoadPricingSchemeImpl toll = new RoadPricingSchemeImpl();
    toll.setType("area");
    toll.addLink(Id.createLinkId("5"));
    toll.addLink(Id.createLinkId("11"));
    toll.addCost(8 * 3600, 10 * 3600, 1.0); // high costs!

    Fixture.createPopulation2(scenario);
    Population population = scenario.getPopulation();

    runOnAll(testee(scenario, toll), population);
    Id id1 = Id.createPersonId("1");
    LegImpl leg1 = getLeg1(population, id1);
    LegImpl leg2 = getLeg3(population, id1);

    Fixture.compareRoutes(
        "2 5 6",
        (NetworkRoute)
            leg1
                .getRoute()); // agent should take shortest route, as tolls are not active at that
                              // time
    Fixture.compareRoutes("8 11 12", (NetworkRoute) leg2.getRoute());
  }
コード例 #3
0
  public static void main(String[] args) {

    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    MatsimReader populationReader = new PopulationReader(scenario);
    MatsimNetworkReader networkReader = new MatsimNetworkReader(scenario.getNetwork());
    networkReader.readFile(args[1]);
    populationReader.readFile(args[2]);

    ObjectAttributes bla = new ObjectAttributes();

    new ObjectAttributesXmlReader(bla).readFile(args[0]);

    for (Person p : scenario.getPopulation().getPersons().values()) {
      String act = "home";
      if (bla.getAttribute(p.getId().toString(), "earliestEndTime_leisure") != null)
        act = act + ",leisure";
      //	if (bla.getAttribute(p.getId().toString(), "earliestEndTime_work") != null)
      //		act = act + ",work";
      if (bla.getAttribute(p.getId().toString(), "earliestEndTime_shop") != null)
        act = act + ",shop";
      //	if (bla.getAttribute(p.getId().toString(), "earliestEndTime_education") != null)
      //		act = act + ",education";

      bla.putAttribute(p.getId().toString(), "activities", act);
    }

    ObjectAttributesXmlWriter betaWriter = new ObjectAttributesXmlWriter(bla);
    betaWriter.writeFile(args[3]);
  }
コード例 #4
0
  public static void main(String[] args) {
    MutableScenario s = (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    s.getConfig().transit().setUseTransit(true);
    s.getConfig().scenario().setUseVehicles(true);

    Vehicles v = s.getTransitVehicles();
    TransitSchedule ts = s.getTransitSchedule();
    PopulationImpl p = (PopulationImpl) s.getPopulation();

    new MatsimNetworkReader(s).readFile(NETWORK);
    new VehicleReaderV1(v).readFile(VEHICLES);
    new TransitScheduleReader(s).readFile(SCHEDULE);
    log.info("build transit router...");
    TransitRouterConfig tRConfig =
        new TransitRouterConfig(
            s.getConfig().planCalcScore(),
            s.getConfig().plansCalcRoute(),
            s.getConfig().transitRouter(),
            s.getConfig().vspExperimental());

    TransitRouterImpl router = new TransitRouterImpl(tRConfig, ts);

    PtRouter ptR = new PtRouter(router);

    p.setIsStreaming(true);
    p.addAlgorithm(ptR);

    log.info("start processing persons...");
    new MatsimPopulationReader(s).readFile(PLANS);

    ptR.close();
  }
コード例 #5
0
ファイル: MyRuns.java プロジェクト: Janekdererste/matsim
  public static Population initMatsimAgentPopulation(
      final String inputFilename,
      final boolean isStreaming,
      final ArrayList<PersonAlgorithm> algos,
      MutableScenario scenario) {

    PopulationImpl population = (PopulationImpl) scenario.getPopulation();

    System.out.println("  reading plans xml file... ");
    population.setIsStreaming(isStreaming);

    if (isStreaming) {
      // add plans algos for streaming
      if (algos != null) {
        for (PersonAlgorithm algo : algos) {
          population.addAlgorithm(algo);
        }
      }
    }
    PopulationReader plansReader = new MatsimPopulationReader(scenario);
    plansReader.readFile(inputFilename);
    population.printPlansCount();
    System.out.println("  done.");

    return population;
  }
コード例 #6
0
ファイル: MyRuns.java プロジェクト: Janekdererste/matsim
  public void analyzeModeChainFeasibility(Config config) {

    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());

    // initialize scenario with events from a given events file
    // - network
    logger.info("Reading network xml file...");
    Network network = scenario.getNetwork();
    new MatsimNetworkReader(scenario).readFile(config.network().getInputFile());
    logger.info("Reading network xml file...done.");

    // - facilities
    logger.info("Reading facilities xml file...");
    ActivityFacilities facilities = scenario.getActivityFacilities();
    new MatsimFacilitiesReader(scenario).parse(config.facilities().getInputFile());
    logger.info("Reading facilities xml file...");

    // - population
    PersonAnalyzeModeChainFeasibility pa =
        new PersonAnalyzeModeChainFeasibility(facilities, network);
    ArrayList<PersonAlgorithm> plansAlgos = new ArrayList<PersonAlgorithm>();
    plansAlgos.add(pa);

    PopulationImpl matsimAgentPopulation = (PopulationImpl) scenario.getPopulation();
    matsimAgentPopulation.setIsStreaming(true);
    matsimAgentPopulation.addAlgorithm(pa);
    PopulationReader plansReader = new MatsimPopulationReader(scenario);
    plansReader.readFile(config.plans().getInputFile());

    logger.info("Number of selected plans which are infeasible: " + pa.getNumInfeasiblePlans());
  }
コード例 #7
0
  public static void main(String[] args) {

    String dataPath = "/Volumes/DATA 1 (WD 2 TB)/SimMethanaOutput_120215/";
    String populationFile =
        "/Volumes/DATA 1 (WD 2 TB)/SimMethanaOutput_120215/w8-18_homo/output_plans.xml.gz";
    String individualSelectedScoreFile =
        "/Volumes/DATA 1 (WD 2 TB)/SimMethanaOutput_120215/w8-18_homo/individualSelectedBenefits";

    File directory = new File(dataPath);
    File[] fList = directory.listFiles();

    for (File file : fList) {
      if (file.isDirectory()) {
        HashMap<String, String> scoreMap = new HashMap<String, String>();
        MutableScenario scenario =
            (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());

        System.out.println(file.getAbsolutePath());
        populationFile = file.getAbsolutePath() + "/output_plans.xml.gz";
        individualSelectedScoreFile = file.getAbsolutePath() + "/individualSelectedBenefits.csv";

        new PopulationReaderMatsimV5(scenario).readFile(populationFile);
        System.out.println("   Population size: " + scenario.getPopulation().getPersons().size());

        // Read selected plan score
        System.out.println("   Reading population from: " + populationFile);
        for (Person person : scenario.getPopulation().getPersons().values()) {
          scoreMap.put(person.getId().toString(), person.getSelectedPlan().getScore().toString());
        }

        System.out.println("   Map size: " + scoreMap.size());
        // Write selected plan scores;
        System.out.println(
            "   Writting individial selected plan scores to: " + individualSelectedScoreFile);
        Writer writer = new Writer();
        writer.creteFile(individualSelectedScoreFile);

        for (String personId : scoreMap.keySet()) {
          writer.writeLine(personId + "," + scoreMap.get(personId));
        }

        writer.close();
      }
    }

    System.out.println("Done!");
  }
コード例 #8
0
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    MutableScenario scenario1 =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    PopulationReader populationReader1 = new MatsimPopulationReader(scenario1);
    MatsimNetworkReader networkReader1 = new MatsimNetworkReader(scenario1);
    networkReader1.readFile(args[0]);
    populationReader1.readFile(args[1]);

    MutableScenario scenario2 =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    PopulationReader populationReader2 = new MatsimPopulationReader(scenario2);
    MatsimNetworkReader networkReader2 = new MatsimNetworkReader(scenario2);
    networkReader2.readFile(args[0]);
    populationReader2.readFile(args[2]);

    int car = 0;
    int pt = 0;
    int walk = 0;
    int bike = 0;
    for (Person p : scenario2.getPopulation().getPersons().values()) {

      for (PlanElement pe :
          scenario1
              .getPopulation()
              .getPersons()
              .get(p.getId())
              .getSelectedPlan()
              .getPlanElements()) {

        if (pe instanceof Leg) {

          if (((Leg) pe).getMode().equals("car")) car++;
          else if (((Leg) pe).getMode().equals("pt")) pt++;
          else if (((Leg) pe).getMode().equals("walk")) walk++;
          else if (((Leg) pe).getMode().equals("bike")) bike++;
        }
      }
    }

    System.out.println(car + " " + pt + " " + bike + " " + walk);
  }
コード例 #9
0
  public void run(String plansFilePath, String networkFilePath) {
    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    PopulationReader populationReader = new MatsimPopulationReader(scenario);
    MatsimNetworkReader networkReader = new MatsimNetworkReader(scenario.getNetwork());
    networkReader.readFile(networkFilePath);
    //	new FacilitiesReaderMatsimV1(scenario).readFile(facilitiesfilePath);
    populationReader.readFile(plansFilePath);

    int size = scenario.getPopulation().getPersons().values().size();
    Object[] arr = scenario.getPopulation().getPersons().values().toArray();

    for (int i = 1; i < size; i++) {
      if (i % 4 != 0) {
        scenario.getPopulation().getPersons().remove(((Person) arr[i]).getId());
      }
    }

    new PopulationWriter(scenario.getPopulation(), scenario.getNetwork())
        .writeFileV4("./plans_25perc.xml.gz");
  }
コード例 #10
0
  /** Tests a few cases where the router can decide if it is better to pay the toll or not. */
  @Test
  public void testBestAlternatives() {
    Config config = matsimTestUtils.loadConfig(null);
    MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config);
    Fixture.createNetwork2(scenario);

    // a basic toll where only the morning hours are tolled
    RoadPricingSchemeImpl toll = new RoadPricingSchemeImpl();
    toll.setType("area");
    toll.addLink(Id.createLinkId("5"));
    toll.addLink(Id.createLinkId("11"));
    Cost morningCost = toll.addCost(6 * 3600, 10 * 3600, 0.12);
    /* Start with a rather low toll. The toll is also so low, because we only
     * have small network with short links: the cost to travel across one link
     * is: 20s * (-6 EUR / h) = 20 * (-6) / 3600 = 0.03333
     */

    Fixture.createPopulation2(scenario);
    Population population = scenario.getPopulation();

    Id id1 = Id.createPersonId("1");

    // case 1: toll only in morning, it is cheaper to drive around
    runOnAll(testee(scenario, toll), population);
    Fixture.compareRoutes("2 3 4 6", (NetworkRoute) getLeg1(population, id1).getRoute());
    Fixture.compareRoutes("8 11 12", (NetworkRoute) getLeg3(population, id1).getRoute());

    // case 2: now add a toll in the afternoon too, so it is cheaper to pay the toll
    Cost afternoonCost = toll.addCost(14 * 3600, 18 * 3600, 0.12);
    runOnAll(testee(scenario, toll), population);
    Fixture.compareRoutes("2 5 6", (NetworkRoute) getLeg1(population, id1).getRoute());
    Fixture.compareRoutes("8 11 12", (NetworkRoute) getLeg3(population, id1).getRoute());

    // case 3: change the second leg to a non-car mode, than it should be the same as case 1
    String oldMode = getLeg3(population, id1).getMode();
    getLeg3(population, id1).setMode(TransportMode.pt);
    runOnAll(testee(scenario, toll), population);
    Fixture.compareRoutes("2 3 4 6", (NetworkRoute) getLeg1(population, id1).getRoute());
    // and change the mode back
    getLeg3(population, id1).setMode(oldMode);

    // case 4: now remove the costs and add them again, but with a higher amount
    toll.removeCost(morningCost);
    toll.removeCost(afternoonCost);
    toll.addCost(6 * 3600, 10 * 3600, 0.7);
    toll.addCost(14 * 3600, 18 * 3600, 0.7);
    // the agent should now decide to drive around
    runOnAll(testee(scenario, toll), population);
    Fixture.compareRoutes("2 3 4 6", (NetworkRoute) getLeg1(population, id1).getRoute());
  }
コード例 #11
0
ファイル: PersonDataCS.java プロジェクト: matsim-org/matsim
  public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    MatsimReader populationReader = new PopulationReader(scenario);
    MatsimNetworkReader networkReader = new MatsimNetworkReader(scenario.getNetwork());
    networkReader.readFile(args[1]);
    populationReader.readFile(args[0]);

    final BufferedWriter outLinkrb = IOUtils.getBufferedWriter(args[2]);
    final BufferedWriter outLinkff = IOUtils.getBufferedWriter(args[3]);

    for (Person p : scenario.getPopulation().getPersons().values()) {
      boolean rb = false;
      boolean ff = false;
      Person pImpl = p;
      Plan plan = p.getSelectedPlan();

      for (PlanElement pe : plan.getPlanElements()) {

        if (pe instanceof Leg) {

          if (((Leg) pe).getMode().equals("cs_fix_gas") && !rb) {
            outLinkrb.write(p.getId().toString() + " ");
            outLinkrb.write(Integer.toString(PersonUtils.getAge(pImpl)) + " ");
            outLinkrb.write(PersonUtils.getSex(pImpl) + " ");
            outLinkrb.write(PersonUtils.getCarAvail(pImpl));
            outLinkrb.newLine();
            rb = true;

          } else if (((Leg) pe).getMode().equals("cs_flex_gas") && !ff) {
            outLinkff.write(p.getId().toString() + " ");
            outLinkff.write(Integer.toString(PersonUtils.getAge(pImpl)) + " ");
            outLinkff.write(PersonUtils.getSex(pImpl) + " ");
            outLinkff.write(PersonUtils.getCarAvail(pImpl));
            outLinkff.newLine();
            ff = true;
          }
        }
      }
    }
    outLinkrb.flush();
    outLinkrb.close();
    outLinkff.flush();
    outLinkff.close();
  }
コード例 #12
0
ファイル: MyRuns.java プロジェクト: Janekdererste/matsim
  void moveInitDemandToDifferentNetwork(final String[] args) {

    // read ivtch demand
    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    Config config = scenario.getConfig();
    MeisterkConfigGroup meisterkConfigGroup = new MeisterkConfigGroup();
    config.addModule(meisterkConfigGroup);
    ConfigReader reader = new ConfigReader(config);
    reader.readFile(args[0]);
    MatsimRandom.reset(config.global().getRandomSeed());

    ScenarioUtils.loadScenario(scenario);

    Population population = scenario.getPopulation();
    Network network = scenario.getNetwork();

    // remove links and routes
    PersonRemoveLinkAndRoute personRemoveLinkAndRoute = new PersonRemoveLinkAndRoute();
    personRemoveLinkAndRoute.run(population);

    // switch to new network in scenario

    // this is what I found ...
    //		ScenarioImpl scenario2 = (ScenarioImpl)
    // ScenarioUtils.createScenario(ConfigUtils.createConfig());
    //		new MatsimNetworkReader(scenario2).parse(config.getParam(MeisterkConfigGroup.GROUP_NAME,
    // "inputSecondNetworkFile"));
    //		scenario.setNetwork(scenario2.getNetwork());

    // ... but I think we can just give the existing scenario to the reader, so I am changing this.
    // There is so much commented out in this
    // code that it is probably no longer used anyways. kai, sep'15
    new MatsimNetworkReader(scenario)
        .parse(config.getParam(MeisterkConfigGroup.GROUP_NAME, "inputSecondNetworkFile"));

    // run XY2Links
    XY2Links xY2Links = new XY2Links();

    // write out new initial demand
    // new PopulationWriter(population,
    // network).write(null);//scenario.getConfig().plans().getOutputFile());

  }
コード例 #13
0
  /**
   * Tests cases where the agent must pay the toll because one of its activities is on a tolled link
   */
  @Test
  public void testTolledActLink() {
    Config config = matsimTestUtils.loadConfig(null);
    MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config);
    Fixture.createNetwork2(scenario);

    // a basic toll where only the morning hours are tolled
    RoadPricingSchemeImpl toll = new RoadPricingSchemeImpl();
    toll.setType("area");
    Id.createLinkId("7");
    toll.addCost(6 * 3600, 10 * 3600, 0.06);

    Fixture.createPopulation2(scenario);
    Population population = scenario.getPopulation();

    runOnAll(testee(scenario, toll), population);
    Id id1 = Id.createPersonId("1");

    Fixture.compareRoutes(
        "2 5 6",
        (NetworkRoute) getLeg1(population, id1).getRoute()); // agent should take shortest route
    Fixture.compareRoutes("8 11 12", (NetworkRoute) getLeg3(population, id1).getRoute());
  }
コード例 #14
0
  /** @param args */
  public static void main(String[] args) {
    String basePath = "H:/data/experiments/ARTEMIS/output/run2/";
    String plansFile = basePath + "output_plans.xml.gz";
    String networkFile = basePath + "output_network.xml.gz";
    String facilititiesPath = basePath + "output_facilities.xml.gz";
    MutableScenario scenario =
        (MutableScenario) GeneralLib.readScenario(plansFile, networkFile, facilititiesPath);

    int nuberTripsWorkRelated = 0;
    int numberOfTripsShopAndLeisureRelated = 0;

    Population population = scenario.getPopulation();

    for (Person person : population.getPersons().values()) {
      Plan plan = person.getSelectedPlan();

      Activity prevAct = null;
      Leg prevLeg = null;

      for (PlanElement pe : plan.getPlanElements()) {
        if (pe instanceof Activity) {
          Activity activity = (Activity) pe;
          if (prevLeg != null && prevLeg.getMode().equalsIgnoreCase("car")) {

            // a) COMING FROM OC TO C FOR WORK
            if (!isInsideCordon(prevAct) && isInsideCordon(activity)) {
              if (equalsActType(activity, "work")) {
                nuberTripsWorkRelated++;
              }
            }

            // b)LEAVING C FROM WORK TO OC
            if (isInsideCordon(prevAct) && !isInsideCordon(activity)) {
              if (equalsActType(prevAct, "work")) {
                nuberTripsWorkRelated++;
              }
            }

            // c)COMING FROM C TO C FOR WORK
            if (isInsideCordon(prevAct) && isInsideCordon(activity)) {
              if (equalsActType(activity, "work")) {
                nuberTripsWorkRelated++;
              }
            }

            // d) LEAVING C FROM WORK TO C
            if (isInsideCordon(prevAct) && isInsideCordon(activity)) {
              if (equalsActType(prevAct, "work")) {
                nuberTripsWorkRelated++;
              }
            }

            // e) COMING FROM OC TO C FOR ACT (shop/leisure)
            if (!isInsideCordon(prevAct) && isInsideCordon(activity)) {
              if (equalsActType(activity, "shop") || equalsActType(activity, "leisure")) {
                numberOfTripsShopAndLeisureRelated++;
              }
            }

            // f) COMING FROM C TO C FOR ACT
            if (isInsideCordon(prevAct) && isInsideCordon(activity)) {
              if (equalsActType(activity, "shop") || equalsActType(activity, "leisure")) {
                numberOfTripsShopAndLeisureRelated++;
              }
            }
          }

          prevAct = activity;
        }

        if (pe instanceof Leg) {
          prevLeg = (Leg) pe;
        }
      }
    }

    System.out.println("nuberTripsWorkRelated:" + nuberTripsWorkRelated);
    System.out.println("numberOfTripsShopAndLeisureRelated:" + numberOfTripsShopAndLeisureRelated);
  }
コード例 #15
0
ファイル: TravelTime.java プロジェクト: Janekdererste/matsim
  public void run(String plansFilePath, String networkFilePath) throws IOException {
    populationReader.readFile(plansFilePath);
    networkReader.readFile(networkFilePath);
    double distanceCar = 0.0;
    int countC = 0;
    double distanceBike = 0.0;
    int countB = 0;
    double distanceWalk = 0.0;
    int countW = 0;
    double distancePt = 0.0;
    int countPt = 0;
    int count = 0;
    Population pop = scenario.getPopulation();
    for (Person p : pop.getPersons().values()) {
      Leg previousLeg = null;
      for (PlanElement pe : p.getSelectedPlan().getPlanElements()) {

        if (pe instanceof Leg) {
          previousLeg = (Leg) pe;
          /*if (previousActivity.getType() == "shopgrocery") {
          	if (previousLeg.getMode() == "car") {
          		distanceCar += previousLeg.getTravelTime();
          		countC++;
          		count++;
          	}
          	else if (previousLeg.getMode() == "bike") {
          		distanceBike += previousLeg.getTravelTime();
          		countB++;
          		count++;
          	}
          	else if (previousLeg.getMode() == "walk") {
          		distanceWalk += previousLeg.getTravelTime();
          		countW++;
          		count++;
          	}
          	else if (previousLeg.getMode() == "pt") {
          		distancePt += previousLeg.getTravelTime();
          		countPt++;
          		count++;
          	}
          }*/

        } else if (pe instanceof Activity) {

          // if (((Activity) pe).getType().equals( "shopgrocery" )) {
          if (previousLeg != null) {
            if (previousLeg.getMode().equals("car")) {
              distanceCar += previousLeg.getTravelTime();
              countC++;
              count++;
            } else if (previousLeg.getMode().equals("bike")) {
              distanceBike += previousLeg.getTravelTime();
              countB++;
              count++;
            } else if (previousLeg.getMode().equals("walk")) {
              distanceWalk += previousLeg.getTravelTime();
              countW++;
              count++;
            } else if (previousLeg.getMode().equals("pt")) {
              distancePt += previousLeg.getTravelTime();
              countPt++;
              count++;
            }
          }
        }
      }
    }
    System.out.println((distanceCar + distanceBike + distanceWalk + distancePt) / count);
    System.out.println(distanceCar / (double) countC);
    System.out.println(distanceBike / (double) countB);
    System.out.println(distanceWalk / (double) countW);
    System.out.println(distancePt / (double) countPt);
  }
コード例 #16
0
  public void run(String plansFilePath, String networkFilePath) {
    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    MatsimReader populationReader = new PopulationReader(scenario);
    MatsimNetworkReader networkReader = new MatsimNetworkReader(scenario.getNetwork());
    networkReader.readFile(networkFilePath);
    populationReader.readFile(plansFilePath);
    int countE = 0;
    int countW = 0;
    int countS = 0;
    int countL = 0;
    int countH = 0;
    int count = 0;
    int work = 0;
    boolean cs = false;
    int number = 0;
    for (Person p : scenario.getPopulation().getPersons().values()) {
      ArrayList<Activity> c = new ArrayList<Activity>();
      Activity a = null;
      cs = false;
      for (PlanElement pe : p.getSelectedPlan().getPlanElements()) {

        if (pe instanceof Activity) {
          a = (Activity) pe;

        } else if (pe instanceof Leg) {

          if (a.getType().startsWith("home")) {

            if (((Leg) pe).getMode().equals("walk_rb")) number++;
            // startWork = true;
          }
        }

        if (pe instanceof Leg) {

          if ((((Leg) pe).getMode().equals("twowaycarsharing"))
              || ((Leg) pe).getMode().equals("walk_rb")) {
            cs = true;

          } else cs = false;

        } else if (pe instanceof Activity) {
          if (cs) {

            if (((Activity) pe).getType().startsWith("work")) {
              if (!c.isEmpty()) work++;
              else {

              }
              countW++;
              // time += (((Activity) pe).getMaximumDuration());
              c.add((Activity) pe);
              count++;
            } else if (((Activity) pe).getType().startsWith("education")) {
              countE++;
              count++;
            } else if (((Activity) pe).getType().startsWith("shop")) {
              countS++;
              count++;
            } else if (((Activity) pe).getType().startsWith("leisure")) {
              countL++;
              count++;
            } else if (((Activity) pe).getType().startsWith("home")) {
              countH++;
              count++;
            }
          }
        }
      }
    }
    System.out.println(work);
    System.out.println(number);
    System.out.println((double) countS / count * 100.0);
    System.out.println((double) countW / count * 100.0);
    System.out.println((double) countE / count * 100.0);
    System.out.println((double) countL / count * 100.0);
    System.out.println((double) countH / count * 100.0);
    System.out.println(count);
    System.out.println((double) countS / count);

    // new PopulationWriter(scenario.getPopulation(),
    // scenario.getNetwork()).writeFileV4(outputFilePath + "/plans_1p.xml");

  }
コード例 #17
0
 /*
  * TODO: Construct scenario with knowledge to compare plans before and after loc. choice
  */
 public void testHandlePlan() {
   RandomLocationMutator randomlocationmutator = this.initialize();
   randomlocationmutator.run(
       scenario.getPopulation().getPersons().get(Id.create("1", Person.class)).getSelectedPlan());
 }
コード例 #18
0
ファイル: IncomeCarSharing.java プロジェクト: sebhoerl/matsim
  public static void main(String[] args) throws IOException {

    final BufferedReader readLink = IOUtils.getBufferedReader(args[0]);
    MutableScenario scenario =
        (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
    PopulationReader populationReader = new MatsimPopulationReader(scenario);
    MatsimNetworkReader networkReader = new MatsimNetworkReader(scenario.getNetwork());
    Config config = scenario.getConfig();
    final BufferedWriter outLink = IOUtils.getBufferedWriter(args[3]);

    scenario.getConfig().getModule("qsim").addParam("mainMode", "cs_fix_gas");

    int count = 0;
    networkReader.readFile(args[1]);
    populationReader.readFile(args[2]);

    Network network = scenario.getNetwork();
    String s = readLink.readLine();
    s = readLink.readLine();
    String previous = null;
    int counterrb = 0;
    int counterff = 0;
    double income = 0.0;
    boolean ff = false;
    boolean rb = false;
    while (s != null) {
      Leg lastLeg = null;
      String[] arr = s.split("\t");

      double startTime = Double.parseDouble(arr[2]);
      double endTime = Double.parseDouble(arr[3]);
      Id<Person> personId = Id.create(arr[0], Person.class);

      if (previous == null || !previous.equals(arr[0])) {
        counterrb = 0;
        counterff = 0;
      }

      if (arr[1].contains("c")) {
        rb = true;
        ff = false;
      } else {
        rb = false;
        ff = true;
      }

      if (rb) {

        Person p = scenario.getPopulation().getPersons().get(personId);
        boolean cs = false;
        double distance = 0.0;
        int c = 0;
        for (PlanElement pe : p.getSelectedPlan().getPlanElements()) {

          if (pe instanceof Activity) {
            if (c == counterrb) {
              if (((Activity) pe).getType().equals("cs_interaction")
                  && ((Activity) pe).getLinkId().toString().equals(arr[4])
                  && !cs) {
                cs = true;
              } else if (((Activity) pe).getType().equals("cs_interaction")
                  && ((Activity) pe).getLinkId().toString().equals(arr[4])
                  && cs
                  && lastLeg.getMode().equals("cs_fix_gas")) {

                cs = false;
                counterrb += 2;
                // write the distance here
                outLink.write(arr[0]);
                outLink.write(" ");
                outLink.write(arr[1]);
                outLink.write(" ");
                outLink.write(arr[2]);
                outLink.write(" ");
                outLink.write(arr[3]);
                outLink.write(" ");
                outLink.write(Double.toString(distance));
                outLink.newLine();
                break;
              }
            }

          } else if (pe instanceof Leg) {
            lastLeg = (Leg) pe;
            if (c < counterrb) {
              if (((Leg) pe).getMode().equals("cs_walk")) {
                c++;
              }
            } else if (cs) {

              if (((Leg) pe).getMode().equals("cs_fix_gas")) {

                Route r = ((Leg) pe).getRoute();
                GenericRouteImpl rg = (GenericRouteImpl) r;
                String grr = rg.getRouteDescription();

                String[] arr1 = grr.split("\\s");

                for (int i = 0; i < arr1.length; i++) {

                  distance += network.getLinks().get(Id.create(arr1[i], Link.class)).getLength();
                }
              }
            }
          }
        }
      }
      // else {
      /*
      	Person p = scenario.getPopulation().getPersons().get(personId);
      	double distance = 0.0;

      	for(PlanElement pe:p.getSelectedPlan().getPlanElements()) {
      		int c = 0;

      		if (pe instanceof Leg) {
      				lastLeg = (Leg) pe;
      				if (c < counterff) {
      					if (((Leg) pe).getMode().equals("cs_flex_gas")) {
      						c++;

      					}
      				}
      				else if (((Leg) pe).getMode().equals("cs_flex_gas")) {

      						Route r = ((Leg) pe).getRoute();
      						GenericRouteImpl rg = (GenericRouteImpl) r;
      						String grr = rg.getRouteDescription();
      						System.out.println(grr);
      						if (grr == null) {
      							System.out.println("bla");
      							counterff++;
      							break;
      						}
      						String[] arr1 = grr.split("\\s");

      						for (int i = 0; i < arr1.length; i++) {

      							distance += network.getLinks().get(Id.create(arr1[i])).getLength();
      						}

      						//write here the distance
      						outLink.write(arr[0]);
      						outLink.write(" ");
      						outLink.write(arr[1]);
      						outLink.write(" ");
      						outLink.write(arr[2]);
      						outLink.write(" ");
      						outLink.write(arr[3]);
      						outLink.write(" ");
      						outLink.write(Double.toString(distance));
      						outLink.newLine();
      						counterff++;
      						break;

      			}

      		}
      	}

      }*/

      previous = arr[0];
      s = readLink.readLine();
    }
    outLink.flush();
    outLink.close();
    System.out.println(income);
    System.out.println(count);
  }