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(); }