Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GUINet.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
20// A MSNet extended by some values for usage within the gui
21/****************************************************************************/
22#pragma once
23#include <config.h>
24
25#include <string>
26#include <utility>
27#include <microsim/MSNet.h>
29#include <utils/geom/Boundary.h>
30#include <utils/geom/Position.h>
40
41
42// ===========================================================================
43// class declarations
44// ===========================================================================
45class MSEdgeControl;
49class MSLink;
52class GUICalibrator;
54class RGBColor;
55class GUIEdge;
56class OutputDevice;
57class GUIVehicle;
61class Command;
62
63
64// ===========================================================================
65// class definitions
66// ===========================================================================
82class GUINet : public MSNet, public GUIGlObject {
83
84 friend class GUITrafficLightLogicWrapper; // see createTLWrapper
85
86public:
94 GUINet(MSVehicleControl* vc, MSEventControl* beginOfTimestepEvents,
95 MSEventControl* endOfTimestepEvents,
96 MSEventControl* insertionEvents);
97
98
100 ~GUINet();
101
102
106 bool isGUINet() const override {
107 return true;
108 }
109
110
112
113
122
131
137 Boundary getCenteringBoundary() const override;
138
143 void drawGL(const GUIVisualizationSettings& s) const override;
145
146
148 const Boundary& getBoundary() const;
149
151 Position getJunctionPosition(const std::string& name) const;
152
154 bool vehicleExists(const std::string& name) const;
155
157 void guiSimulationStep();
158
161 void simulationStep();
162
165
169 int getWholeDuration() const;
170
171
175 int getSimDuration() const;
176
177
179 double getRTFactor() const;
180
182 double getUPS() const;
183
185 double getMeanRTFactor(int duration) const;
186
188 double getMeanUPS() const;
189
190 // Returns the duration of the last step's visualisation part (in ms)
191 //int getVisDuration() const;
192
194 int getIdleDuration() const;
195
197 void setSimDuration(int val);
198
199 // Sets the duration of the last step's visualisation part
200 //void setVisDuration(int val);
201
203 void setIdleDuration(int val);
204 //}
205
206 double getAvgRouteLength() const {
208 }
209 double getAvgDuration() const {
211 }
212 double getAvgWaitingTime() const {
214 }
215 double getAvgTimeLoss() const {
217 }
218 double getAvgDepartDelay() const {
220 }
227 double getAvgWalkDuration() const {
229 }
230 double getAvgWalkTimeLoss() const {
232 }
233
243
244
254
255
258 int getLinkTLID(const MSLink* const link) const;
259
262 int getLinkTLIndex(const MSLink* const link) const;
263
266
268
269
270 /* @brief Returns the gl-ids of all junctions within the net
271 * @param[in] includeInternal Whether to include ids of internal junctions
272 */
273 std::vector<GUIGlID> getJunctionIDs(bool includeInternal) const;
274
276 std::vector<GUIGlID> getTLSIDs() const;
278
279
281 void initGUIStructures();
282
283
290
291
295 const SUMORTree& getVisualisationSpeedUp(bool secondary = false) const {
296 return secondary ? myGrid2 : myGrid;
297 }
298
301
308
315
317 double getEdgeData(const MSEdge* edge, const std::string& attr);
318
320 double getMeanData(const MSLane* lane, const std::string& id, const std::string& attr);
321
323 bool loadEdgeData(const std::string& file);
324
326 std::vector<std::string> getEdgeDataAttrs() const;
327
329 std::vector<std::string> getMeanDataIDs() const;
330
332 std::vector<std::string> getMeanDataAttrs(const std::string& meanDataID) const;
333
334#ifdef HAVE_OSG
335 void updateColor(const GUIVisualizationSettings& s);
336#endif
337
339 void lock();
340
342 void unlock();
343
348 static GUINet* getGUIInstance();
349
351 void createTLWrapper(MSTrafficLightLogic* tll) override;
352
354 bool isSelected(const MSTrafficLightLogic* tll) const override;
355
357 void updateGUI() const override;
358
360 void addHotkey(int key, Command* press, Command* release = nullptr);
361
363 void flushOutputsAtEnd();
364
365 virtual bool skipFinalReset() const override {
366 return mySkipFinalReset;
367 }
368
369private:
371 void initTLMap();
372
373 friend class GUIOSGBuilder;
374
375protected:
378
381
384
386 std::vector<GUIEdge*> myEdgeWrapper;
387
389 std::vector<GUIJunctionWrapper*> myJunctionWrapper;
390
392 std::vector<GUIDetectorWrapper*> myDetectorWrapper;
393
395 std::vector<GUICalibrator*> myCalibratorWrapper;
396
398 typedef std::map<const MSLink*, std::string> Links2LogicMap;
401
402
404 typedef std::map<MSTrafficLightLogic*, GUITrafficLightLogicWrapper*> Logics2WrapperMap;
407
408
410 int myLastSimDuration, /*myLastVisDuration, */myLastIdleDuration;
411
414
416 std::map<std::string, MSEdgeWeightsStorage*> myLoadedEdgeData;
417
418 bool mySkipFinalReset = false;
419
422 public:
426 void myStartElement(int element, const SUMOSAXAttributes& attrs);
427 std::vector<std::string> getEdgeAttrs();
431 private:
432 std::set<std::string> edgeAttrs;
433 };
434
436 public:
439
442
451 void addEdgeWeight(const std::string& id, double val, double beg, double end) const;
452 void addEdgeRelWeight(const std::string& from, const std::string& to, double val, double beg, double end) const;
453
454 private:
457
458 };
459
460private:
462 mutable FXMutex myLock;
463
464};
long long int SUMOTime
Definition GUI.h:36
#define SUMOTime_MAX
Definition SUMOTime.h:34
A class that stores a 2D geometrical boundary.
Definition Boundary.h:39
Base (microsim) event class.
Definition Command.h:50
Changes the speed allowed on a set of lanes (gui version)
A road/street connecting two junctions (gui-version)
Definition GUIEdge.h:51
The popup menu of a globject.
The class responsible for building and deletion of vehicles (gui-version)
class for discovering edge attributes
Definition GUINet.h:421
void myStartElement(int element, const SUMOSAXAttributes &attrs)
Callback method for an opening tag to implement by derived classes.
Definition GUINet.cpp:643
DiscoverAttributes(const std::string &file)
Definition GUINet.h:423
std::set< std::string > edgeAttrs
Definition GUINet.h:432
std::vector< std::string > getEdgeAttrs()
Definition GUINet.cpp:663
MSEdgeWeightsStorage * myWeightStorage
The storage that edges shall be added to.
Definition GUINet.h:456
void addEdgeWeight(const std::string &id, double val, double beg, double end) const
Adds an effort for a given edge and time period.
Definition GUINet.cpp:670
void addEdgeRelWeight(const std::string &from, const std::string &to, double val, double beg, double end) const
Definition GUINet.cpp:682
EdgeFloatTimeLineRetriever_GUI(MSEdgeWeightsStorage *weightStorage)
Constructor.
Definition GUINet.h:438
A MSNet extended by some values for usage within the gui.
Definition GUINet.h:82
double getAvgTripSpeed() const
Definition GUINet.h:221
double getAvgRouteLength() const
Definition GUINet.h:206
double getAvgDuration() const
Definition GUINet.h:209
int getWholeDuration() const
Returns the duration of the last step (sim+visualisation+idle) (in ms)
Definition GUINet.cpp:387
Boundary getCenteringBoundary() const override
Returns the boundary to which the view shall be centered in order to show the object.
Definition GUINet.cpp:575
void setIdleDuration(int val)
Sets the duration of the last step's idle part.
Definition GUINet.cpp:465
GUIVehicleControl * getGUIVehicleControl()
Returns the vehicle control.
Definition GUINet.cpp:591
void unlock()
release exclusive access to the simulation state
Definition GUINet.cpp:603
double getUPS() const
Returns the update per seconds rate.
Definition GUINet.cpp:416
bool loadEdgeData(const std::string &file)
load edgeData from file
Definition GUINet.cpp:706
void drawGL(const GUIVisualizationSettings &s) const override
Draws the object.
Definition GUINet.cpp:570
virtual bool skipFinalReset() const override
gui may prevent final meanData reset to keep live data visible
Definition GUINet.h:365
long myLastVehicleMovementCount
Definition GUINet.h:412
std::vector< GUIGlID > getJunctionIDs(bool includeInternal) const
Definition GUINet.cpp:249
std::map< const MSLink *, std::string > Links2LogicMap
Definition of a link-to-logic-id map.
Definition GUINet.h:398
MSTransportableControl & getPersonControl() override
Returns the person control.
Definition GUINet.cpp:130
FXMutex myLock
The mutex used to avoid concurrent updates of the vehicle buffer.
Definition GUINet.h:462
void flushOutputsAtEnd()
flush outputs once the simulation has reached its end
Definition GUINet.cpp:801
bool mySkipFinalReset
Definition GUINet.h:418
bool isSelected(const MSTrafficLightLogic *tll) const override
return wheter the given logic (or rather it's wrapper) is selected in the GUI
Definition GUINet.cpp:775
~GUINet()
Destructor.
Definition GUINet.cpp:94
long myOverallVehicleCount
Definition GUINet.h:412
void simulationStep()
Performs a single simulation step (locking the simulation)
Definition GUINet.cpp:242
int getSimDuration() const
Returns the duration of the last step's simulation part (in ms)
Definition GUINet.cpp:393
SUMORTree myGrid2
The visualization speed-up for secondary shapes.
Definition GUINet.h:380
void initGUIStructures()
Initialises gui wrappers.
Definition GUINet.cpp:276
long myOverallSimDuration
Definition GUINet.h:413
std::vector< std::string > getEdgeDataAttrs() const
return list of loaded edgeData attributes
Definition GUINet.cpp:743
const Boundary & getBoundary() const
returns the bounder of the network
Definition GUINet.cpp:124
double getRTFactor() const
Returns the simulation speed as a factor to real time.
Definition GUINet.cpp:407
void registerRenderedObject(GUIGlObject *o)
add object into rtree
Definition GUINet.cpp:376
std::vector< GUIEdge * > myEdgeWrapper
Wrapped MS-edges.
Definition GUINet.h:386
std::map< MSTrafficLightLogic *, GUITrafficLightLogicWrapper * > Logics2WrapperMap
Definition of a traffic light-to-wrapper map.
Definition GUINet.h:404
GUITrafficLightLogicWrapper * getTLLWrapper(MSTrafficLightLogic *tll)
Definition GUINet.cpp:226
double getAvgWalkDuration() const
Definition GUINet.h:227
int getLinkTLID(const MSLink *const link) const
Definition GUINet.cpp:198
void setSimDuration(int val)
Sets the duration of the last step's simulation part.
Definition GUINet.cpp:449
SUMORTree & getVisualisationSpeedUp()
Returns the RTree used for visualisation speed-up.
Definition GUINet.h:287
std::vector< GUICalibrator * > myCalibratorWrapper
A calibrator dictionary.
Definition GUINet.h:395
std::vector< std::string > getMeanDataIDs() const
return list of loaded edgeData ids (being computed in the current simulation)
Definition GUINet.cpp:753
bool isGUINet() const override
Returns whether this is a GUI Net.
Definition GUINet.h:106
double getMeanUPS() const
Returns the update per seconds rate.
Definition GUINet.cpp:434
double getMeanData(const MSLane *lane, const std::string &id, const std::string &attr)
retrieve live lane/edge weight for the given meanData id and attribute
Definition GUINet.cpp:631
void initTLMap()
Initialises the tl-logic map and wrappers.
Definition GUINet.cpp:148
int getLinkTLIndex(const MSLink *const link) const
Definition GUINet.cpp:213
Boundary myBoundary
The networks boundary.
Definition GUINet.h:383
double getAvgWalkTimeLoss() const
Definition GUINet.h:230
const SUMORTree & getVisualisationSpeedUp(bool secondary=false) const
Returns the RTree used for visualisation speed-up.
Definition GUINet.h:295
std::vector< GUIGlID > getTLSIDs() const
Returns the gl-ids of all traffic light logics within the net.
Definition GUINet.cpp:261
std::map< std::string, MSEdgeWeightsStorage * > myLoadedEdgeData
loaded edge data for visualization
Definition GUINet.h:416
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent) override
Returns an own parameter window.
Definition GUINet.cpp:486
Logics2WrapperMap myLogics2Wrapper
The traffic light-to-wrapper map.
Definition GUINet.h:406
int getIdleDuration() const
Returns the duration of the last step's idle part (in ms)
Definition GUINet.cpp:443
double getMeanRTFactor(int duration) const
Returns the simulation speed as a factor to real time.
Definition GUINet.cpp:425
void createTLWrapper(MSTrafficLightLogic *tll) override
creates a wrapper for the given logic
Definition GUINet.cpp:157
bool vehicleExists(const std::string &name) const
returns the information whether the vehicle still exists
Definition GUINet.cpp:192
std::vector< GUIDetectorWrapper * > myDetectorWrapper
A detector dictionary.
Definition GUINet.h:392
void addHotkey(int key, Command *press, Command *release=nullptr)
register custom hotkey action
Definition GUINet.cpp:791
double getAvgWalkRouteLength() const
Definition GUINet.h:224
void lock()
grant exclusive access to the simulation state
Definition GUINet.cpp:597
std::vector< GUIJunctionWrapper * > myJunctionWrapper
Wrapped MS-junctions.
Definition GUINet.h:389
void updateGUI() const override
update view after simulation.loadState
Definition GUINet.cpp:781
static GUINet * getGUIInstance()
Returns the pointer to the unique instance of GUINet (singleton).
Definition GUINet.cpp:581
double getAvgTimeLoss() const
Definition GUINet.h:215
double getAvgDepartDelay() const
Definition GUINet.h:218
double getEdgeData(const MSEdge *edge, const std::string &attr)
retrieve loaded edged weight for the given attribute and the current simulation time
Definition GUINet.cpp:614
double getAvgWaitingTime() const
Definition GUINet.h:212
std::vector< std::string > getMeanDataAttrs(const std::string &meanDataID) const
return list of available attributes for the given meanData id
Definition GUINet.cpp:764
int myLastSimDuration
The step durations (simulation, /*visualisation, *‍/idle)
Definition GUINet.h:410
Position getJunctionPosition(const std::string &name) const
returns the position of a junction
Definition GUINet.cpp:185
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent) override
Returns an own popup-menu.
Definition GUINet.cpp:471
int myLastIdleDuration
Definition GUINet.h:410
friend class GUIOSGBuilder
Definition GUINet.h:373
void guiSimulationStep()
Some further steps needed for gui processing.
Definition GUINet.cpp:235
MSTransportableControl & getContainerControl() override
Returns the container control.
Definition GUINet.cpp:139
GUIMEVehicleControl * getGUIMEVehicleControl()
Returns the vehicle control.
Definition GUINet.cpp:608
Links2LogicMap myLinks2Logic
The link-to-logic-id map.
Definition GUINet.h:400
LayeredRTree myGrid
The visualization speed-up.
Definition GUINet.h:377
A window containing a gl-object's parameter.
The class responsible for building and deletion of vehicles (gui-version)
A MSVehicle extended by some values for usage within the gui.
Definition GUIVehicle.h:51
Stores the information about how to visualize structures.
A RT-tree for efficient storing of SUMO's GL-objects in layers.
static double getAvgWalkRouteLength()
static double getAvgTimeLoss()
static double getAvgDepartDelay()
static double getAvgRouteLength()
accessors for GUINet-Parameters
static double getAvgWaitingTime()
static double getAvgDuration()
static double getAvgWalkDuration()
static double getAvgWalkTimeLoss()
Stores edges and lanes, performs moving of vehicle.
A road/street connecting two junctions.
Definition MSEdge.h:77
A storage for edge travel times and efforts.
Stores time-dependant events and executes them at the proper time.
Container for junctions; performs operations on all stored junctions.
Representation of a lane in the micro simulation.
Definition MSLane.h:84
The simulated network and simulation perfomer.
Definition MSNet.h:89
A class that stores and controls tls and switching of their programs.
The parent class for traffic light logics.
The class responsible for building and deletion of vehicles.
Static storage of an output device and its base (abstract) implementation.
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
Interface for a class which obtains read weights for named edges.
A RT-tree for efficient storing of SUMO's GL-objects.
Definition SUMORTree.h:66
Encapsulated SAX-Attributes.
SAX-handler base for SUMO-files.