public PopulationAgentSourceWithVehicles( final Population population, final AgentFactory agentFactory, final QSim qsim) { this.population = population; this.agentFactory = agentFactory; this.qsim = qsim; this.modeVehicleTypes = new HashMap<String, VehicleType>(); this.mainModes = qsim.getScenario().getConfig().qsim().getMainModes(); for (String mode : mainModes) { modeVehicleTypes.put(mode, VehicleUtils.getDefaultVehicleType()); } }
@Override public void install() { bind(VehicleType.class).annotatedWith(Names.named(VrpAgentSourceQSimModule.DVRP_VEHICLE_TYPE)) .toInstance(VehicleUtils.getDefaultVehicleType()); install(new DvrpBenchmarkTravelTimeModule());// fixed travel times bind(Network.class).annotatedWith(Names.named(DvrpRoutingNetworkProvider.DVRP_ROUTING)) .toProvider(DvrpRoutingNetworkProvider.class) .asEagerSingleton(); installQSimModule(new DynActivityEngineModule()); installQSimModule(new AbstractQSimModule() { @Override protected void configureQSim() { bind(MobsimTimer.class).toProvider(MobsimTimerProvider.class).asEagerSingleton(); } }); } }
@Override public void install() { // Visualisation of schedules for DVRP DynAgents bind(NonPlanAgentQueryHelper.class).to(VrpAgentQueryHelper.class); bind(VehicleType.class).annotatedWith(Names.named(VrpAgentSourceQSimModule.DVRP_VEHICLE_TYPE)) .toInstance(VehicleUtils.getDefaultVehicleType()); install(new DvrpTravelTimeModule()); bind(Network.class).annotatedWith(Names.named(DvrpRoutingNetworkProvider.DVRP_ROUTING)) .toProvider(DvrpRoutingNetworkProvider.class) .asEagerSingleton(); installQSimModule(new DynActivityEngineModule()); installQSimModule(new AbstractQSimModule() { @Override protected void configureQSim() { bind(MobsimTimer.class).toProvider(MobsimTimerProvider.class).asEagerSingleton(); } }); } }
private Map<String, VehicleType> getMode2VehicleType(){ Map<String, VehicleType> modeVehicleTypes = new HashMap<>(); switch ( this.qSimConfigGroup.getVehiclesSource() ) { case defaultVehicle: for (String mode : this.qSimConfigGroup.getMainModes()) { // initialize each mode with default vehicle type: VehicleType defaultVehicleType = VehicleUtils.getDefaultVehicleType(); modeVehicleTypes.put(mode, defaultVehicleType); if( scenario.getVehicles().getVehicleTypes().get(defaultVehicleType.getId())==null) { scenario.getVehicles().addVehicleType(defaultVehicleType); // adding default vehicle type to vehicles container } } break; case modeVehicleTypesFromVehiclesData: for (String mode : qSimConfigGroup.getMainModes()) { VehicleType vehicleType = scenario.getVehicles().getVehicleTypes().get( Id.create(mode, VehicleType.class) ) ; Gbl.assertNotNull(vehicleType); modeVehicleTypes.put(mode, vehicleType ); } break; case fromVehiclesData: // don't do anything break; default: throw new RuntimeException("not implemented yet."); } return modeVehicleTypes; }
@Override public void insertAgentsIntoMobsim() { for (MobSimVehicleRoute vRoute : vehicleRoutes) { MobsimAgent agent = this.agentFactory.createMobsimAgentFromPerson(vRoute.getPlan().getPerson()); Vehicle vehicle = null; if(vRoute.getVehicle() == null){ vehicle = VehicleUtils.getFactory().createVehicle(Id.create(agent.getId(), Vehicle.class), VehicleUtils.getDefaultVehicleType()); log.warn("vehicle for agent "+vRoute.getPlan().getPerson().getId() + " is missing. set default vehicle where maxVelocity is solely defined by link.speed."); } else if(vRoute.getVehicle().getType() == null){ vehicle = VehicleUtils.getFactory().createVehicle(Id.create(agent.getId(), Vehicle.class), VehicleUtils.getDefaultVehicleType()); log.warn("vehicleType for agent "+vRoute.getPlan().getPerson().getId() + " is missing. set default vehicleType where maxVelocity is solely defined by link.speed."); } else vehicle = vRoute.getVehicle(); // qsim.createAndParkVehicleOnLink(vehicle, agent.getCurrentLinkId()); QVehicle qVehicle = new QVehicleImpl( vehicle ) ; qsim.addParkedVehicle( qVehicle, agent.getCurrentLinkId() ); // yyyyyy should rather use QVehicleFactory. kai, nov'18 qsim.insertAgentIntoMobsim(agent); mobSimAgents.add(agent); } }
@Override public void insertAgentsIntoMobsim() { Scenario scenario = qSim.getScenario(); Network network = scenario.getNetwork(); VehiclesFactory qSimVehicleFactory = VehicleUtils.getFactory(); for (int i = 0; i < AGENT_COUNT; i++) { RandomDynAgentLogic agentLogic = new RandomDynAgentLogic(network); Id<Person> id = Id.createPersonId(i); Id<Link> startLinkId = RandomDynAgentLogic.chooseRandomElement(network.getLinks().keySet()); DynAgent agent = new DynAgent(id, startLinkId, qSim.getEventsManager(), agentLogic); // qSim.createAndParkVehicleOnLink(qSimVehicleFactory.createVehicle(Id.create(id, Vehicle.class), // VehicleUtils.getDefaultVehicleType()), startLinkId); final Vehicle vehicle = qSimVehicleFactory.createVehicle( Id.create( id, Vehicle.class ), VehicleUtils.getDefaultVehicleType() ) ; QVehicle qVehicle = new QVehicleImpl( vehicle ) ; // yyyyyy should use factory. kai, nov'18 qSim.addParkedVehicle( qVehicle, startLinkId ); qSim.insertAgentIntoMobsim( agent ); } } }
VehicleUtils.getDefaultVehicleType()); scenario.getVehicles().addVehicleType(VehicleUtils.getDefaultVehicleType()); scenario.getVehicles().addVehicle(vehicle);
VehicleUtils.getDefaultVehicleType()); scenario.getVehicles().addVehicleType(VehicleUtils.getDefaultVehicleType()); scenario.getVehicles().addVehicle(vehicle);