SUMO - Simulation of Urban MObility
|
The Intelligent Driver Model (IDM) car-following model. More...
#include <MSCFModel_IDM.h>
Data Structures | |
class | VehicleVariables |
Public Member Functions | |
VehicleVariables * | createVehicleVariables () const |
Returns model specific values which are stored inside a vehicle and must be used with casting. More... | |
MSCFModel * | duplicate (const MSVehicleType *vtype) const |
Duplicates the car-following model. More... | |
SUMOReal | getMaxAccel () const |
Get the vehicle type's maximum acceleration [m/s^2]. More... | |
SUMOReal | getMaxDecel () const |
Get the vehicle type's maximum deceleration [m/s^2]. More... | |
MSCFModel_IDM (const MSVehicleType *vtype, SUMOReal accel, SUMOReal decel, SUMOReal headwayTime, SUMOReal delta, SUMOReal internalStepping) | |
Constructor. More... | |
MSCFModel_IDM (const MSVehicleType *vtype, SUMOReal accel, SUMOReal decel, SUMOReal headwayTime, SUMOReal adaptationFactor, SUMOReal adaptationTime, SUMOReal internalStepping) | |
Constructor. More... | |
~MSCFModel_IDM () | |
Destructor. More... | |
Implementations of the MSCFModel interface | |
SUMOReal | moveHelper (MSVehicle *const veh, SUMOReal vPos) const |
Applies interaction with stops and lane changing model influences. More... | |
SUMOReal | followSpeed (const MSVehicle *const veh, SUMOReal speed, SUMOReal gap2pred, SUMOReal predSpeed, SUMOReal predMaxDecel) const |
Computes the vehicle's safe speed (no dawdling) More... | |
SUMOReal | stopSpeed (const MSVehicle *const veh, const SUMOReal speed, SUMOReal gap2pred) const |
Computes the vehicle's safe speed for approaching a non-moving obstacle (no dawdling) More... | |
SUMOReal | interactionGap (const MSVehicle *const , SUMOReal vL) const |
Returns the maximum gap at which an interaction between both vehicles occurs. More... | |
int | getModelID () const |
Returns the model's name. More... | |
Methods to override by model implementation | |
virtual SUMOReal | freeSpeed (const MSVehicle *const veh, SUMOReal speed, SUMOReal seen, SUMOReal maxSpeed) const |
Computes the vehicle's safe speed without a leader. More... | |
Virtual methods with default implementation | |
virtual SUMOReal | getImperfection () const |
Get the driver's imperfection. More... | |
virtual SUMOReal | getHeadwayTime () const |
Get the driver's reaction time [s]. More... | |
Setter methods | |
virtual void | setMaxAccel (SUMOReal accel) |
Sets a new value for maximum acceleration [m/s^2]. More... | |
virtual void | setMaxDecel (SUMOReal decel) |
Sets a new value for maximum deceleration [m/s^2]. More... | |
virtual void | setImperfection (SUMOReal imperfection) |
Sets a new value for driver imperfection. More... | |
virtual void | setHeadwayTime (SUMOReal headwayTime) |
Sets a new value for driver reaction time [s]. More... | |
Protected Attributes | |
SUMOReal | myAccel |
The vehicle's maximum acceleration [m/s^2]. More... | |
SUMOReal | myDecel |
The vehicle's maximum deceleration [m/s^2]. More... | |
SUMOReal | myHeadwayTime |
The driver's desired time headway (aka reaction time tau) [s]. More... | |
const MSVehicleType * | myType |
The type to which this model definition belongs to. More... | |
Private Member Functions | |
SUMOReal | _v (const MSVehicle *const veh, const SUMOReal gap2pred, const SUMOReal mySpeed, const SUMOReal predSpeed, const SUMOReal desSpeed, const bool respectMinGap=true) const |
SUMOReal | desiredSpeed (const MSVehicle *const veh) const |
MSCFModel_IDM & | operator= (const MSCFModel_IDM &s) |
Invalidated assignment operator. More... | |
Private Attributes | |
const SUMOReal | myAdaptationFactor |
The IDMM adaptation factor beta. More... | |
const SUMOReal | myAdaptationTime |
The IDMM adaptation time tau. More... | |
const SUMOReal | myDelta |
The IDM delta exponent. More... | |
const int | myIterations |
The number of iterations in speed calculations. More... | |
const SUMOReal | myTwoSqrtAccelDecel |
A computational shortcut. More... | |
Currently fixed methods | |
virtual SUMOReal | maxNextSpeed (SUMOReal speed, const MSVehicle *const veh) const |
Returns the maximum speed given the current speed. More... | |
SUMOReal | brakeGap (const SUMOReal speed) const |
Returns the distance the vehicle needs to halt including driver's reaction time. More... | |
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. More... | |
SUMOReal | getSpeedAfterMaxDecel (SUMOReal v) const |
Returns the velocity after maximum deceleration. More... | |
static SUMOReal | brakeGap (const SUMOReal speed, const SUMOReal decel, const SUMOReal headwayTime) |
The Intelligent Driver Model (IDM) car-following model.
Definition at line 48 of file MSCFModel_IDM.h.
MSCFModel_IDM::MSCFModel_IDM | ( | const MSVehicleType * | vtype, |
SUMOReal | accel, | ||
SUMOReal | decel, | ||
SUMOReal | headwayTime, | ||
SUMOReal | delta, | ||
SUMOReal | internalStepping | ||
) |
Constructor.
[in] | accel | The maximum acceleration |
[in] | decel | The maximum deceleration |
[in] | headwayTime | the headway gap |
[in] | delta | a model constant |
[in] | internalStepping | internal time step size |
Definition at line 43 of file MSCFModel_IDM.cpp.
Referenced by duplicate().
MSCFModel_IDM::MSCFModel_IDM | ( | const MSVehicleType * | vtype, |
SUMOReal | accel, | ||
SUMOReal | decel, | ||
SUMOReal | headwayTime, | ||
SUMOReal | adaptationFactor, | ||
SUMOReal | adaptationTime, | ||
SUMOReal | internalStepping | ||
) |
Constructor.
[in] | accel | The maximum acceleration |
[in] | decel | The maximum deceleration |
[in] | headwayTime | the headway gap |
[in] | adaptationFactor | a model constant |
[in] | adaptationTime | a model constant |
[in] | internalStepping | internal time step size |
Definition at line 54 of file MSCFModel_IDM.cpp.
MSCFModel_IDM::~MSCFModel_IDM | ( | ) |
Destructor.
Definition at line 66 of file MSCFModel_IDM.cpp.
|
private |
Definition at line 111 of file MSCFModel_IDM.cpp.
References ACCEL2SPEED, MSVehicle::getCarFollowVariables(), MSVehicleType::getMinGap(), MSCFModel_IDM::VehicleVariables::levelOfService, MAX2(), MSCFModel::myAccel, myAdaptationFactor, myDelta, MSCFModel::myHeadwayTime, myIterations, myTwoSqrtAccelDecel, MSCFModel::myType, SPEED2DIST, and SUMOReal.
Referenced by followSpeed(), and stopSpeed().
Returns the distance the vehicle needs to halt including driver's reaction time.
[in] | speed | The vehicle's current speed |
Definition at line 213 of file MSCFModel.h.
References MSCFModel::myDecel, and MSCFModel::myHeadwayTime.
Referenced by MSCFModel_Krauss::_vsafe(), MSLCM_JE2013::_wantsChange(), MSLCM_LC2013::_wantsChange(), MSVehicle::addStop(), MSLane::checkFailure(), MSVehicle::checkRewindLinkLanes(), MSVehicle::executeMove(), MSVehicle::getLeader(), MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealLeader(), MSCFModel::getSecureGap(), MSLane::isInsertionSuccess(), MSVehicle::planMoveInternal(), MSLane::pWagGenericInsertion(), MSLane::pWagSimpleInsertion(), MSLCM_JE2013::saveBlockerLength(), and MSLCM_LC2013::saveBlockerLength().
|
inlinestaticinherited |
Definition at line 218 of file MSCFModel.h.
References ACCEL2SPEED, SPEED2DIST, and SUMOReal.
|
inlinevirtual |
Returns model specific values which are stored inside a vehicle and must be used with casting.
Reimplemented from MSCFModel.
Definition at line 140 of file MSCFModel_IDM.h.
References myAdaptationFactor.
Definition at line 161 of file MSCFModel_IDM.h.
References MSVehicle::getLane(), MSVehicleType::getMaxSpeed(), MSLane::getVehicleMaxSpeed(), MIN2(), and MSCFModel::myType.
Referenced by followSpeed(), interactionGap(), moveHelper(), and stopSpeed().
|
virtual |
Duplicates the car-following model.
[in] | vtype | The vehicle type this model belongs to (1:1) |
Implements MSCFModel.
Definition at line 140 of file MSCFModel_IDM.cpp.
References MSCFModel_IDM(), MSCFModel::myAccel, MSCFModel::myDecel, myDelta, MSCFModel::myHeadwayTime, myIterations, and TS.
|
virtual |
Computes the vehicle's safe speed (no dawdling)
[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 |
Implements MSCFModel.
Definition at line 81 of file MSCFModel_IDM.cpp.
References _v(), and desiredSpeed().
|
virtualinherited |
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 92 of file MSCFModel.cpp.
References ACCEL2SPEED, MAX2(), MSCFModel::myDecel, SPEED2DIST, and SUMOReal.
Referenced by MSLane::isInsertionSuccess(), and MSVehicle::planMoveInternal().
|
inlinevirtualinherited |
Get the driver's reaction time [s].
Definition at line 184 of file MSCFModel.h.
References MSCFModel::myHeadwayTime.
Referenced by MSVehicle::checkRewindLinkLanes(), MSVehicle::executeMove(), TraCIServerAPI_VehicleType::getVariable(), MSLane::maxSpeedGapInsertion(), MSVehicle::planMoveInternal(), MSLane::pWagSimpleInsertion(), and MSCalibrator::remainingVehicleCapacity().
|
inlinevirtualinherited |
Get the driver's imperfection.
Reimplemented in MSCFModel_KraussOrig1, MSCFModel_PWag2009, MSCFModel_SmartSK, and MSCFModel_Daniel1.
Definition at line 176 of file MSCFModel.h.
Referenced by TraCIServerAPI_VehicleType::getVariable().
|
inlineinherited |
Get the vehicle type's maximum acceleration [m/s^2].
Definition at line 157 of file MSCFModel.h.
References MSCFModel::myAccel.
Referenced by MSVehicle::estimateLeaveSpeed(), TraCIServerAPI_VehicleType::getVariable(), MSCFModel_KraussPS::maxNextSpeed(), MSCFModel::maxNextSpeed(), MSVehicle::planMoveInternal(), and MSMeanData_Emissions::MSLaneMeanDataValues::write().
|
inlineinherited |
Get the vehicle type's maximum deceleration [m/s^2].
Definition at line 165 of file MSCFModel.h.
References MSCFModel::myDecel.
Referenced by MSLCM_JE2013::_wantsChange(), MSLCM_LC2013::_wantsChange(), MSLaneChanger::checkChange(), MSVehicle::checkRewindLinkLanes(), MSVehicle::executeMove(), MSLane::freeInsertion(), MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealFollower(), TraCIServerAPI_VehicleType::getVariable(), MSLCM_DK2008::informBlocker(), MSLCM_JE2013::informFollower(), MSLCM_LC2013::informFollower(), MSLCM_JE2013::informLeader(), MSLCM_LC2013::informLeader(), MSLane::isInsertionSuccess(), MSLane::maxSpeedGapInsertion(), MSLink::maybeOccupied(), MSVehicle::planMoveInternal(), MSLane::pWagGenericInsertion(), MSLCM_JE2013::saveBlockerLength(), MSLCM_LC2013::saveBlockerLength(), GUIVehicle::selectBlockingFoes(), MSLCM_JE2013::slowDownForBlocked(), MSLCM_LC2013::slowDownForBlocked(), MSLCM_DK2008::wantsChangeToLeft(), and MSLCM_DK2008::wantsChangeToRight().
|
inlinevirtual |
Returns the model's name.
Implements MSCFModel.
Definition at line 126 of file MSCFModel_IDM.h.
References myAdaptationFactor, SUMO_TAG_CF_IDM, and SUMO_TAG_CF_IDMM.
|
inlineinherited |
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 232 of file MSCFModel.h.
References MSCFModel::brakeGap(), MAX2(), MIN2(), MSCFModel::myDecel, MSCFModel::myHeadwayTime, and SUMOReal.
Referenced by MSLCM_JE2013::_wantsChange(), MSLCM_LC2013::_wantsChange(), MSLaneChanger::checkChange(), MSLane::freeInsertion(), MSLane::getFollowerOnConsecutive(), MSLane::getMissingRearGap(), MSLCM_DK2008::informBlocker(), MSLCM_JE2013::informFollower(), MSLCM_LC2013::informFollower(), MSLCM_JE2013::informLeader(), MSLCM_LC2013::informLeader(), and MSLane::isInsertionSuccess().
Returns the velocity after maximum deceleration.
[in] | v | The velocity |
Definition at line 245 of file MSCFModel.h.
References ACCEL2SPEED, MAX2(), MSCFModel::myDecel, and SUMOReal.
Referenced by MSCFModel_SmartSK::followSpeed(), MSCFModel_Daniel1::moveHelper(), MSCFModel_SmartSK::moveHelper(), MSCFModel_KraussOrig1::moveHelper(), MSCFModel::moveHelper(), MSVehicle::planMoveInternal(), MSCFModel_SmartSK::stopSpeed(), and MSCFModel_Wiedemann::stopSpeed().
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 from MSCFModel.
Definition at line 97 of file MSCFModel_IDM.cpp.
References desiredSpeed(), MSVehicle::getSpeed(), MAX2(), MSCFModel::myAccel, MSCFModel::myDecel, myDelta, SPEED2DIST, and SUMOReal.
|
virtualinherited |
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 |
[in] | speed | The vehicle itself, for obtaining other values |
Reimplemented in MSCFModel_KraussPS.
Definition at line 86 of file MSCFModel.cpp.
References ACCEL2SPEED, MSCFModel::getMaxAccel(), MSVehicleType::getMaxSpeed(), MIN2(), MSCFModel::myType, and SUMOReal.
Referenced by MSVehicle::executeMove(), MSCFModel_Krauss::followSpeed(), MSCFModel_Kerner::followSpeed(), MSCFModel_Daniel1::followSpeed(), MSCFModel_KraussOrig1::followSpeed(), MSCFModel_SmartSK::followSpeed(), MSLane::getMissingRearGap(), MSCFModel::interactionGap(), MSCFModel_Daniel1::moveHelper(), MSCFModel_KraussOrig1::moveHelper(), MSCFModel_SmartSK::moveHelper(), MSCFModel::moveHelper(), MSLCM_DK2008::patchSpeed(), MSVehicle::planMoveInternal(), MSCFModel_Krauss::stopSpeed(), MSCFModel_Kerner::stopSpeed(), MSCFModel_Daniel1::stopSpeed(), MSCFModel_SmartSK::stopSpeed(), MSCFModel_KraussOrig1::stopSpeed(), and MSCFModel_Wiedemann::stopSpeed().
Applies interaction with stops and lane changing model influences.
[in] | veh | The ego vehicle |
[in] | vPos | The possible velocity |
Reimplemented from MSCFModel.
Definition at line 70 of file MSCFModel_IDM.cpp.
References desiredSpeed(), MSVehicle::getCarFollowVariables(), MSCFModel_IDM::VehicleVariables::levelOfService, MSCFModel::moveHelper(), myAdaptationFactor, myAdaptationTime, SUMOReal, and TS.
|
private |
Invalidated assignment operator.
|
inlinevirtualinherited |
Sets a new value for driver reaction time [s].
[in] | headwayTime | The new driver reaction time (in s) |
Reimplemented in MSCFModel_KraussOrig1, MSCFModel_SmartSK, and MSCFModel_Daniel1.
Definition at line 281 of file MSCFModel.h.
References MSCFModel::myHeadwayTime.
Referenced by TraCIServerAPI_VehicleType::setVariable().
|
inlinevirtualinherited |
Sets a new value for driver imperfection.
[in] | accel | The new driver imperfection |
Reimplemented in MSCFModel_KraussOrig1, MSCFModel_SmartSK, and MSCFModel_Daniel1.
Definition at line 273 of file MSCFModel.h.
References UNUSED_PARAMETER.
Referenced by TraCIServerAPI_VehicleType::setVariable().
|
inlinevirtualinherited |
Sets a new value for maximum acceleration [m/s^2].
[in] | accel | The new acceleration in m/s^2 |
Definition at line 257 of file MSCFModel.h.
References MSCFModel::myAccel.
Referenced by TraCIServerAPI_VehicleType::setVariable().
|
inlinevirtualinherited |
Sets a new value for maximum deceleration [m/s^2].
[in] | accel | The new deceleration in m/s^2 |
Reimplemented in MSCFModel_KraussOrig1, MSCFModel_SmartSK, and MSCFModel_Daniel1.
Definition at line 265 of file MSCFModel.h.
References MSCFModel::myDecel.
Referenced by TraCIServerAPI_VehicleType::setVariable().
|
virtual |
Computes the vehicle's safe speed for approaching a non-moving obstacle (no dawdling)
[in] | veh | The vehicle (EGO) |
[in] | gap2pred | The (netto) distance to the the obstacle |
Implements MSCFModel.
Definition at line 87 of file MSCFModel_IDM.cpp.
References _v(), and desiredSpeed().
|
protectedinherited |
The vehicle's maximum acceleration [m/s^2].
Definition at line 292 of file MSCFModel.h.
Referenced by MSCFModel_Kerner::_v(), MSCFModel_Wiedemann::_v(), _v(), MSCFModel_Krauss::dawdle(), MSCFModel_Daniel1::dawdle(), MSCFModel_SmartSK::dawdle(), MSCFModel_KraussOrig1::dawdle(), MSCFModel_KraussPS::duplicate(), MSCFModel_Krauss::duplicate(), MSCFModel_Kerner::duplicate(), MSCFModel_PWag2009::duplicate(), MSCFModel_Wiedemann::duplicate(), duplicate(), MSCFModel_Daniel1::duplicate(), MSCFModel_SmartSK::duplicate(), MSCFModel_KraussOrig1::duplicate(), MSCFModel_PWag2009::followSpeed(), MSCFModel_Wiedemann::fullspeed(), MSCFModel::getMaxAccel(), interactionGap(), MSCFModel_SmartSK::MSCFModel_SmartSK(), MSCFModel::setMaxAccel(), and MSCFModel_PWag2009::stopSpeed().
|
private |
The IDMM adaptation factor beta.
Definition at line 171 of file MSCFModel_IDM.h.
Referenced by _v(), createVehicleVariables(), getModelID(), and moveHelper().
|
private |
The IDMM adaptation time tau.
Definition at line 174 of file MSCFModel_IDM.h.
Referenced by moveHelper().
|
protectedinherited |
The vehicle's maximum deceleration [m/s^2].
Definition at line 295 of file MSCFModel.h.
Referenced by MSCFModel_Kerner::_v(), MSCFModel_Wiedemann::_v(), MSCFModel_Krauss::_vsafe(), MSCFModel_Daniel1::_vsafe(), MSCFModel_KraussOrig1::_vsafe(), MSCFModel_SmartSK::_vsafe(), MSCFModel_Krauss::_vstop(), MSCFModel::brakeGap(), MSCFModel_KraussPS::duplicate(), MSCFModel_Krauss::duplicate(), MSCFModel_Kerner::duplicate(), MSCFModel_PWag2009::duplicate(), MSCFModel_Wiedemann::duplicate(), duplicate(), MSCFModel_Daniel1::duplicate(), MSCFModel_KraussOrig1::duplicate(), MSCFModel_SmartSK::duplicate(), MSCFModel_Wiedemann::emergency(), MSCFModel_PWag2009::followSpeed(), MSCFModel::freeSpeed(), MSCFModel::getMaxDecel(), MSCFModel::getSecureGap(), MSCFModel::getSpeedAfterMaxDecel(), interactionGap(), MSCFModel::interactionGap(), MSCFModel_Wiedemann::krauss_vsafe(), MSCFModel_SmartSK::MSCFModel_SmartSK(), MSCFModel_Daniel1::setHeadwayTime(), MSCFModel_SmartSK::setHeadwayTime(), MSCFModel_KraussOrig1::setHeadwayTime(), MSCFModel_Daniel1::setMaxDecel(), MSCFModel_KraussOrig1::setMaxDecel(), MSCFModel_SmartSK::setMaxDecel(), MSCFModel::setMaxDecel(), and MSCFModel_PWag2009::stopSpeed().
|
private |
The IDM delta exponent.
Definition at line 168 of file MSCFModel_IDM.h.
Referenced by _v(), duplicate(), and interactionGap().
|
protectedinherited |
The driver's desired time headway (aka reaction time tau) [s].
Definition at line 298 of file MSCFModel.h.
Referenced by _v(), MSCFModel_Krauss::_vstop(), MSCFModel::brakeGap(), MSCFModel_SmartSK::createVehicleVariables(), MSCFModel_KraussPS::duplicate(), MSCFModel_Krauss::duplicate(), MSCFModel_Kerner::duplicate(), MSCFModel_PWag2009::duplicate(), duplicate(), MSCFModel_Daniel1::duplicate(), MSCFModel_SmartSK::duplicate(), MSCFModel_KraussOrig1::duplicate(), MSCFModel_PWag2009::followSpeed(), MSCFModel::getHeadwayTime(), MSCFModel::getSecureGap(), MSCFModel::interactionGap(), MSCFModel_Wiedemann::krauss_vsafe(), MSCFModel_Daniel1::setHeadwayTime(), MSCFModel_SmartSK::setHeadwayTime(), MSCFModel_KraussOrig1::setHeadwayTime(), MSCFModel::setHeadwayTime(), MSCFModel_Daniel1::setMaxDecel(), MSCFModel_KraussOrig1::setMaxDecel(), MSCFModel_SmartSK::setMaxDecel(), MSCFModel_PWag2009::stopSpeed(), and MSCFModel_SmartSK::updateMyHeadway().
|
private |
The number of iterations in speed calculations.
Definition at line 177 of file MSCFModel_IDM.h.
Referenced by _v(), and duplicate().
|
private |
|
protectedinherited |
The type to which this model definition belongs to.
Definition at line 289 of file MSCFModel.h.
Referenced by MSCFModel_Wiedemann::_v(), _v(), desiredSpeed(), MSCFModel_KraussPS::maxNextSpeed(), and MSCFModel::maxNextSpeed().