55 if (s->getConstraints().size() > 0) {
58 for (
auto item : s->getConstraints()) {
60 c->
write(out, item.first);
78 s->removeConstraints();
103 myFoeSignal(signal) {
104 for (
const auto& lv : signal->
getLinks()) {
105 for (
const MSLink* link : lv) {
106 MSLane* lane = link->getViaLaneOrLane();
132 item.second->saveState(out);
141 const std::vector<std::string>& tripIDs = attrs.
get<std::vector<std::string> >(
SUMO_ATTR_STATE,
nullptr, ok);
143 if (lane ==
nullptr) {
158 item.second->clearState();
182 vehID =
" (" + vehID +
")";
184 std::vector<std::string> passedIDs;
185 for (
const std::string& passedTripID :
myTrackers.front()->myPassed) {
186 if (passedTripID ==
"") {
189 const std::string passedID =
getVehID(passedTripID);
190 if (passedID !=
"") {
191 passedIDs.push_back(passedID);
194 std::string passedIDs2 =
"";
195 if (passedIDs.size() > 0) {
196 passedIDs2 =
" (" +
toString(passedIDs) +
")";
198 std::string params =
"";
200 params += (
"\n key=" + item.first +
" value=" + item.second);
218 myLastIndex = (myLastIndex + 1) % myPassed.size();
221 if (myLane->getID() == DEBUG_LANE) {
230 while (limit > (
int)myPassed.size()) {
231 myPassed.insert(myPassed.begin() + (myLastIndex + 1),
"");
234 if (myLane->getID() == DEBUG_LANE) {
235 std::cout <<
" raiseLimit=" << limit <<
"\n";
242 if (myLastIndex < 0) {
247 if (myPassed[i] == tripId) {
251 i = (int)myPassed.size() - 1;
262 myPassed = std::vector<std::string>(myPassed.size());
268 const std::string state =
toString(myPassed.back() ==
""
269 ? std::vector<std::string>(myPassed.begin(), myPassed.begin() + (myLastIndex + 1))
284 raiseLimit((
int)tripIDs.size());
285 for (
int i = 0; i < (int)tripIDs.size(); i++) {
286 myPassed[i] = tripIDs[i];
289 if (myLane->getID() == DEBUG_LANE) {
290 std::cout <<
" loadState limit=" << tripIDs.size() <<
" index=" << index <<
"\n";
291 for (
int i = 0; i < (int)myPassed.size(); i++) {
292 std::cout <<
" i=" << i <<
" passed=" << myPassed[i] <<
"\n";
#define WRITE_WARNINGF(...)
@ SUMO_TAG_RAILSIGNAL_CONSTRAINTS
Constraints on switching a rail signal.
@ SUMO_TAG_RAILSIGNAL_CONSTRAINT_TRACKER
Saved state for constraint tracker.
@ SUMO_ATTR_TLID
link,node: the traffic light id responsible for this link
@ SUMO_ATTR_STATE
The state of a link.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Representation of a lane in the micro simulation.
static bool dictionary(const std::string &id, MSLane *lane)
Static (sic!) container methods {.
Something on a lane to be noticed about vehicle movement.
Notification
Definition of a vehicle state.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
MSVehicleControl & getVehicleControl()
Returns the vehicle control.
bool hasPassed(const std::string &tripId, int limit) const
void raiseLimit(int limit)
bool notifyEnter(SUMOTrafficObject &veh, MSMoveReminder::Notification reason, const MSLane *enteredLane=0)
tracks vehicles that passed this link (entered the next lane)
void loadState(int index, const std::vector< std::string > &tripIDs)
loads the current passed states into the given stream
PassedTracker(MSLane *lane)
void clearState()
Clear all passed states before quick-loading state.
void saveState(OutputDevice &out)
Saves the current passed states into the given stream.
static std::map< const MSLane *, PassedTracker *, ComparatorNumericalIdLess > myTrackerLookup
MSRailSignalConstraint_Predecessor(ConstraintType type, const MSRailSignal *signal, const std::string &tripId, int limit, bool active)
Constructor.
const MSRailSignal * myFoeSignal
store the foe signal (for TraCI access)
bool cleared() const
whether the constraint has been met
bool myAmActive
Whether this constraint is currently active.
static void loadState(const SUMOSAXAttributes &attrs)
loads the constraint state from the given attrs
static void saveState(OutputDevice &out)
Saves the current constraint states into the given stream.
const std::string myTripId
id of the predecessor that must already have passed
std::string getDescription() const
static void clearState()
Clear all constraint states before quick-loading state.
static void cleanup()
clean up state
std::vector< PassedTracker * > myTrackers
the tracker object for this constraint
void write(OutputDevice &out, const std::string &tripId) const
const int myLimit
the number of passed vehicles within which tripId must have occured
A base class for constraints.
static void saveState(OutputDevice &out)
Saves the current constraint states into the given stream.
static std::string getVehID(const std::string &tripID)
static void clearState()
Clear all constraint states before quick-loading state.
static void clearAll()
Remove all constraints before quick-loading state.
SumoXMLTag getTag() const
static void cleanup()
clean up state
virtual void write(OutputDevice &out, const std::string &tripId) const =0
static MSRailSignalControl & getInstance()
const LinkVectorVector & getLinks() const
Returns the list of lists of all affected links.
The class responsible for building and deletion of vehicles.
std::map< std::string, SUMOVehicle * >::const_iterator constVehIt
Definition of the internal vehicles map iterator.
constVehIt loadedVehBegin() const
Returns the begin of the internal vehicle map.
constVehIt loadedVehEnd() const
Returns the end of the internal vehicle map.
const std::string & getID() const
Returns the id.
static OptionsCont & getOptions()
Retrieves the options.
Static storage of an output device and its base (abstract) implementation.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
virtual const std::string getParameter(const std::string &key, const std::string defaultValue="") const
Returns the value for a given key.
const Parameterised::Map & getParametersMap() const
Returns the inner key/value map.
void writeParams(OutputDevice &device) const
write Params in the given outputdevice
Encapsulated SAX-Attributes.
virtual std::string getString(int id, bool *isPresent=nullptr) const =0
Returns the string-value of the named (by its enum-value) attribute.
T get(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is an int.
Representation of a vehicle, person, or container.
virtual const SUMOVehicleParameter & getParameter() const =0
Returns the vehicle's parameter (including departure definition)
Representation of a vehicle.
static std::string prune(const std::string &str)
Removes trailing and leading whitechars.