53 myAX(vtype->getLength() + 1. + 2. * mySecurity),
54 myCX(25. *(1. + mySecurity + myEstimation)),
55 myMinAccel(0.2 * myAccel) {
73 return _v(veh, predSpeed, gap2pred);
104 const double bx = (1 + 7 *
mySecurity) * sqrt(speed);
116 const double dv = v - predSpeed;
118 const double bx = (1 + 7 *
mySecurity) * sqrt(v);
119 const double abx =
myAX + bx;
121 const double sdx =
myAX + ex * bx;
122 const double sdv_root = (dx -
myAX) /
myCX;
123 const double sdv = sdv_root * sdv_root;
124 const double cldv = sdv * ex * ex;
130 }
else if (dx < sdx) {
133 }
else if (dv > opdv) {
139 if (dv > sdv && dx <
D_MAX) {
150 std::cout <<
SIMTIME <<
" Wiedemann::_v veh=" << veh->
getID()
151 <<
" predSpeed=" << predSpeed <<
" gap=" << gap
152 <<
" dv=" << dv <<
" dx=" << dx <<
" ax=" <<
myAX <<
" bx=" << bx <<
" abx=" << abx
153 <<
" sdx=" << sdx <<
" sdv=" << sdv <<
" cldv=" << cldv <<
" opdv=" << opdv
154 <<
" accel=" << accel <<
" vNew=" << vNew <<
"\n";
164 double bmax = 0.2 + 0.8 *
myAccel * (7 - sqrt(v));
166 double accel = dx <= 2 * abx ?
MIN2(
myMinAccel, bmax * (dx - abx) / abx) : bmax;
184 return 0.5 * dv * dv / (abx - dx);
193 double accel = 0.5 * dv * dv / (
myAX - dx);
Representation of a vehicle in the micro simulation.
MSCFModel::VehicleVariables * getCarFollowVariables() const
Returns the vehicle's car following model variables.
const MSVehicleType * myType
The type to which this model definition belongs to.
double finalizeSpeed(MSVehicle *const veh, double vPos) const
Applies interaction with stops and lane changing model influences.
const double myCX
perception threshold modifier
std::mt19937 * getRNG() const
const double mySecurity
The driver's security parameter // also 'ZF1'.
The car-following model abstraction.
double getSecureGap(const double speed, const double leaderSpeed, const double leaderMaxDecel) const
Returns the minimum gap to reserve if the leader is braking at maximum (>=0)
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) ...
virtual double maxNextSpeed(double speed, const MSVehicle *const veh) const
Returns the maximum speed given the current speed.
double myAccel
The vehicle's maximum acceleration [m/s^2].
double following(double sign) const
#define UNUSED_PARAMETER(x)
virtual double finalizeSpeed(MSVehicle *const veh, double vPos) const
Applies interaction with stops and lane changing model influences. Called at most once per simulation...
The car-following model and parameter.
virtual bool isSelected() const
whether this vehicle is selected in the GUI
double getMaxSpeed() const
Returns the maximum speed.
double interactionGap(const MSVehicle *const, double vL) const
Returns the maximum gap at which an interaction between both vehicles occurs.
static double randNorm(double mean, double variance, std::mt19937 *rng=0)
Access to a random number from a normal distribution.
double _v(const MSVehicle *veh, double predSpeed, double gap) const
double getActionStepLengthSecs() const
Returns the vehicle's action step length in secs, i.e. the interval between two action points...
double followSpeed(const MSVehicle *const veh, double speed, double gap2pred, double predSpeed, double predMaxDecel, const MSVehicle *const pred=0) const
Computes the vehicle's safe speed (no dawdling)
virtual double getSecureGap(const double speed, const double leaderSpeed, const double leaderMaxDecel) const
Returns the minimum gap to reserve if the leader is braking at maximum (>=0)
static const double D_MAX
free-flow distance in m
double emergency(double dv, double dx) const
~MSCFModel_Wiedemann()
Destructor.
double maximumSafeStopSpeed(double gap, double currentSpeed, bool onInsertion=false, double headway=-1) const
Returns the maximum next velocity for stopping within gap.
double accelSign
state variable for remembering the drift direction
const double myMinAccel
The vehicle's minimum acceleration [m/s^2] // also b_null.
MSCFModel * duplicate(const MSVehicleType *vtype) const
Duplicates the car-following model.
double approaching(double dv, double dx, double abx) const
double myEmergencyDecel
The vehicle's maximum emergency deceleration [m/s^2].
double getLength() const
Get vehicle's length [m].
MSCFModel_Wiedemann(const MSVehicleType *vtype)
Constructor.
const double myEstimation
The driver's estimation parameter // also 'ZF2'.
double getSpeed() const
Returns the vehicle's current speed.
const double myAX
the minimum front-bumper to front-bumper distance when standing
const std::string & getID() const
Returns the name of the vehicle.
double fullspeed(double v, double vpref, double dx, double bx) const