20 package org.matsim.core.mobsim.qsim.qnetsimengine;
22 import java.util.Collection;
24 import com.google.inject.Inject;
25 import org.apache.logging.log4j.LogManager;
26 import org.apache.logging.log4j.Logger;
55 if (this.networkModes.contains(agent.
getMode() )) {
60 throw new UnsupportedOperationException(
"wrong agent type to depart on a network mode");
73 if (vehicle == null) {
75 vehicle = qNetsimEngine.
getVehicles().get(vehicleId);
76 if ( vehicle==null ) {
78 final String msg =
"could not find requested vehicle "+vehicleId+
" in simulation for agent "+agent+
" with id "+agent.
getId()+
" on link "+agent.
getCurrentLinkId()+
" at time "+now+
".";
80 log.error(
"Note that, with AgentSource and if the agent starts on a leg, the vehicle needs to be inserted BEFORE the agent!") ;
95 throw new RuntimeException(
"vehicle " + vehicleId +
" not available for agent " + agent.
getId() +
" on link " + linkId +
" at time "+ now);
107 if (cntTeleportVehicle < 9) {
108 cntTeleportVehicle++;
109 log.info(
"teleport vehicle " + vehicle.
getId() +
" from link " + vehicle.
getCurrentLink().
getId() +
" to link " + linkId);
110 if (cntTeleportVehicle == 9) {
111 log.info(
"No more occurrences of teleported vehicles will be reported.");
116 if ( result==null ) {
117 throw new RuntimeException(
"Could not remove parked vehicle with id " + vehicle.
getId() +
" on the link id " 119 +
". Maybe it is currently used by someone else?" 120 +
" (In which case ignoring this exception would lead to duplication of this vehicle.) " 121 +
"Maybe was never placed onto a link?" );
boolean handleDeparture(double now, MobsimAgent agent, Id< Link > linkId)
void handleNetworkModeDeparture(double now, MobsimDriverAgent agent, Id< Link > linkId)
Collection< String > getMainModes()
void registerDriverAgentWaitingForCar(final MobsimDriverAgent agent)
final QNetsimEngineI qNetsimEngine
final VehicleBehavior vehicleBehavior
void letVehicleDepart(QVehicle vehicle)
NetsimLink getNetsimLink(final Id< Link > id)
void setDriver(DriverAgent driver)
Id< Link > getCurrentLinkId()
Map< Id< Vehicle >, QVehicle > getVehicles()
static int cntTeleportVehicle
void setVehicle(final MobsimVehicle veh)
static void teleportVehicleTo(QVehicle vehicle, Id< Link > linkId, QNetsimEngineI qNetsimEngine)
final Collection< String > networkModes
VehicleBehavior getVehicleBehavior()
QVehicle removeParkedVehicle(Id< Vehicle > vehicleId)
Id< Vehicle > getPlannedVehicleId()
NetsimNetwork getNetsimNetwork()