56 double accel,
double decel,
double emergencyDecel,
double apparentDecel,
57 double security,
double estimation) :
58 MSCFModel(vtype, accel, decel, emergencyDecel, apparentDecel, 1.0),
60 myEstimation(estimation),
61 myAX(vtype->getLength() + 1. + 2. * security),
62 myCX(25. *(1. + security + estimation)),
63 myMinAccel(0.2 * myAccel) {
81 return _v(veh, predSpeed, gap2pred);
116 const double dv = v - predSpeed;
119 const double sdx =
myAX + ex * (bx -
myAX);
120 const double sdv_root = (dx -
myAX) /
myCX;
121 const double sdv = sdv_root * sdv_root;
122 const double cldv = sdv * ex * ex;
128 }
else if (dx < sdx) {
131 }
else if (dv > opdv) {
137 if (dv > sdv && dx <
D_MAX) {
152 double bmax = 0.2 + 0.8 *
myAccel * (7 - sqrt(v));
154 double accel = dx <= 2 * bx ?
MIN2(
myMinAccel, bmax * (dx - bx) / bx) : bmax;
172 return 0.5 * dv * dv / (bx - dx);
201 if (predSpeed == 0 && gap < 0.01) {
206 const int predSteps = int(predSpeed / speedReduction);
207 const double leaderContrib = 2. *
myDecel * (gap +
SPEED2DIST(predSteps * predSpeed - speedReduction * predSteps * (predSteps + 1) / 2));
208 return (
double)(-tauDecel + sqrt(tauDecel * tauDecel + leaderContrib));
Representation of a vehicle in the micro simulation.
const MSVehicleType * myType
The type to which this model definition belongs to.
virtual double getSpeedAfterMaxDecel(double v) const
Returns the velocity after maximum deceleration.
double getMaxSpeed() const
Returns the maximum speed.
double myApparentDecel
The vehicle's deceleration as expected by surrounding traffic [m/s^2].
virtual double moveHelper(MSVehicle *const veh, double vPos) const
Applies interaction with stops and lane changing model influences.
const double myCX
perception threshold modifier
const double mySecurity
The driver's security parameter // also 'ZF1'.
The car-following model abstraction.
double krauss_vsafe(double gap, double predSpeed) const
vsafe from krauss since Wiedemann is deficient at approaching
double myAccel
The vehicle's maximum acceleration [m/s^2].
double interactionGap(const MSVehicle *const , double vL) const
Returns the maximum gap at which an interaction between both vehicles occurs.
double _v(const MSVehicle *veh, double predSpeed, double gap) const
#define UNUSED_PARAMETER(x)
double followSpeed(const MSVehicle *const veh, double speed, double gap2pred, double predSpeed, double predMaxDecel) const
Computes the vehicle's safe speed (no dawdling)
The car-following model and parameter.
static double randNorm(double mean, double variance, std::mt19937 *rng=0)
Access to a random number from a normal distribution.
static const double D_MAX
free-flow distance in m
double fullspeed(double v, double vpref, double dx, double bx) const
~MSCFModel_Wiedemann()
Destructor.
double accelSign
state variable for remembering the drift direction
double following(double sign) const
double myDecel
The vehicle's maximum deceleration [m/s^2].
MSCFModel::VehicleVariables * getCarFollowVariables() const
Returns the vehicle's car following model variables.
double getLength() const
Get vehicle's length [m].
const double myMinAccel
The vehicle's minimum acceleration [m/s^2].
virtual double maxNextSpeed(double speed, const MSVehicle *const veh) const
Returns the maximum speed given the current speed.
double moveHelper(MSVehicle *const veh, double vPos) const
Applies interaction with stops and lane changing model influences.
double myEmergencyDecel
The vehicle's maximum emergency deceleration [m/s^2].
double emergency(double dv, double dx) const
double approaching(double dv, double dx, double bx) const
MSCFModel * duplicate(const MSVehicleType *vtype) const
Duplicates the car-following model.
double stopSpeed(const MSVehicle *const veh, const double speed, double gap) const
Computes the vehicle's safe speed for approaching a non-moving obstacle (no dawdling) ...
const double myEstimation
The driver's estimation parameter // also 'ZF2'.
double myHeadwayTime
The driver's desired time headway (aka reaction time tau) [s].
const double myAX
front-bumper to front-bumper distance
MSCFModel_Wiedemann(const MSVehicleType *vtype, double accel, double decel, double emergencyDecel, double apparentDecel, double security, double estimation)
Constructor.
double getSpeed() const
Returns the vehicle's current speed.