@Override public void handleEvent(VehicleLeavesTrafficEvent event) { if(!event.getNetworkMode().equals("car")){ if( nonCarWarn <=1) { logger.warn("non-car modes are supported, however, not properly tested yet."); logger.warn(Gbl.ONLYONCE); nonCarWarn++; } } Tuple<Id<Link>, Double> linkId2Time = new Tuple<Id<Link>, Double>(event.getLinkId(), event.getTime()); this.vehicleLeavesTraffic.put(event.getVehicleId(), linkId2Time); // yyyyyy This event should also trigger an emissions calculation, from link entry up to here. Probably not done since this particular // event did not exist when the emissions contrib was programmed. Would be easy to do: calculate the emission and remove // the vehicle from the linkenter data structure so that no second emission event is computed for travel from parking to // link leave. (This could also be done, but the excellent should not be in the way of the good.) kai, may'16 }
@Override public void handleEvent(VehicleLeavesTrafficEvent event) { delegate.handleEvent(event); // remember the relative position on the link relPosOnArrivalLinkPerPerson.put(event.getPersonId(), event.getRelativePositionOnLink()); }
@Override public void handleEvent(VehicleLeavesTrafficEvent event) { if (!event.getNetworkMode().equals("car")) { if( nonCarWarn <=1) { logger.warn("non-car modes are supported, however, not properly tested yet."); logger.warn(Gbl.ONLYONCE); nonCarWarn++; } } Id<Vehicle> vehicleId = event.getVehicleId(); Double stopEngineTime = event.getTime(); this.vehicleId2stopEngineTime.put(vehicleId, stopEngineTime); }
public void testWriteReadXml() { final VehicleLeavesTrafficEvent event1 = new VehicleLeavesTrafficEvent(8463.7301, Id.create("483", Person.class), Id.create("783", Link.class), Id.create("veh7", Vehicle.class), TransportMode.car,1.0); final VehicleLeavesTrafficEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event1); assertEquals(event1.getTime(), event2.getTime(), EPSILON); assertEquals(event1.getPersonId().toString(), event2.getPersonId().toString()); assertEquals(event1.getLinkId().toString(), event2.getLinkId().toString()); assertEquals(event1.getVehicleId(), event2.getVehicleId()); assertEquals(event1.getNetworkMode(), event2.getNetworkMode()); } }
ProtobufEvents.VehicleLeavesTrafficEvent.Builder vl = ProtobufEvents.VehicleLeavesTrafficEvent.newBuilder() .setTime(event.getTime()) .setDriverId(ProtobufEvents.PersonId.newBuilder().setId(((VehicleLeavesTrafficEvent) event).getPersonId().toString())) .setLinkId(ProtobufEvents.LinkId.newBuilder().setId(((VehicleLeavesTrafficEvent) event).getLinkId().toString())) .setVehId(ProtobufEvents.VehicleId.newBuilder().setId(((VehicleLeavesTrafficEvent) event).getVehicleId().toString())) .setNetworkMode(((VehicleLeavesTrafficEvent) event).getNetworkMode()) .setRelPosOnLink(((VehicleLeavesTrafficEvent) event).getRelativePositionOnLink()); eb.setType(ProtobufEvents.Event.Type.VehicleLeavesTraffic).setVehicleLeavesTraffic(vl);
VehicleLeavesTrafficEvent vehEvent = (VehicleLeavesTrafficEvent) event; Id<Vehicle> vehId = vehEvent.getVehicleId(); double enterTime = previousLinkEnterTime; double travelTime = vehEvent.getTime() - enterTime; calculateScoreForPreviousLink(vehEvent.getLinkId(), enterTime, vehId, travelTime, previousLinkRelativePosition);
this.events.processEvent(new VehicleLeavesTrafficEvent(time, personId, linkId, vehicleIdOfDriver, mode, 1.0)); this.events.processEvent(new PersonLeavesVehicleEvent(time, personId, vehicleIdOfDriver));
@Override public void handleEvent(final VehicleLeavesTrafficEvent event) { /* remove EnterEvents from list when a vehicle arrives. * otherwise, the activity duration would counted as travel time, when the * vehicle departs again and leaves the link! */ this.linkEnterEvents.remove(event.getVehicleId()); // try to remove vehicles from set with filtered vehicles if (filterAnalyzedModes) this.vehiclesToIgnore.remove(event.getVehicleId()); }
)); } else if (VehicleLeavesTrafficEvent.EVENT_TYPE.equals(eventType)) { this.events.processEvent(new VehicleLeavesTrafficEvent(time, Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_DRIVER), Person.class), Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_LINK), Link.class),
@Override public void handleEvent(VehicleLeavesTrafficEvent event) { Id<Vehicle> vehicleId = event.getVehicleId(); this.regularActiveTrips.remove(vehicleId); // try to remove vehicle from set with filtered vehicles if (filterModes) this.vehiclesToFilter.remove(event.getVehicleId()); }
Assert.assertEquals("wrong link in 2nd event.", f.link1.getId(), ((PersonDepartureEvent) allEvents.get(1)).getLinkId() ); Assert.assertEquals("wrong link in 4th event.", f.link1.getId(), ((VehicleEntersTrafficEvent) allEvents.get(3)).getLinkId() ); Assert.assertEquals("wrong link in 5th event.", f.link1.getId(), ((VehicleLeavesTrafficEvent) allEvents.get(4)).getLinkId() ); Assert.assertEquals("wrong link in 7th event.", f.link1.getId(), ((PersonArrivalEvent) allEvents.get(6)).getLinkId() ); Assert.assertEquals("wrong link in 8th event.", f.link1.getId(), ((ActivityStartEvent) allEvents.get(7)).getLinkId() );
eventQueue.add(new VehicleLeavesTrafficEvent(prevEndTime + travelTime,personId, prevLeg.getRoute().getEndLinkId(),personId, TransportMode.car,1.0)); eventQueue.add(new PersonLeavesVehicleEvent(prevEndTime + travelTime, personId, personId)); } catch (NullPointerException ne) {
@Override public void handleEvent(VehicleLeavesTrafficEvent event) { driverAgents.remove(event.getVehicleId()); }
/* package */ final void letVehicleArrive(QVehicle qveh) { addParkedVehicle(qveh); double now = context.getSimTimer().getTimeOfDay();; context.getEventsManager().processEvent(new VehicleLeavesTrafficEvent(now , qveh.getDriver().getId(), this.link.getId(), qveh.getId(), qveh.getDriver().getMode(), 1.0 ) ) ; this.netsimEngine.letVehicleArrive(qveh); makeVehicleAvailableToNextDriver(qveh); }
public void handleEvent(VehicleLeavesTrafficEvent event) { vehicleLeftLink(event.getVehicleId()); if(this.doAverageVehiclesPerSecondMonitoring) { /* * Note: the sensor detects cars that will arrive at the link end, i.e. the traffic signal. * Vehicles that leave traffic at the link will not reach the link end and are, therefore, not counted here. * theresa, feb'17 */ totalVehicles--; } }
new VehicleLeavesTrafficEvent(now, driver.getId(), link.getId(), Id.create(driver.getId(), Vehicle.class), driver.getMode(), 1.0));
@Override public void handleEvent(VehicleLeavesTrafficEvent event) { delegate.handleEvent(event); // !!!! Double result = vehicleEnterTimes.remove( event.getVehicleId() ) ; if ( result == null ) { if ( wrnCnt==0 ) { wrnCnt++ ; // throw new RuntimeException("vehicle arrival for vehicle that never entered link. teleportation?") ; Logger.getLogger(this.getClass()).warn("vehicle arrival for vehicle that never entered link. I think this can happen with departures " + "that have empty routes, i.e. go to a location on the same link. kai, may'14"); Logger.getLogger(this.getClass()).warn( Gbl.ONLYONCE ) ; } } }
@Override public void processEvent() { Event event = null; // schedule enter link event // only, if car leg and is not empty if (vehicle.getCurrentLeg().getMode().equals(TransportMode.car) && (vehicle.getCurrentLinkRoute()!=null && vehicle.getCurrentLinkRoute().length!=0)){ event = new LinkEnterEvent(this.getMessageArrivalTime(), Id.create(vehicle.getOwnerPerson().getId().toString(), org.matsim.vehicles.Vehicle.class), vehicle.getCurrentLinkId()); eventsManager.processEvent(event); } // schedule VehicleLeavesTrafficEvent Id<org.matsim.vehicles.Vehicle> vehicleId = Id.create( this.vehicle.getOwnerPerson().getId() , org.matsim.vehicles.Vehicle.class ) ; event = new VehicleLeavesTrafficEvent(this.getMessageArrivalTime(), this.vehicle.getOwnerPerson().getId(), this.vehicle.getCurrentLinkId(), vehicleId, this.vehicle.getCurrentLeg().getMode(), 1.0 ); eventsManager.processEvent(event); // schedule AgentArrivalEvent event = new PersonArrivalEvent(this.getMessageArrivalTime(), this.vehicle.getOwnerPerson().getId(), this.vehicle.getCurrentLinkId(), this.vehicle.getCurrentLeg().getMode()); eventsManager.processEvent(event); // schedule ActStartEvent Activity nextAct = this.vehicle.getNextActivity(); double actStartEventTime = nextAct.getStartTime(); if (this.getMessageArrivalTime() > actStartEventTime) { actStartEventTime = this.getMessageArrivalTime(); } event = new ActivityStartEvent(actStartEventTime, this.vehicle.getOwnerPerson().getId(), this.vehicle.getCurrentLinkId(), nextAct.getFacilityId(), nextAct.getType()); eventsManager.processEvent(event); }
@Test public void testOneTravelTimeCalculatorPerMode() { Config config = ConfigUtils.createConfig(); config.travelTimeCalculator().setAnalyzedModes("car,bike"); config.travelTimeCalculator().setSeparateModes(true); Scenario scenario = ScenarioUtils.createScenario(config); Node node0 = scenario.getNetwork().getFactory().createNode(Id.createNodeId(0), new Coord(0, 0)); Node node1 = scenario.getNetwork().getFactory().createNode(Id.createNodeId(1), new Coord(1, 0)); scenario.getNetwork().addNode(node0); scenario.getNetwork().addNode(node1); Id<Link> linkId = Id.createLinkId(0); Link link = scenario.getNetwork().getFactory().createLink(linkId, node0, node1); scenario.getNetwork().addLink(link); com.google.inject.Injector injector = Injector.createInjector(config, new TravelTimeCalculatorModule(), new EventsManagerModule(), new ScenarioByInstanceModule(scenario)); TravelTimeCalculator car = injector.getInstance(Key.get(TravelTimeCalculator.class, Names.named("car"))); TravelTimeCalculator bike = injector.getInstance(Key.get(TravelTimeCalculator.class, Names.named("bike"))); EventsManager events = injector.getInstance(EventsManager.class); events.processEvent(new VehicleEntersTrafficEvent(0.0, Id.createPersonId(0), linkId, Id.createVehicleId(0), "car", 0.0)); events.processEvent(new LinkEnterEvent(0.0, Id.createVehicleId(0), linkId)); events.processEvent(new LinkLeaveEvent(2.0, Id.createVehicleId(0), linkId)); events.processEvent(new VehicleLeavesTrafficEvent(2.0, Id.createPersonId(0), linkId, Id.createVehicleId(0), "car", 0.0)); events.processEvent(new VehicleEntersTrafficEvent(0.0, Id.createPersonId(1), linkId, Id.createVehicleId(1), "bike", 0.0)); events.processEvent(new LinkEnterEvent(0.0, Id.createVehicleId(1), linkId)); events.processEvent(new LinkLeaveEvent(8.0, Id.createVehicleId(1), linkId)); events.processEvent(new VehicleLeavesTrafficEvent(8.0, Id.createPersonId(1), linkId, Id.createVehicleId(1), "bike", 0.0)); assertThat(car.getLinkTravelTime(link, 0.0), is(2.0)); assertThat(bike.getLinkTravelTime(link, 0.0), is(8.0)); }