MATSIM
MobsimDataProvider.java
Go to the documentation of this file.
1 /* *********************************************************************** *
2  * project: org.matsim.*
3  * MobsimDataProvider.java
4  * *
5  * *********************************************************************** *
6  * *
7  * copyright : (C) 2013 by the members listed in the COPYING, *
8  * LICENSE and WARRANTY file. *
9  * email : info at matsim dot org *
10  * *
11  * *********************************************************************** *
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * See also COPYING, LICENSE and WARRANTY file *
18  * *
19  * *********************************************************************** */
20 
21 package org.matsim.withinday.mobsim;
22 
23 import org.matsim.api.core.v01.Id;
30 import org.matsim.core.mobsim.qsim.QSim;
32 import org.matsim.vehicles.Vehicle;
33 
34 import jakarta.inject.Inject;
35 import jakarta.inject.Singleton;
36 import java.util.Collection;
37 import java.util.Map;
38 
44 @Singleton
45 public final class MobsimDataProvider implements MobsimInitializedListener {
46  /*
47  Hallo Kai,
48 
49  ja, das kann man sicherlich auch einfach durchschleifen (oder gleich in die QSim einbauen? Sind ja doch recht "typische" Methoden).
50 
51  Das Design kommt einfach daher, dass die QSim die Daten nicht oder nur in recht ungünstiger Form bereit hält:
52  - Agents nur in einer Collection, nicht in einer Map
53  - Vehicles nur in den jeweiligen Links aber nicht an einer zentralen Stelle
54 
55  Viele Grüße,
56  Christoph
57 
58 
59  -----Ursprüngliche Nachricht-----
60  Von: Nagel, Kai, Prof. Dr. [mailto:nagel@vsp.tu-berlin.de]
61  Gesendet: Dienstag, 17. März 2015 13:50
62  An: Christoph Dobler
63  Cc: Zilske, Michael
64  Betreff: MobsimDataProvider
65 
66  Hallo Christoph,
67 
68  Bin gerade über Deinen MobsimDataProvider gestolpert. Die Gruppe von Lin Padham verwendet den.
69 
70  Ich würde es aber für ein Problem halten, dass er mit der QSim nicht automatisch konsistent ist. Z.B. kann man in der QSim
71  nachträglich Agenten und Fahrzeuge einfügen; der MobsimDataProvider würde das aber nicht mitbekommen.
72 
73  Ich würde von der Tendenz her das "Durchschleifen", also die Information im MobsimDataProvider nicht mehr separat sammeln,
74  sondern die entsprechenden Methoden aus der QSim verwenden. Falls die nicht schnell genug sind, könnten wir sie ja optimieren.
75 
76  Oder?
77 
78  Danke & vG
79 
80  Kai
81  */
82 
83  private QSim qSim;
84 
85  @Inject MobsimDataProvider(){}
86 
87  @Override
89  qSim = (QSim) e.getQueueSimulation();
90  }
91 
92  public final Map<Id<Person>, MobsimAgent> getAgents() {
93  return this.qSim.getAgents() ;
94  }
95 
96  public final MobsimAgent getAgent(Id<Person> agentId) {
97  return this.getAgents().get(agentId);
98  }
99 
100  public final Map<Id<Vehicle>, MobsimVehicle> getVehicles() {
101  return this.qSim.getVehicles() ;
102  }
103 
104  public final MobsimVehicle getVehicle(Id<Vehicle> vehicleId) {
105  return this.getVehicles().get(vehicleId);
106  }
107 
108  public final Collection<MobsimVehicle> getEnrouteVehiclesOnLink(Id<Link> linkId) {
109  return this.qSim.getNetsimNetwork().getNetsimLink(linkId).getAllNonParkedVehicles();
110  }
111 
112  public final MobsimVehicle getDriversVehicle(Id<Person> driverId) {
113  MobsimAgent mobsimAgent = this.getAgents().get(driverId);
114  if (mobsimAgent == null) return null;
115 
116  DriverAgent driver = (DriverAgent) mobsimAgent;
117  return driver.getVehicle();
118  }
119 
120  public final MobsimAgent getVehiclesDriver(Id<Vehicle> vehicleId) {
121  MobsimVehicle mobsimVehicle = this.getVehicles().get(vehicleId);
122  if (mobsimVehicle == null) return null;
123  else return mobsimVehicle.getDriver();
124  }
125 }
final Map< Id< Person >, MobsimAgent > getAgents()
final void notifyMobsimInitialized(MobsimInitializedEvent e)
Map< Id< Person >, MobsimAgent > getAgents()
Definition: QSim.java:680
NetsimNetwork getNetsimNetwork()
Definition: QSim.java:570
Map< Id< Vehicle >, MobsimVehicle > getVehicles()
Definition: QSim.java:332
final MobsimAgent getAgent(Id< Person > agentId)
final MobsimVehicle getVehicle(Id< Vehicle > vehicleId)
final Collection< MobsimVehicle > getEnrouteVehiclesOnLink(Id< Link > linkId)
final MobsimAgent getVehiclesDriver(Id< Vehicle > vehicleId)
final MobsimVehicle getDriversVehicle(Id< Person > driverId)
final Map< Id< Vehicle >, MobsimVehicle > getVehicles()