@Override public void handleEvent(VehicleAbortsEvent event) { LinkEnterEvent e = this.linkEnterEvents.remove(event.getVehicleId()); if (e != null) { DataContainer data = this.dataContainerProvider.getTravelTimeData(e.getLinkId(), true); data.needsConsolidation = true; this.aggregator.addStuckEventTravelTime(data.ttData, e.getTime(), event.getTime()); if (this.calculateLinkToLinkTravelTimes && event.getTime() < qsimConfig.getEndTime() // (we think that this only makes problems when the abort is not just because of mobsim end time. kai & theresa, jan'17) ){ log.error(ERROR_STUCK_AND_LINKTOLINK); throw new IllegalStateException(ERROR_STUCK_AND_LINKTOLINK); } } // try to remove vehicle from set with filtered vehicles if (filterAnalyzedModes) this.vehiclesToIgnore.remove(event.getVehicleId()); }
public double getRunningCostTime() { double timeInService = 0; if (this.transitDriverAlightsE != null) { if (this.vehicleAbortE != null) { throw new RuntimeException( "There is both a PersonLeavesVehicleEvent and a VehicleAbortsEvent for TransitDriverStartsEvent " + this.transitDriverStartsE); } timeInService = this.transitDriverAlightsE.getTime() - this.transitDriverStartsE.getTime(); } else if (this.vehicleAbortE != null) { timeInService = this.vehicleAbortE.getTime() - this.transitDriverStartsE.getTime(); } else { throw new RuntimeException( "Neither PersonLeavesVehicleEvent nor VehicleAbortEvent found for TransitDriverStartsEvent " + transitDriverStartsE.getDriverId() + "."); } return this.expensesPerSecond * timeInService; }
/** * If the driver agent stucks, no PersonLeavesVehicleEvent will be thrown. Use the * PersonStuckEvent instead as a replacement to avoid NullPointerExceptions and * calculate an approximate running time cost. */ @Override public void handleEvent(VehicleAbortsEvent event) { if (event.getVehicleId().toString().startsWith(this.pIdentifier)) { // it's a paratransit vehicle log.info("Paratransit vehicle " + event.getVehicleId() + " got stuck at " + Time.writeTime(event.getTime()) + ". Operation cost is calculated until the stuck time."); OperatorCostContainer operatorCostContainer = this.vehId2OperatorCostContainer.remove(event.getVehicleId()); operatorCostContainer.handleVehicleAborts(event); // call all OperatorCostContainerHandler for (OperatorCostContainerHandler operatorCostContainerHandler : this.operatorCostContainerHandlerList) { operatorCostContainerHandler.handleOperatorCostContainer(operatorCostContainer); } // Note the operatorCostContainer is dropped at this point. } }
public void testWriteReadXml() { final VehicleAbortsEvent event1 = new VehicleAbortsEvent(81153.3, Id.create("a007", Vehicle.class), Id.create("link1", Link.class)); final VehicleAbortsEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event1); assertEquals(event1.getTime(), event2.getTime(), EPSILON); assertEquals(event1.getVehicleId(), event2.getVehicleId()); assertEquals(event1.getLinkId(), event2.getLinkId()); }