private final void addDepartingVehicle(MobsimVehicle mvehicle) { QVehicle vehicle = (QVehicle) mvehicle; this.waitingList.add(vehicle); vehicle.setCurrentLink(this.getLink()); this.activateLink(); }
public void addParkedVehicle(QVehicle veh) { AbstractQLink.this.addParkedVehicle(veh); }
public QLaneI getAcceptingQLane() { return AbstractQLink.this.getAcceptingQLane() ; }
@Override public QueueWithBuffer createLane( AbstractQLink qLink ) { // a number of things I cannot configure before I have the qlink: if ( id==null ) { id = Id.create( qLink.getLink().getId() , Lane.class ) ; } if ( length==null ) { length = qLink.getLink().getLength() ; } if ( effectiveNumberOfLanes==null ) { effectiveNumberOfLanes = qLink.getLink().getNumberOfLanes() ; } if ( flowCapacity_s==null ) { flowCapacity_s = ((Link)qLink.getLink()).getFlowCapacityPerSec() ; } return new QueueWithBuffer( qLink.getInternalInterface(), vehicleQueue, id, length, effectiveNumberOfLanes, flowCapacity_s, context ) ; } }
@Override public final boolean insertPassengerIntoVehicle(MobsimAgent passenger, Id<Vehicle> vehicleId) { double now = context.getSimTimer().getTimeOfDay(); QVehicle vehicle = this.getParkedVehicle(vehicleId); // if the vehicle is not parked at the link, mark the agent as passenger waiting for vehicle if (vehicle == null) { registerPassengerAgentWaitingForCar(passenger, vehicleId); return false; } else { boolean added = vehicle.addPassenger((PassengerAgent) passenger); if (!added) { log.warn("Passenger " + passenger.getId().toString() + " could not be inserted into vehicle " + vehicleId.toString() + " since there is no free seat available!"); return false; } ((PassengerAgent) passenger).setVehicle(vehicle); EventsManager eventsManager = context.getEventsManager(); eventsManager.processEvent(new PersonEntersVehicleEvent(now, passenger.getId(), vehicle.getId())); // TODO: allow setting passenger's currentLinkId to null return true; } }
/* 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); }
@Override public void clearVehicles() { super.clearVehicles(); qlane.clearVehicles(); }
public List<QLaneI> getOfferingQLanes() { return AbstractQLink.this.getOfferingQLanes() ; }
@Override public final Collection<MobsimVehicle> getAllVehicles() { Collection<MobsimVehicle> vehicles = this.getAllNonParkedVehicles(); vehicles.addAll(this.parkedVehicles.values()); return vehicles; }
@Override public final void letVehicleDepart(QVehicle vehicle) { double now = context.getSimTimer().getTimeOfDay(); MobsimDriverAgent driver = vehicle.getDriver(); if (driver == null) throw new RuntimeException("Vehicle cannot depart without a driver!"); EventsManager eventsManager = context.getEventsManager(); eventsManager.processEvent(new PersonEntersVehicleEvent(now, driver.getId(), vehicle.getId())); this.addDepartingVehicle(vehicle); }
@Override public void clearVehicles() { super.clearVehicles(); for (QLaneI lane : this.laneQueues.values()) { lane.clearVehicles(); } }