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]);
  }
 // does not matter which distribution is chosen here
 private void assignKValuesPersons() {
   for (Person p : this.scenario.getPopulation().getPersons().values()) {
     this.personsKValues.putAttribute(p.getId().toString(), "k", rnd.getUniform(1.0));
   }
   // write person k values
   ObjectAttributesXmlWriter attributesWriter = new ObjectAttributesXmlWriter(this.personsKValues);
   attributesWriter.writeFile(config.controler().getOutputDirectory() + pkValuesFile);
 }
 private void assignKValuesAlternatives() {
   for (ActivityFacility facility :
       this.scenario.getActivityFacilities().getFacilities().values()) {
     this.facilitiesKValues.putAttribute(facility.getId().toString(), "k", rnd.getUniform(1.0));
   }
   ObjectAttributesXmlWriter attributesWriter =
       new ObjectAttributesXmlWriter(this.facilitiesKValues);
   attributesWriter.writeFile(config.controler().getOutputDirectory() + fkValuesFile);
 }
  /**
   * Writes the population and their attributes to file.
   *
   * @param outputfolder
   */
  public void writePopulation(String outputfolder) {
    if (this.sc.getPopulation().getPersons().size() == 0 || this.personAttributes == null) {
      throw new RuntimeException("Either no persons or person attributes to write.");
    } else {
      LOG.info("Writing population to file...");
      PopulationWriter pw = new PopulationWriter(this.sc.getPopulation(), this.sc.getNetwork());
      pw.writeV5(outputfolder + "Population.xml");

      LOG.info("Writing person attributes to file...");
      ObjectAttributesXmlWriter oaw = new ObjectAttributesXmlWriter(this.personAttributes);
      oaw.setPrettyPrint(true);
      oaw.writeFile(outputfolder + "PersonAttributes.xml");
    }
  }
  /**
   * Writes the households and their attributes to file.
   *
   * @param outputfolder
   */
  public void writeHouseholds(String outputfolder) {
    if (this.households == null || this.householdAttributes == null) {
      throw new RuntimeException("Either no households or household attributes to write.");
    } else {
      LOG.info("Writing households to file...");
      HouseholdsWriterV10 hw = new HouseholdsWriterV10(this.households);
      hw.setPrettyPrint(true);
      hw.writeFile(outputfolder + "Households.xml");

      LOG.info("Writing household attributes to file...");
      ObjectAttributesXmlWriter oaw = new ObjectAttributesXmlWriter(householdAttributes);
      oaw.setPrettyPrint(true);
      oaw.writeFile(outputfolder + "HouseholdAttributes.xml");
    }
  }