53 myWaitingForVehicleNumber(0),
54 myHaveNewWaiting(false) {
83 std::map<std::string, MSTransportable*>::const_iterator i =
myTransportables.find(
id);
103 const std::map<std::string, MSTransportable*>::iterator i =
myTransportables.find(transportable->
getID());
117 if (std::find(transportables.begin(), transportables.end(), transportable) == transportables.end()) {
129 for (
int i = 0; i < (int)transportables.size(); ++i) {
130 if (transportables[i]->proceed(net, time)) {
133 erase(transportables[i]);
141 for (
int i = 0; i < (int)transportables.size(); ++i) {
142 if (!transportables[i]->proceed(net, time)) {
143 erase(transportables[i]);
166 for (TransportableVector::iterator i = wait.begin(); i != wait.end();) {
173 if (boardingDuration >= stop->
duration) {
191 if (wait.size() == 0) {
204 for (TransportableVector::iterator i = waitContainers.begin(); i != waitContainers.end();) {
215 if (loadingDuration >= stop->
duration) {
222 i = waitContainers.erase(i);
229 if (waitContainers.size() == 0) {
252 const MSEdge* edge = (*i).first;
254 for (TransportableVector::const_iterator j = pv.begin(); j != pv.end(); ++j) {
257 std::string transportableType;
258 if (dynamic_cast<MSPerson*>(p) != 0) {
260 transportableType =
"Person";
262 transportableType =
"Container";
267 WRITE_WARNING(transportableType +
" '" + p->
getID() +
"' aborted " + waitDescription +
".");
278 TransportableVector::iterator it2 = std::find(ts.begin(), ts.end(), t);
279 if (it2 != ts.end()) {
285 TransportableVector::iterator it2 = std::find(ts.begin(), ts.end(), t);
286 if (it2 != ts.end()) {
295 std::mt19937* rng)
const {
297 return new MSPerson(pars, vtype, plan, speedFactor);
void abortWaiting(MSTransportable *t)
aborts waiting stage of transportable
void addWaiting(const MSEdge *edge, MSTransportable *person)
adds a transportable to the list of transportables waiting for a vehicle on the specified edge ...
bool hasNonWaiting() const
checks whether any transportable is still engaged in walking / stopping
Representation of a vehicle in the micro simulation.
std::string getWaitingDescription() const
Return where the person waits and for what.
void addContainer(MSTransportable *container)
Adds a container.
int getPersonNumber() const
Returns the number of persons.
const SUMOVehicleParameter::Stop pars
The stop parameter.
SUMOTime duration
The stopping duration.
std::map< SUMOTime, TransportableVector > myWaiting4Departure
Transportables waiting for departure.
const SUMOVehicleParameter & getParameter() const
Returns the vehicle's parameter (including departure definition)
void setWaitEnd(SUMOTime time, MSTransportable *transportable)
sets the arrival time for a waiting transportable
virtual ~MSTransportableControl()
Destructor.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
std::map< std::string, MSTransportable * > myTransportables
all currently created transportables by id
const SUMOVehicleParameter & getParameter() const
SUMOTime timeToBoardNextPerson
The time at which the vehicle is able to board another person.
int getPersonCapacity() const
Get this vehicle type's person capacity.
std::map< const MSEdge *, TransportableVector > myWaiting4Vehicle
the lists of waiting transportables
virtual MSTransportable * buildContainer(const SUMOVehicleParameter *pars, MSVehicleType *vtype, MSTransportable::MSTransportablePlan *plan) const
Builds a new container.
int getContainerCapacity() const
Get this vehicle type's container capacity.
#define WRITE_WARNING(msg)
The simulated network and simulation perfomer.
int myLoadedNumber
The number of build transportables.
The car-following model and parameter.
virtual void erase(MSTransportable *transportable)
removes a single transportable
static OptionsCont & getOptions()
Retrieves the options.
SUMOTime getBoardingDuration() const
Get this vehicle type's boarding duration.
void abortWaitingForVehicle()
aborts the plan for any transportable that is still waiting for a ride
virtual void tripInfoOutput(OutputDevice &os, MSTransportable *transportable) const =0
Called on writing tripinfo output.
A road/street connecting two junctions.
std::vector< MSTransportable::Stage * > MSTransportablePlan
the structure holding the plan of a transportable
MSTransportable::Stage * getCurrentStage() const
Return the current stage.
void setDeparted(SUMOTime now)
logs depart time of the current stage
double startPos
The stopping position start.
SUMOTime getLoadingDuration() const
Get this vehicle type's loading duration.
bool myHaveNewWaiting
whether a new transportable waiting for a vehicle has been added in the last step ...
SUMOTime depart
The vehicle's departure time.
virtual void routeOutput(OutputDevice &os) const =0
Called on writing vehroute output.
bool loadAnyWaiting(MSEdge *edge, MSVehicle *vehicle, MSVehicle::Stop *stop)
load any applicable containers Loads any container that is waiting on that edge for the given vehicle...
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
const std::string & getID() const
returns the id of the transportable
virtual void removePerson(MSTransportable *p) const
bool hasTransportables() const
checks whether any transportable waits to finish her plan
double endPos
The stopping position end.
virtual void removeContainer(MSTransportable *container) const
Remove container from myContainers.
std::string line
The vehicle's line (mainly for public transport)
int myWaitingForVehicleNumber
The number of transportables waiting for vehicles.
bool boardAnyWaiting(MSEdge *edge, MSVehicle *vehicle, MSVehicle::Stop *stop)
board any applicable persons Boards any people who wait on that edge for the given vehicle and remove...
Structure representing possible vehicle parameter.
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
MSTransportableControl()
Constructor.
static OutputDevice & getDeviceByOption(const std::string &name)
Returns the device described by the option.
bool add(MSTransportable *transportable)
Adds a single transportable, returns false if an id clash occured.
void checkWaiting(MSNet *net, const SUMOTime time)
checks whether any transportables waiting time is over
int getContainerNumber() const
Returns the number of containers.
MSTransportable * get(const std::string &id) const
Returns the named transportable, if existing.
std::vector< MSTransportable * > TransportableVector
Definition of a list of transportables.
virtual MSTransportable * buildPerson(const SUMOVehicleParameter *pars, MSVehicleType *vtype, MSTransportable::MSTransportablePlan *plan, std::mt19937 *rng) const
Builds a new person.
void addPerson(MSTransportable *person)
Adds a passenger.
int myRunningNumber
The number of transportables within the network (build and inserted but not removed) ...
double computeChosenSpeedDeviation(std::mt19937 *rng, const double minDev=-1.) const
Computes and returns the speed deviation.
std::map< SUMOTime, TransportableVector > myWaitingUntil
the lists of walking / stopping transportables
SUMOTime timeToLoadNextContainer
The time at which the vehicle is able to load another container.
An output device that encapsulates an ofstream.
std::string id
The vehicle's id.
Definition of vehicle stop (position and duration)