SUMO - Simulation of Urban MObility
|
The car-following model abstraction. More...
#include <MSCFModel.h>
Data Structures | |
class | VehicleVariables |
Public Member Functions | |
MSCFModel (const MSVehicleType *vtype, SUMOReal accel, SUMOReal decel, SUMOReal headwayTime) | |
Constructor. | |
virtual | ~MSCFModel () |
Destructor. | |
Methods to override by model implementation | |
virtual SUMOReal | moveHelper (MSVehicle *const veh, SUMOReal vPos) const |
Applies interaction with stops and lane changing model influences. | |
virtual SUMOReal | freeSpeed (const MSVehicle *const veh, SUMOReal speed, SUMOReal seen, SUMOReal maxSpeed) const |
Computes the vehicle's safe speed without a leader. | |
virtual SUMOReal | followSpeed (const MSVehicle *const veh, SUMOReal speed, SUMOReal gap2pred, SUMOReal predSpeed, SUMOReal predMaxDecel) const =0 |
Computes the vehicle's safe speed (no dawdling) | |
virtual SUMOReal | stopSpeed (const MSVehicle *const veh, SUMOReal gap2pred) const =0 |
Computes the vehicle's safe speed for approaching a non-moving obstacle (no dawdling) | |
virtual SUMOReal | interactionGap (const MSVehicle *const veh, SUMOReal vL) const |
Returns the maximum gap at which an interaction between both vehicles occurs. | |
virtual void | saveState (std::ostream &os) |
Saves the model's definition into the state. | |
virtual int | getModelID () const =0 |
Returns the model's ID; the XML-Tag number is used. | |
virtual MSCFModel * | duplicate (const MSVehicleType *vtype) const =0 |
Duplicates the car-following model. | |
virtual VehicleVariables * | createVehicleVariables () const |
Returns model specific values which are stored inside a vehicle and must be used with casting. | |
Virtual methods with default implementation | |
virtual SUMOReal | getMaxAccel () const |
Get the vehicle type's maximum acceleration [m/s^2]. | |
virtual SUMOReal | getMaxDecel () const |
Get the vehicle type's maximum deceleration [m/s^2]. | |
virtual SUMOReal | getImperfection () const |
Get the driver's imperfection. | |
virtual SUMOReal | getHeadwayTime () const |
Get the driver's reaction time [s]. | |
Currently fixed methods | |
void | leftVehicleVsafe (const MSVehicle *const ego, const MSVehicle *const neigh, SUMOReal &vSafe) const |
Incorporates the influence of the vehicle on the left lane. | |
SUMOReal | maxNextSpeed (SUMOReal speed) const |
Returns the maximum speed given the current speed. | |
SUMOReal | brakeGap (SUMOReal speed) const |
Returns the distance the vehicle needs to halt including driver's reaction time. | |
SUMOReal | getSecureGap (const SUMOReal speed, const SUMOReal leaderSpeed, const SUMOReal leaderMaxDecel) const |
Returns the minimum gap to reserve if the leader is braking at maximum. | |
SUMOReal | getSpeedAfterMaxDecel (SUMOReal v) const |
Returns the velocity after maximum deceleration. | |
Setter methods | |
virtual void | setMaxAccel (SUMOReal accel) |
Sets a new value for maximum acceleration [m/s^2]. | |
virtual void | setMaxDecel (SUMOReal decel) |
Sets a new value for maximum deceleration [m/s^2]. | |
virtual void | setImperfection (SUMOReal imperfection) |
Sets a new value for driver imperfection. | |
virtual void | setHeadwayTime (SUMOReal headwayTime) |
Sets a new value for driver reaction time [s]. | |
Protected Attributes | |
SUMOReal | myAccel |
The vehicle's maximum acceleration [m/s^2]. | |
SUMOReal | myDecel |
The vehicle's maximum deceleration [m/s^2]. | |
SUMOReal | myHeadwayTime |
The driver's desired time headway (aka reaction time tau) [s]. | |
const MSVehicleType * | myType |
The type to which this model definition belongs to. |
The car-following model abstraction.
MSCFModel is an interface for different car following Models to implement. It provides methods to compute a vehicles velocity for a simulation step.
Definition at line 59 of file MSCFModel.h.
MSCFModel::MSCFModel | ( | const MSVehicleType * | vtype, |
SUMOReal | accel, | ||
SUMOReal | decel, | ||
SUMOReal | headwayTime | ||
) |
Constructor.
[in] | rvtype | a reference to the corresponding vtype |
Definition at line 45 of file MSCFModel.cpp.
MSCFModel::~MSCFModel | ( | ) | [virtual] |
Destructor.
Definition at line 51 of file MSCFModel.cpp.
SUMOReal MSCFModel::brakeGap | ( | SUMOReal | speed | ) | const |
Returns the distance the vehicle needs to halt including driver's reaction time.
[in] | speed | The vehicle's current speed |
Definition at line 104 of file MSCFModel.cpp.
References ACCEL2SPEED, getMaxDecel(), myHeadwayTime, SPEED2DIST, and SUMOReal.
Referenced by MSVehicle::addStop(), MSVehicle::checkRewindLinkLanes(), MSLane::getLeaderOnConsecutive(), getMaxSpeedRegardingNextLanes(), MSLaneChanger::getRealLeader(), getSecureGap(), MSLane::isInsertionSuccess(), MSVehicle::moveChecked(), MSLane::pWagGenericInsertion(), MSLane::pWagSimpleInsertion(), and MSVehicle::vsafeCriticalCont().
virtual VehicleVariables* MSCFModel::createVehicleVariables | ( | ) | const [inline, virtual] |
Returns model specific values which are stored inside a vehicle and must be used with casting.
Reimplemented in MSCFModel_IDM, MSCFModel_Wiedemann, and MSCFModel_PWag2009.
Definition at line 157 of file MSCFModel.h.
Referenced by MSVehicle::MSVehicle().
virtual MSCFModel* MSCFModel::duplicate | ( | const MSVehicleType * | vtype | ) | const [pure virtual] |
Duplicates the car-following model.
[in] | vtype | The vehicle type this model belongs to (1:1) |
Implemented in MSCFModel_KraussOrig1, MSCFModel_IDM, MSCFModel_Wiedemann, MSCFModel_PWag2009, MSCFModel_Krauss, and MSCFModel_Kerner.
Referenced by MSVehicleType::build().
virtual SUMOReal MSCFModel::followSpeed | ( | const MSVehicle *const | veh, |
SUMOReal | speed, | ||
SUMOReal | gap2pred, | ||
SUMOReal | predSpeed, | ||
SUMOReal | predMaxDecel | ||
) | const [pure virtual] |
Computes the vehicle's safe speed (no dawdling)
Returns the velocity of the vehicle in dependence to the vehicle's and its leader's values and the distance between them.
[in] | veh | The vehicle (EGO) |
[in] | speed | The vehicle's speed |
[in] | gap2pred | The (netto) distance to the LEADER |
[in] | predSpeed | The speed of LEADER |
Implemented in MSCFModel_IDM, MSCFModel_Wiedemann, MSCFModel_KraussOrig1, MSCFModel_PWag2009, MSCFModel_Krauss, and MSCFModel_Kerner.
Referenced by MSLane::freeInsertion(), freeSpeed(), MSLCM_DK2004::informBlocker(), MSLane::isInsertionSuccess(), leftVehicleVsafe(), MSVehicle::moveRegardingCritical(), MSLane::pWagGenericInsertion(), MSVehicle::vsafeCriticalCont(), MSLCM_DK2004::wantsChangeToLeft(), and MSLCM_DK2004::wantsChangeToRight().
virtual SUMOReal MSCFModel::freeSpeed | ( | const MSVehicle *const | veh, |
SUMOReal | speed, | ||
SUMOReal | seen, | ||
SUMOReal | maxSpeed | ||
) | const [inline, virtual] |
Computes the vehicle's safe speed without a leader.
Returns the velocity of the vehicle in dependence to the length of the free street and the target velocity at the end of the free range.
[in] | veh | The vehicle (EGO) |
[in] | speed | The vehicle's speed |
[in] | seen | The look ahead distance |
[in] | maxSpeed | The maximum allowed speed |
Definition at line 96 of file MSCFModel.h.
References followSpeed().
Referenced by getMaxSpeedRegardingNextLanes(), MSLane::isInsertionSuccess(), MSVehicle::moveRegardingCritical(), and MSVehicle::vsafeCriticalCont().
virtual SUMOReal MSCFModel::getHeadwayTime | ( | ) | const [inline, virtual] |
Get the driver's reaction time [s].
Definition at line 193 of file MSCFModel.h.
References myHeadwayTime.
Referenced by MSVehicle::checkRewindLinkLanes(), TraCIServerAPI_VehicleType::getVariable(), MSLane::maxSpeedGapInsertion(), MSVehicle::moveChecked(), MSLane::pWagSimpleInsertion(), and MSVehicle::vsafeCriticalCont().
virtual SUMOReal MSCFModel::getImperfection | ( | ) | const [inline, virtual] |
Get the driver's imperfection.
Reimplemented in MSCFModel_KraussOrig1, and MSCFModel_PWag2009.
Definition at line 185 of file MSCFModel.h.
Referenced by TraCIServerAPI_VehicleType::getVariable().
virtual SUMOReal MSCFModel::getMaxAccel | ( | ) | const [inline, virtual] |
Get the vehicle type's maximum acceleration [m/s^2].
Definition at line 169 of file MSCFModel.h.
References myAccel.
Referenced by TraCIServerAPI_VehicleType::getVariable(), maxNextSpeed(), MSVehicle::vsafeCriticalCont(), and MSMeanData_HBEFA::MSLaneMeanDataValues::write().
virtual SUMOReal MSCFModel::getMaxDecel | ( | ) | const [inline, virtual] |
Get the vehicle type's maximum deceleration [m/s^2].
Definition at line 177 of file MSCFModel.h.
References myDecel.
Referenced by brakeGap(), MSLaneChanger::change2left(), MSLaneChanger::change2right(), MSLane::freeInsertion(), TraCIServerAPI_VehicleType::getVariable(), MSLCM_DK2004::informBlocker(), MSLane::isInsertionSuccess(), leftVehicleVsafe(), MSLane::maxSpeedGapInsertion(), MSVehicle::moveChecked(), MSVehicle::moveRegardingCritical(), MSLane::pWagGenericInsertion(), MSVehicle::vsafeCriticalCont(), MSLCM_DK2004::wantsChangeToLeft(), and MSLCM_DK2004::wantsChangeToRight().
virtual int MSCFModel::getModelID | ( | ) | const [pure virtual] |
Returns the model's ID; the XML-Tag number is used.
Implemented in MSCFModel_IDM, MSCFModel_Wiedemann, MSCFModel_KraussOrig1, MSCFModel_PWag2009, MSCFModel_Krauss, and MSCFModel_Kerner.
Referenced by MSVehicleType::saveState().
SUMOReal MSCFModel::getSecureGap | ( | const SUMOReal | speed, |
const SUMOReal | leaderSpeed, | ||
const SUMOReal | leaderMaxDecel | ||
) | const [inline] |
Returns the minimum gap to reserve if the leader is braking at maximum.
[in] | speed | EGO's speed |
[in] | leaderSpeed | LEADER's speed |
[in] | leaderMaxDecel | LEADER's max. deceleration rate |
Definition at line 239 of file MSCFModel.h.
References ACCEL2SPEED, brakeGap(), MAX2(), SPEED2DIST, and SUMOReal.
Referenced by MSLaneChanger::change2left(), MSLaneChanger::change2right(), MSLane::freeInsertion(), MSLCM_DK2004::informBlocker(), and MSLane::isInsertionSuccess().
SUMOReal MSCFModel::getSpeedAfterMaxDecel | ( | SUMOReal | v | ) | const [inline] |
Returns the velocity after maximum deceleration.
[in] | v | The velocity |
Definition at line 250 of file MSCFModel.h.
References ACCEL2SPEED, MAX2(), myDecel, and SUMOReal.
Referenced by MSCFModel_Krauss::followSpeed(), MSVehicle::moveRegardingCritical(), MSCFModel_Krauss::stopSpeed(), MSCFModel_Wiedemann::stopSpeed(), and MSVehicle::vsafeCriticalCont().
SUMOReal MSCFModel::interactionGap | ( | const MSVehicle *const | veh, |
SUMOReal | vL | ||
) | const [virtual] |
Returns the maximum gap at which an interaction between both vehicles occurs.
"interaction" means that the LEADER influences EGO's speed.
[in] | veh | The EGO vehicle |
[in] | vL | LEADER's speed |
Reimplemented in MSCFModel_IDM, and MSCFModel_Wiedemann.
Definition at line 71 of file MSCFModel.cpp.
References MSVehicle::getLane(), MSLane::getMaxSpeed(), MSVehicle::getSpeed(), MAX2(), maxNextSpeed(), MIN2(), myDecel, myHeadwayTime, SPEED2DIST, and SUMOReal.
Referenced by MSAbstractLaneChangeModel::predInteraction().
void MSCFModel::leftVehicleVsafe | ( | const MSVehicle *const | ego, |
const MSVehicle *const | neigh, | ||
SUMOReal & | vSafe | ||
) | const |
Incorporates the influence of the vehicle on the left lane.
In Germany, vehicles on the right lane must not pass a vehicle on the lane left to the if the allowed velocity>60km/h
[in] | ego | The ego vehicle |
[in] | neigh | The neighbor vehicle on the left lane |
[in,out] | vSafe | Current vSafe; may be adapted due to the left neighbor |
Definition at line 86 of file MSCFModel.cpp.
References followSpeed(), MSVehicle::getCarFollowModel(), MSVehicleType::getLength(), getMaxDecel(), MSVehicleType::getMinGap(), MSVehicle::getPositionOnLane(), MSVehicle::getSpeed(), MSBaseVehicle::getVehicleType(), MAX2(), MIN2(), and SUMOReal.
Referenced by MSVehicle::moveRegardingCritical().
SUMOReal MSCFModel::maxNextSpeed | ( | SUMOReal | speed | ) | const |
Returns the maximum speed given the current speed.
The implementation of this method must take into account the time step duration.
Justification: Due to air brake or other influences, the vehicle's next maximum speed may depend on the vehicle's current speed (given).
[in] | speed | The vehicle's current speed |
Definition at line 98 of file MSCFModel.cpp.
References ACCEL2SPEED, getMaxAccel(), MSVehicleType::getMaxSpeed(), MIN2(), myType, and SUMOReal.
Referenced by MSCFModel_Kerner::followSpeed(), MSCFModel_Krauss::followSpeed(), MSCFModel_KraussOrig1::followSpeed(), MSLane::getFollowerOnConsecutive(), interactionGap(), MSVehicle::moveChecked(), MSCFModel_KraussOrig1::moveHelper(), moveHelper(), MSVehicle::moveRegardingCritical(), MSLCM_DK2004::patchSpeed(), MSCFModel_Kerner::stopSpeed(), MSCFModel_Krauss::stopSpeed(), MSCFModel_KraussOrig1::stopSpeed(), MSCFModel_Wiedemann::stopSpeed(), and MSVehicle::vsafeCriticalCont().
SUMOReal MSCFModel::moveHelper | ( | MSVehicle *const | veh, |
SUMOReal | vPos | ||
) | const [virtual] |
Applies interaction with stops and lane changing model influences.
[in] | veh | The ego vehicle |
[in] | vPos | The possible velocity |
Reimplemented in MSCFModel_IDM, MSCFModel_Wiedemann, MSCFModel_KraussOrig1, and MSCFModel_PWag2009.
Definition at line 55 of file MSCFModel.cpp.
References ACCEL2SPEED, MSVehicle::getLane(), MSVehicle::getLaneChangeModel(), MSLane::getMaxSpeed(), MSVehicle::getSpeed(), MAX2(), maxNextSpeed(), MIN2(), MIN3(), myDecel, MSAbstractLaneChangeModel::patchSpeed(), MSVehicle::processNextStop(), MSVehicle::setPreDawdleAcceleration(), SPEED2ACCEL, and SUMOReal.
Referenced by MSVehicle::moveChecked().
void MSCFModel::saveState | ( | std::ostream & | os | ) | [virtual] |
Saves the model's definition into the state.
[in] | os | The output to write the definition into |
Definition at line 113 of file MSCFModel.cpp.
virtual void MSCFModel::setHeadwayTime | ( | SUMOReal | headwayTime | ) | [inline, virtual] |
Sets a new value for driver reaction time [s].
[in] | headwayTime | The new driver reaction time (in s) |
Reimplemented in MSCFModel_KraussOrig1.
Definition at line 286 of file MSCFModel.h.
References myHeadwayTime.
Referenced by TraCIServerAPI_VehicleType::setVariable().
virtual void MSCFModel::setImperfection | ( | SUMOReal | imperfection | ) | [inline, virtual] |
Sets a new value for driver imperfection.
[in] | accel | The new driver imperfection |
Reimplemented in MSCFModel_KraussOrig1.
Definition at line 278 of file MSCFModel.h.
References UNUSED_PARAMETER.
Referenced by TraCIServerAPI_VehicleType::setVariable().
virtual void MSCFModel::setMaxAccel | ( | SUMOReal | accel | ) | [inline, virtual] |
Sets a new value for maximum acceleration [m/s^2].
[in] | accel | The new acceleration in m/s^2 |
Definition at line 262 of file MSCFModel.h.
References myAccel.
Referenced by TraCIServerAPI_VehicleType::setVariable().
virtual void MSCFModel::setMaxDecel | ( | SUMOReal | decel | ) | [inline, virtual] |
Sets a new value for maximum deceleration [m/s^2].
[in] | accel | The new deceleration in m/s^2 |
Reimplemented in MSCFModel_KraussOrig1.
Definition at line 270 of file MSCFModel.h.
References myDecel.
Referenced by TraCIServerAPI_VehicleType::setVariable().
virtual SUMOReal MSCFModel::stopSpeed | ( | const MSVehicle *const | veh, |
SUMOReal | gap2pred | ||
) | const [pure virtual] |
Computes the vehicle's safe speed for approaching a non-moving obstacle (no dawdling)
Returns the velocity of the vehicle when approaching a static object (such as the end of a lane) assuming no reaction time is needed.
[in] | veh | The vehicle (EGO) |
[in] | gap2pred | The (netto) distance to the the obstacle |
Implemented in MSCFModel_IDM, MSCFModel_Wiedemann, MSCFModel_KraussOrig1, MSCFModel_PWag2009, MSCFModel_Krauss, and MSCFModel_Kerner.
Referenced by MSVehicle::moveRegardingCritical(), MSLCM_DK2004::patchSpeed(), MSVehicle::processNextStop(), and MSVehicle::vsafeCriticalCont().
SUMOReal MSCFModel::myAccel [protected] |
The vehicle's maximum acceleration [m/s^2].
Definition at line 297 of file MSCFModel.h.
Referenced by MSCFModel_Kerner::_v(), MSCFModel_Wiedemann::_v(), MSCFModel_IDM::_v(), MSCFModel_Krauss::dawdle(), MSCFModel_PWag2009::dawdle(), MSCFModel_KraussOrig1::dawdle(), MSCFModel_Kerner::duplicate(), MSCFModel_Krauss::duplicate(), MSCFModel_PWag2009::duplicate(), MSCFModel_Wiedemann::duplicate(), MSCFModel_IDM::duplicate(), MSCFModel_KraussOrig1::duplicate(), MSCFModel_Wiedemann::fullspeed(), getMaxAccel(), MSCFModel_IDM::interactionGap(), and setMaxAccel().
SUMOReal MSCFModel::myDecel [protected] |
The vehicle's maximum deceleration [m/s^2].
Definition at line 300 of file MSCFModel.h.
Referenced by MSCFModel_Kerner::_v(), MSCFModel_PWag2009::_v(), MSCFModel_Wiedemann::_v(), MSCFModel_Krauss::_vsafe(), MSCFModel_KraussOrig1::_vsafe(), MSCFModel_Kerner::duplicate(), MSCFModel_Krauss::duplicate(), MSCFModel_PWag2009::duplicate(), MSCFModel_Wiedemann::duplicate(), MSCFModel_IDM::duplicate(), MSCFModel_KraussOrig1::duplicate(), MSCFModel_Wiedemann::emergency(), getMaxDecel(), getSpeedAfterMaxDecel(), MSCFModel_IDM::interactionGap(), interactionGap(), MSCFModel_Wiedemann::krauss_vsafe(), MSCFModel_KraussOrig1::moveHelper(), moveHelper(), MSCFModel_KraussOrig1::setHeadwayTime(), MSCFModel_KraussOrig1::setMaxDecel(), and setMaxDecel().
SUMOReal MSCFModel::myHeadwayTime [protected] |
The driver's desired time headway (aka reaction time tau) [s].
Definition at line 303 of file MSCFModel.h.
Referenced by MSCFModel_IDM::_v(), brakeGap(), MSCFModel_Kerner::duplicate(), MSCFModel_Krauss::duplicate(), MSCFModel_PWag2009::duplicate(), MSCFModel_IDM::duplicate(), MSCFModel_KraussOrig1::duplicate(), getHeadwayTime(), interactionGap(), MSCFModel_Wiedemann::krauss_vsafe(), MSCFModel_PWag2009::moveHelper(), MSCFModel_KraussOrig1::setHeadwayTime(), setHeadwayTime(), and MSCFModel_KraussOrig1::setMaxDecel().
const MSVehicleType* MSCFModel::myType [protected] |
The type to which this model definition belongs to.
Definition at line 294 of file MSCFModel.h.
Referenced by MSCFModel_Wiedemann::_v(), MSCFModel_IDM::_v(), MSCFModel_IDM::desiredSpeed(), and maxNextSpeed().