Eclipse SUMO - Simulation of Urban MObility
ROMAAssignments.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
16 // Assignment methods
17 /****************************************************************************/
18 #ifndef ROMAAssignments_h
19 #define ROMAAssignments_h
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
28 #include <utils/common/SUMOTime.h>
29 
30 // ===========================================================================
31 // class declarations
32 // ===========================================================================
33 class RONet;
34 class ODMatrix;
36 class ROEdge;
37 class ROMAEdge;
38 class ROVehicle;
39 
40 
41 
42 // ===========================================================================
43 // class definitions
44 // ===========================================================================
51 public:
53  ROMAAssignments(const SUMOTime begin, const SUMOTime end, const bool additiveTraffic,
54  const double adaptionFactor, const int maxAlternatives,
56 
59 
61  return myDefaultVehicle;
62  }
63 
64  // @brief calculate edge capacity for the given edge
65  static double getCapacity(const ROEdge* edge);
66 
67  // @brief calculate edge travel time for the given edge and number of vehicles per hour
68  double capacityConstraintFunction(const ROEdge* edge, const double flow) const;
69 
70  // @brief clear effort storage
71  void resetFlows();
72 
73  // @brief incremental method
74  void incremental(const int numIter, const bool verbose);
75 
76  // @brief UE method
77  void ue();
78 
79  // @brief SUE method
80  void sue(const int maxOuterIteration, const int maxInnerIteration, const int kPaths, const double penalty, const double tolerance, const std::string routeChoiceMethod);
81 
93  static double getPenalizedEffort(const ROEdge* const e, const ROVehicle* const v, double t);
94 
106  static double getPenalizedTT(const ROEdge* const e, const ROVehicle* const v, double t);
107 
119  static double getTravelTime(const ROEdge* const e, const ROVehicle* const v, double t);
120 
121 private:
123  bool addRoute(const ConstROEdgeVector& edges, std::vector<RORoute*>& paths, std::string routeId, double prob);
124 
125  const ConstROEdgeVector computePath(ODCell* cell, const SUMOTime time = 0, const double probability = 0., SUMOAbstractRouter<ROEdge, ROVehicle>* router = nullptr);
126 
128  void getKPaths(const int kPaths, const double penalty);
129 
130 private:
133  const bool myAdditiveTraffic;
134  const double myAdaptionFactor;
135  const int myMaxAlternatives;
139  static std::map<const ROEdge* const, double> myPenalties;
141 
142 #ifdef HAVE_FOX
143 private:
144  class RoutingTask : public FXWorkerThread::Task {
145  public:
146  RoutingTask(ROMAAssignments& assign, ODCell* c, const SUMOTime begin, const double linkFlow)
147  : myAssign(assign), myCell(c), myBegin(begin), myLinkFlow(linkFlow) {}
148  void run(FXWorkerThread* context);
149  private:
150  ROMAAssignments& myAssign;
151  ODCell* const myCell;
152  const SUMOTime myBegin;
153  const double myLinkFlow;
154  private:
156  RoutingTask& operator=(const RoutingTask&);
157  };
158 #endif
159 
160 
161 private:
164 
165 };
166 
167 #endif
ROMAAssignments::operator=
ROMAAssignments & operator=(const ROMAAssignments &src)
Invalidated assignment operator.
SUMOTime.h
ROMAAssignments::getKPaths
void getKPaths(const int kPaths, const double penalty)
get the k shortest paths
Definition: ROMAAssignments.cpp:221
ROMAAssignments::incremental
void incremental(const int numIter, const bool verbose)
Definition: ROMAAssignments.cpp:246
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
ROMAAssignments::myAdditiveTraffic
const bool myAdditiveTraffic
Definition: ROMAAssignments.h:133
ROMAEdge
A basic edge for routing applications.
Definition: ROMAEdge.h:57
RONet
The router's network representation.
Definition: RONet.h:63
ROMAAssignments::ROMAAssignments
ROMAAssignments(const SUMOTime begin, const SUMOTime end, const bool additiveTraffic, const double adaptionFactor, const int maxAlternatives, RONet &net, ODMatrix &matrix, SUMOAbstractRouter< ROEdge, ROVehicle > &router)
Constructor.
Definition: ROMAAssignments.cpp:49
ROVehicle
A vehicle as used by router.
Definition: ROVehicle.h:52
ROMAAssignments::myRouter
SUMOAbstractRouter< ROEdge, ROVehicle > & myRouter
Definition: ROMAAssignments.h:138
ODCell
A single O/D-matrix cell.
Definition: ODCell.h:50
ROMAAssignments::myAdaptionFactor
const double myAdaptionFactor
Definition: ROMAAssignments.h:134
ROMAAssignments::myPenalties
static std::map< const ROEdge *const, double > myPenalties
Definition: ROMAAssignments.h:139
ROMAAssignments::myNet
RONet & myNet
Definition: ROMAAssignments.h:136
ROMAAssignments
assignment methods
Definition: ROMAAssignments.h:50
ROMAAssignments::getPenalizedEffort
static double getPenalizedEffort(const ROEdge *const e, const ROVehicle *const v, double t)
Returns the effort to pass an edge including penalties.
Definition: ROMAAssignments.cpp:443
ROMAAssignments::getDefaultVehicle
ROVehicle * getDefaultVehicle()
Definition: ROMAAssignments.h:60
ROMAAssignments::~ROMAAssignments
~ROMAAssignments()
Destructor.
Definition: ROMAAssignments.cpp:58
ROMAAssignments::addRoute
bool addRoute(const ConstROEdgeVector &edges, std::vector< RORoute * > &paths, std::string routeId, double prob)
add a route and check for duplicates
Definition: ROMAAssignments.cpp:168
ODMatrix
An O/D (origin/destination) matrix.
Definition: ODMatrix.h:69
ROMAAssignments::myEnd
const SUMOTime myEnd
Definition: ROMAAssignments.h:132
ROMAAssignments::resetFlows
void resetFlows()
Definition: ROMAAssignments.cpp:235
SUMOAbstractRouter< ROEdge, ROVehicle >
ROMAAssignments::myDefaultVehicle
ROVehicle * myDefaultVehicle
Definition: ROMAAssignments.h:140
ROMAAssignments::capacityConstraintFunction
double capacityConstraintFunction(const ROEdge *edge, const double flow) const
Definition: ROMAAssignments.cpp:116
ROMAAssignments::getCapacity
static double getCapacity(const ROEdge *edge)
Definition: ROMAAssignments.cpp:64
Distribution_Points
Definition: Distribution_Points.h:40
ROMAAssignments::computePath
const ConstROEdgeVector computePath(ODCell *cell, const SUMOTime time=0, const double probability=0., SUMOAbstractRouter< ROEdge, ROVehicle > *router=nullptr)
Definition: ROMAAssignments.cpp:186
ROEdge
A basic edge for routing applications.
Definition: ROEdge.h:72
ROMAAssignments::myMaxAlternatives
const int myMaxAlternatives
Definition: ROMAAssignments.h:135
config.h
FXWorkerThread::Task
Abstract superclass of a task to be run with an index to keep track of pending tasks.
Definition: FXWorkerThread.h:55
SUMOAbstractRouter.h
ROMAAssignments::getTravelTime
static double getTravelTime(const ROEdge *const e, const ROVehicle *const v, double t)
Returns the traveltime on an edge without penalties.
Definition: ROMAAssignments.cpp:457
ROMAAssignments::ue
void ue()
ROMAAssignments::myMatrix
ODMatrix & myMatrix
Definition: ROMAAssignments.h:137
ConstROEdgeVector
std::vector< const ROEdge * > ConstROEdgeVector
Definition: ROEdge.h:56
FXWorkerThread
A thread repeatingly calculating incoming tasks.
Definition: FXWorkerThread.h:48
ROMAAssignments::getPenalizedTT
static double getPenalizedTT(const ROEdge *const e, const ROVehicle *const v, double t)
Returns the traveltime on an edge including penalties.
Definition: ROMAAssignments.cpp:450
ROMAAssignments::sue
void sue(const int maxOuterIteration, const int maxInnerIteration, const int kPaths, const double penalty, const double tolerance, const std::string routeChoiceMethod)
Definition: ROMAAssignments.cpp:342
ROMAAssignments::myBegin
const SUMOTime myBegin
Definition: ROMAAssignments.h:131