@Override public Id<Vehicle> getVehicleId() { return AbstractTransitDriverAgent.this.vehicle.getVehicle().getId(); }
private void assertAllStopsServed() { if (this.nextStop != null) { RuntimeException e = new RuntimeException("Transit vehicle is not yet at last stop! vehicle-id = " + this.vehicle.getVehicle().getId() + "; next-stop = " + this.nextStop.getStopFacility().getId()); log.error(e); throw e; } }
private void writeVehicles(Map<Id<Vehicle>, Vehicle> veh) throws UncheckedIOException { for (Vehicle v : veh.values()) { atts.clear(); atts.add(this.createTuple(VehicleSchemaV1Names.ID, v.getId().toString())); atts.add(this.createTuple(VehicleSchemaV1Names.TYPE, v.getType().getId().toString())); this.writeStartTag(VehicleSchemaV1Names.VEHICLE, atts, true); } }
private void assertVehicleIsEmpty() { if (this.vehicle.getPassengers().size() > 0) { RuntimeException e = new RuntimeException("Transit vehicle is at last stop but still contains passengers that did not leave the vehicle!"); log.error("Transit vehicle must be empty after last stop! vehicle-id = " + this.vehicle.getVehicle().getId(), e); for (PassengerAgent agent : this.vehicle.getPassengers()) { if (agent instanceof PersonDriverAgentImpl) { log.error("Agent is still in transit vehicle: agent-id = " + ((PersonDriverAgentImpl) agent).getPerson().getId()); } } throw e; } }
private void addPVehiclesToOriginalOnes(Vehicles baseVehicles, Vehicles pVehicles){ for (VehicleType t : pVehicles.getVehicleTypes().values()) { if (!baseVehicles.getVehicleTypes().containsKey(t.getId())) { baseVehicles.addVehicleType(t); currentExclusivePVehicleTypeIDs.add(t.getId()); } } for (Vehicle v : pVehicles.getVehicles().values()) { if (!baseVehicles.getVehicles().containsKey(v.getId())) { baseVehicles.addVehicle(v); currentExclusivePVehicleIDs.add(v.getId()); } } }
private void createEmptyUmlaeufe() { for (Vehicle vehicle : vehicles.getVehicles().values()) { UmlaufImpl umlauf = new UmlaufImpl(this.createUmlaufIdFromVehicle(vehicle)); umlauf.setVehicleId(vehicle.getId()); umlaeufe.put(umlauf.getId(), umlauf); } }
@Override public void updateVehicles(Vehicles vehicles) { this.vehId2VehicleCapacity = new HashMap<>(); for (Vehicle veh : vehicles.getVehicles().values()) { Integer seats = veh.getType().getCapacity().getSeats(); Integer standing = veh.getType().getCapacity().getStandingRoom(); // setting these values is not mandatory. Thus, they maybe null \\DR, aug'13 this.vehId2VehicleCapacity.put(veh.getId(), ((seats == null) ? 0 : seats) + ((standing == null) ? 0 : standing) - 1); } }
@Override public void updateVehicles(Vehicles vehicles) { this.vehId2VehicleCapacity = new HashMap<>(); for (Vehicle veh : vehicles.getVehicles().values()) { Integer seats = veh.getType().getCapacity().getSeats(); Integer standing = veh.getType().getCapacity().getStandingRoom(); // setting these values is not mandatory. Thus, they maybe null \\DR, aug'13 this.vehId2VehicleCapacity.put(veh.getId(), ((seats == null) ? 0 : seats) + ((standing == null) ? 0 : standing) - 1.0); } }
@Override public void updateVehicles(Vehicles vehicles) { this.vehId2VehicleCapacity = new HashMap<>(); for (Vehicle veh : vehicles.getVehicles().values()) { Integer seats = veh.getType().getCapacity().getSeats(); Integer standing = veh.getType().getCapacity().getStandingRoom(); // setting these values is not mandatory. Thus, they maybe null \\DR, aug'13 this.vehId2VehicleCapacity.put(veh.getId(), ((seats == null) ? 0 : seats) + ((standing == null) ? 0 : standing) - 1.0); } }
@Override public double getLinkTravelDisutility(Link link, double time, Person person, org.matsim.vehicles.Vehicle vehicle) { CarrierVehicleType type = vehicleTypes.getVehicleTypes().get(vehicle.getType().getId()); if(type == null) throw new IllegalStateException("vehicle "+vehicle.getId()+" has no type"); double tt = travelTime.getLinkTravelTime(link, time, person, vehicle); return type.getVehicleCostInformation().perDistanceUnit*link.getLength() + type.getVehicleCostInformation().perTimeUnit*tt; }
private void processEventVehicleArrives(final TransitStopFacility stop, final double now) { if (this.currentStop == null) { this.currentStop = this.nextStop; double delay = now - this.getDeparture().getDepartureTime(); if (! ( Double.isNaN(this.currentStop.getArrivalOffset()) && Double.isInfinite(this.currentStop.getArrivalOffset())) ){ delay = delay - this.currentStop.getArrivalOffset(); } else if (! (Double.isNaN(this.currentStop.getDepartureOffset()) && Double.isInfinite(this.currentStop.getDepartureOffset()))) { delay = delay - this.currentStop.getDepartureOffset(); } else { log.warn("Could not calculate delay!"); } eventsManager.processEvent(new VehicleArrivesAtFacilityEvent(now, this.vehicle.getVehicle().getId(), stop.getId(), delay)); } }
public void run() { VehiclesFactory vb = this.vehicles.getFactory(); VehicleType vehicleType = vb.createVehicleType(Id.create("defaultTransitVehicleType", VehicleType.class)); VehicleCapacity capacity = new VehicleCapacityImpl(); capacity.setSeats(Integer.valueOf(101)); capacity.setStandingRoom(Integer.valueOf(0)); vehicleType.setCapacity(capacity); this.vehicles.addVehicleType(vehicleType); long vehId = 0; for (TransitLine line : this.schedule.getTransitLines().values()) { for (TransitRoute route : line.getRoutes().values()) { for (Departure departure : route.getDepartures().values()) { Vehicle veh = vb.createVehicle(Id.create("tr_" + Long.toString(vehId++), Vehicle.class), vehicleType); this.vehicles.addVehicle(veh); departure.setVehicleId(veh.getId()); } } } } }
@Override public boolean handlePassengerLeaving(PTPassengerAgent passenger, MobsimVehicle vehicle, Id<Link> toLinkId, double time) { boolean handled = vehicle.removePassenger(passenger); if(handled){ eventsManager.processEvent(new PersonLeavesVehicleEvent(time, passenger.getId(), vehicle.getVehicle().getId())); // from here on works only if PassengerAgent can be cast into MobsimAgent ... but this is how it was before. // kai, sep'12 MobsimAgent agent = (MobsimAgent) passenger ; agent.notifyArrivalOnLinkByNonNetworkMode(toLinkId); agent.endLegAndComputeNextState(time); this.internalInterface.arrangeNextAgentState(agent) ; // (cannot set trEngine to TransitQSimEngine because there are tests where this will not work. kai, dec'11) } return handled; }
@Override public boolean handlePassengerEntering(PTPassengerAgent passenger, MobsimVehicle vehicle, Id<TransitStopFacility> fromStopFacilityId, double time) { boolean handled = vehicle.addPassenger(passenger); if(handled){ this.agentTracker.removeAgentFromStop(passenger, fromStopFacilityId); MobsimAgent planAgent = (MobsimAgent) passenger; // if (planAgent instanceof PersonDriverAgentImpl) { Id<Person> agentId = planAgent.getId(); Id<Link> linkId = planAgent.getCurrentLinkId(); this.internalInterface.unregisterAdditionalAgentOnLink(agentId, linkId) ; // } MobsimDriverAgent agent = (MobsimDriverAgent) passenger; eventsManager.processEvent(new PersonEntersVehicleEvent(time, agent.getId(), vehicle.getVehicle().getId())); } return handled; }
public void testWriteReadXml() { Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); VehicleType vehicleType = new VehicleTypeImpl(Id.create("testVehType", VehicleType.class)); Vehicle vehicle = new VehicleImpl(Id.create(80, Vehicle.class), vehicleType); PersonLeavesVehicleEvent event = new PersonLeavesVehicleEvent(5.0 * 3600 + 11.0 * 60, person.getId(), vehicle.getId()); PersonLeavesVehicleEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event); assertEquals("wrong time of event.", 5.0 * 3600 + 11.0 * 60, event2.getTime(), EPSILON); assertEquals("wrong vehicle id.", "80", event2.getVehicleId().toString()); } }
public void testReadWriteXml() { Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); VehicleType vehicleType = new VehicleTypeImpl(Id.create("testVehType", VehicleType.class)); Vehicle vehicle = new VehicleImpl(Id.create(80, Vehicle.class), vehicleType); PersonEntersVehicleEvent event = new PersonEntersVehicleEvent(5.0 * 3600 + 11.0 * 60, person.getId(), vehicle.getId()); PersonEntersVehicleEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event); assertEquals("wrong time of event.", 5.0 * 3600 + 11.0 * 60, event2.getTime(), EPSILON); assertEquals("wrong vehicle id.", "80", event2.getVehicleId().toString()); } }
private Person createPerson2(Id<Person> personId, Fixture f) { final Id<Person> id = personId; Person p = PopulationUtils.getFactory().createPerson(id); Plan plan = PopulationUtils.createPlan(); p.addPlan(plan); plan.addActivity(PopulationUtils.createActivityFromLinkId("home", f.link1.getId())); Leg leg = PopulationUtils.createLeg(TransportMode.car); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.link1.getId(), f.link2.getId()); route.setVehicleId(f.basicVehicle.getId()); leg.setRoute(route); plan.addLeg(leg); plan.addActivity(PopulationUtils.createActivityFromLinkId("work", f.link2.getId())); return p; }
@Test public void testRemoveVehicleType() { Vehicles vehicles = VehicleUtils.createVehiclesContainer(); VehicleType t1 = vehicles.getFactory().createVehicleType(Id.create("type1", VehicleType.class)); vehicles.addVehicleType(t1); Vehicle v1 = vehicles.getFactory().createVehicle(Id.create("v1", Vehicle.class), t1); vehicles.addVehicle(v1); try { vehicles.removeVehicleType(t1.getId()); Assert.fail("expected exception, as vehicle type is still in use."); } catch (IllegalArgumentException e) { // pass } vehicles.removeVehicle(v1.getId()); vehicles.removeVehicleType(t1.getId()); // also test for non-existant vehicle types vehicles.removeVehicleType(Id.create("type2", VehicleType.class)); }
@Override public void insertAgentsIntoMobsim() { TestHandleStopSimulation.this.driver = new SpyDriver(TestHandleStopSimulation.this.line, TestHandleStopSimulation.this.route, TestHandleStopSimulation.this.departure, transitEngine.getAgentTracker(), transitEngine); VehicleType vehicleType = new VehicleTypeImpl(Id.create("transitVehicleType", VehicleType.class)); VehicleCapacity capacity = new VehicleCapacityImpl(); capacity.setSeats(101); capacity.setStandingRoom(0); vehicleType.setCapacity(capacity); TransitQVehicle veh = new TransitQVehicle(new VehicleImpl(Id.create(TestHandleStopSimulation.this.driver.getId(), Vehicle.class), vehicleType)); veh.setDriver(TestHandleStopSimulation.this.driver); veh.setStopHandler(new SimpleTransitStopHandler()); TestHandleStopSimulation.this.driver.setVehicle(veh); TestHandleStopSimulation.this.departure.setVehicleId(veh.getVehicle().getId()); qSim.addParkedVehicle(veh, route.getRoute().getStartLinkId()); qSim.insertAgentIntoMobsim(TestHandleStopSimulation.this.driver); } });