QVehicle veh = new QVehicleImpl( basicVehicle ) ;
@Override public String toString() { return "Vehicle Id " + getId() + ", driven by (personId) " + this.driver.getId() + ", on link " + this.currentLink.getId(); }
@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 ); } } }
@Override public void setDriver( final DriverAgent driver ) { if (driver != null) { if (this.driver != null && !this.driver.getId().equals(driver.getId())) { throw new RuntimeException( "A driver (" + this.driver.getId() +") " + "is already set in vehicle " + this.getId() + ". " + "Setting agent " + driver.getId().toString() + " is not possible!"); } } // TODO: To make this check possible, we would need something like removeDriver(). // else { // throw new RuntimeException( "Driver to be set in vehicle " + this.getId() + // " is null!"); // } this.driver = driver; }
@Override public void insertAgentsIntoMobsim() { VehiclesFactory vehicleFactory = VehicleUtils.getFactory(); for (Vehicle vrpVeh : fleet.getVehicles().values()) { Id<Vehicle> id = vrpVeh.getId(); Id<Link> startLinkId = vrpVeh.getStartLink().getId(); VrpAgentLogic vrpAgentLogic = new VrpAgentLogic(optimizer, nextActionCreator, vrpVeh); DynAgent vrpAgent = new DynAgent(Id.createPersonId(id), startLinkId, qSim.getEventsManager(), vrpAgentLogic); QVehicle mobsimVehicle = new QVehicleImpl( vehicleFactory.createVehicle(Id.create(id, org.matsim.vehicles.Vehicle.class), vehicleType)); vrpAgent.setVehicle(mobsimVehicle); mobsimVehicle.setDriver(vrpAgent); qSim.addParkedVehicle(mobsimVehicle, startLinkId); qSim.insertAgentIntoMobsim(vrpAgent); } } }
@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); } }
@Test public void testAdd() { Fixture f = new Fixture(isUsingFastCapacityUpdate); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); QVehicle v = new QVehicleImpl(f.basicVehicle); Person p = PopulationUtils.getFactory().createPerson(Id.create("1", Person.class)); p.addPlan(PopulationUtils.createPlan()); v.setDriver(createAndInsertPersonDriverAgentImpl(p, f.sim)); f.qlink1.getAcceptingQLane().addFromUpstream(v); assertEquals(1, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertFalse(f.qlink1.getAcceptingQLane().isAcceptingFromUpstream()); assertTrue(f.qlink1.isNotOfferingVehicle()); }
/** * Tests that vehicles parked on a link are found with {@link NetsimLink#getVehicle(Id)} * and {@link NetsimLink#getAllVehicles()}. * * @author mrieser */ @Test public void testGetVehicle_Parking() { Fixture f = new Fixture(isUsingFastCapacityUpdate); Id<Vehicle> id1 = Id.create("1", Vehicle.class); QVehicle veh = new QVehicleImpl(f.basicVehicle); Person p = PopulationUtils.getFactory().createPerson(Id.create(42, Person.class)); p.addPlan(PopulationUtils.createPlan()); veh.setDriver(createAndInsertPersonDriverAgentImpl(p, f.sim)); // start test, check initial conditions assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertEquals(0, f.qlink1.getAllVehicles().size()); f.qlink1.addParkedVehicle(veh); assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); // vehicle not on _lane_ assertEquals("vehicle not found in parking list.", veh, f.qlink1.getVehicle(id1)); assertEquals(1, f.qlink1.getAllVehicles().size()); // vehicle indeed on _link_ assertEquals(veh, f.qlink1.getAllVehicles().iterator().next()); assertEquals("removed wrong vehicle.", veh, f.qlink1.removeParkedVehicle(veh.getId())); assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertNull("vehicle not found in parking list.", f.qlink1.getVehicle(id1)); assertEquals(0, f.qlink1.getAllVehicles().size()); }
QVehicle veh = new QVehicleImpl(f.basicVehicle); Person pers = PopulationUtils.getFactory().createPerson(Id.create(80, Person.class)); Plan plan = PopulationUtils.createPlan();
Id<Vehicle> id1 = Id.create("1", Vehicle.class); QVehicle veh = new QVehicleImpl(f.basicVehicle); Person p = PopulationUtils.getFactory().createPerson(Id.create(23, Person.class)); Plan plan = PopulationUtils.createPlan();
QVehicle vehicle1 = new QVehicleImpl(new VehicleImpl(Id.create(1, Vehicle.class), defaultVehicleType)); QVehicle vehicle2 = new QVehicleImpl(new VehicleImpl(Id.create(2, Vehicle.class), defaultVehicleType)); sim.addParkedVehicle(vehicle1, Id.create(2, Link.class)); sim.addParkedVehicle(vehicle2, Id.create(2, Link.class));
QLinkImpl qlink = (QLinkImpl) queueNetwork.getNetsimLink(Id.create("1", Link.class)); QVehicle v1 = new QVehicleImpl(new VehicleImpl(Id.create("1", Vehicle.class), new VehicleTypeImpl(Id.create("defaultVehicleType", VehicleType.class)))); Person p = createPerson(Id.createPersonId(1), scenario, link1, link2); PersonDriverAgentImpl pa1 = createAndInsertPersonDriverAgentImpl(p, qsim); pa1.endActivityAndComputeNextState(0); QVehicle v2 = new QVehicleImpl(new VehicleImpl(Id.create("2", Vehicle.class), new VehicleTypeImpl(Id.create("defaultVehicleType", VehicleType.class)))); Person p2 = createPerson( Id.createPersonId(2),scenario,link1, link2) ; PersonDriverAgentImpl pa2 = createAndInsertPersonDriverAgentImpl(p2, qsim);
this.normalVehicle = new QVehicleImpl(new VehicleImpl(Id.create("2", Vehicle.class), vehicleType)); this.normalVehicle2 = new QVehicleImpl(new VehicleImpl(Id.create("3", Vehicle.class), vehicleType));
f.sim.getSimTimer().setTime(now); QVehicle veh1 = new QVehicleImpl(new VehicleImpl(Id.create(1, Vehicle.class), defaultVehType)); Person p1 = createPerson2(Id.createPersonId(5), f); PersonDriverAgentImpl driver1 = createAndInsertPersonDriverAgentImpl(p1, f.sim); driver1.setVehicle(veh1); driver1.endActivityAndComputeNextState( now ); QVehicle veh25 = new QVehicleImpl(new VehicleImpl(Id.create(2, Vehicle.class), mediumVehType)); Person p2 = createPerson2(Id.createPersonId(6), f); PersonDriverAgentImpl driver25 = createAndInsertPersonDriverAgentImpl(p2, f.sim); driver25.setVehicle(veh25); driver25.endActivityAndComputeNextState( now ); QVehicle veh5 = new QVehicleImpl(new VehicleImpl(Id.create(3, Vehicle.class), largeVehType)); Person p3 = createPerson2(Id.createPersonId(7), f); PersonDriverAgentImpl driver5 = createAndInsertPersonDriverAgentImpl(p3, f.sim);