20 package org.matsim.core.mobsim.qsim.agents;
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
41 import jakarta.inject.Inject;
42 import java.util.Collection;
43 import java.util.HashMap;
76 private static int cnt = 5 ;
81 Map<String,Id<Vehicle>> seenModes =
new HashMap<>();
85 if ( !this.mainModes.contains(leg.getMode()) ) {
95 if (vehicleId == null) {
114 if( seenModes.keySet().contains( leg.getMode() ) ){
115 if( vehicleId == null && route != null ){
116 vehicleId = seenModes.
get( leg.getMode() );
121 log.warn(
"encountered vehicleId=null where I am not sure how and why this should happen ..." );
135 seenModes.put(leg.getMode(),vehicleId);
139 if ( vehicle==null ) {
140 String msg =
"Could not get the requested vehicle with ID=" + vehicleId +
" from the vehicles container. " ;
141 switch ( vehiclesSource ) {
143 case modeVehicleTypesFromVehiclesData:
144 msg +=
"You are using the config switch qsim.vehiclesSource=" + vehiclesSource.name() +
"; this should have worked so " +
145 "please report under matsim.org/faq ." ;
147 case fromVehiclesData:
148 msg +=
"You are using the config switch qsim.vehiclesSource=" + vehiclesSource.name() +
"; with that setting, you have to" +
149 " provide all needed vehicles yourself." ;
161 Id<Link> result = this.seenVehicleIds.
get( vehicleId ) ;
162 if ( result != null ) {
164 log.info(
"have seen vehicle with id " + vehicleId +
" before; not placing it again.");
170 if ( result != vehicleLinkId ) {
171 throw new RuntimeException(
"vehicle placement error: vehicleId=" + vehicleId +
172 "; previous placement link=" + vehicleLinkId +
"; current placement link=" + result ) ;
181 this.seenVehicleIds.put( vehicleId, vehicleLinkId ) ;
198 if (initialLinkId != null) {
199 return initialLinkId;
211 if (planElement instanceof
Activity) {
212 Activity activity = (Activity) planElement;
216 if (activityLinkId != null) {
217 return activityLinkId;
219 }
else if (planElement instanceof
Leg) {
220 Leg leg = (Leg) planElement;
226 throw new RuntimeException(
"Don't know where to put a vehicle for this agent.");
void insertVehicles(Person person)
static< T > Id< T > get(int index, final Class< T > type)
final AgentFactory agentFactory
Id< Link > getStartLinkId()
Collection< String > getMainModes()
static Id< Link > getInitialLinkId(Vehicle vehicle)
static final String FUTURE_SUPPRESSED
Map< Id< Person >,? extends Person > getPersons()
static Id< Link > computeLinkIdFromActivity(Activity act, ActivityFacilities facs, Config config)
void insertAgentIntoMobsim(final MobsimAgent agent)
final QVehicleFactory qVehicleFactory
void insertAgentsIntoMobsim()
final Population population
final VehiclesSource getVehiclesSource()
static Id< Vehicle > getVehicleId(Person person, String mode)
abstract void setVehicleId(final Id< Vehicle > vehicleId)
abstract Id< Vehicle > getVehicleId()
static final String NOT_IMPLEMENTED
MobsimAgent createMobsimAgentFromPerson(final Person p)
Map< Id< Vehicle >, Id< Link > > seenVehicleIds
Id< Link > findVehicleLink(Person person, Vehicle vehicle)
Map< Id< Vehicle >, Vehicle > getVehicles()
ActivityFacilities getActivityFacilities()
final Collection< String > mainModes
QVehicle createQVehicle(Vehicle vehicle)
static List< Leg > getLegs(final Plan plan)
void addParkedVehicle(MobsimVehicle veh, Id< Link > startLinkId)
abstract T getSelectedPlan()