56 const std::pair<MSVehicle*, double>& leader,
57 const std::pair<MSVehicle*, double>& follower,
58 const std::pair<MSVehicle*, double>& neighLead,
59 const std::pair<MSVehicle*, double>& neighFollow,
61 const std::vector<MSVehicle::LaneQ>& preb,
75 virtual double patchSpeed(
const double min,
const double wanted,
const double max,
89 const std::pair<MSVehicle*, double>& leader,
90 const std::pair<MSVehicle*, double>& neighLead,
91 const std::pair<MSVehicle*, double>& neighFollow,
93 const std::vector<MSVehicle::LaneQ>& preb,
102 const std::pair<MSVehicle*, double>& leader,
103 const std::pair<MSVehicle*, double>& neighLead,
104 const std::pair<MSVehicle*, double>& neighFollow,
106 const std::vector<MSVehicle::LaneQ>& preb,
111 int& blocked,
int dir,
112 const std::pair<MSVehicle*, double>& neighLead,
113 const std::pair<MSVehicle*, double>& neighFollow);
128 return dist / (abs(laneOffset)) < lookForwardDist;
131 return dist / abs(laneOffset) > lookForwardDist;
134 typedef std::pair<double, int>
Info;
@ LCA_AMBLOCKINGFOLLOWER_DONTBRAKE
A class responsible for exchanging messages between cars involved in lane-change interaction.
Interface for lane-change models.
int myOwnState
The current state of the vehicle.
The car-following model abstraction.
A lane change model developed by D. Krajzewicz between 2004 and 2010.
LaneChangeModel getModelID() const
Returns the model's id.
std::vector< double > myVSafes
std::pair< double, int > Info
bool amBlockingFollowerPlusNB()
virtual int wantsChangeToRight(MSAbstractLaneChangeModel::MSLCMessager &msgPass, int blocked, const std::pair< MSVehicle *, double > &leader, const std::pair< MSVehicle *, double > &neighLead, const std::pair< MSVehicle *, double > &neighFollow, const MSLane &neighLane, const std::vector< MSVehicle::LaneQ > &preb, MSVehicle **lastBlocked, MSVehicle **firstBlocked)
Called to examine whether the vehicle wants to change to right This method gets the information about...
bool amBlockingFollowerNB()
double myChangeProbability
bool amBlockingFollower()
int wantsChange(int laneOffset, MSAbstractLaneChangeModel::MSLCMessager &msgPass, int blocked, const std::pair< MSVehicle *, double > &leader, const std::pair< MSVehicle *, double > &follower, const std::pair< MSVehicle *, double > &neighLead, const std::pair< MSVehicle *, double > &neighFollow, const MSLane &neighLane, const std::vector< MSVehicle::LaneQ > &preb, MSVehicle **lastBlocked, MSVehicle **firstBlocked)
Called to examine whether the vehicle wants to change using the given laneOffset. This method gets th...
void informBlocker(MSAbstractLaneChangeModel::MSLCMessager &msgPass, int &blocked, int dir, const std::pair< MSVehicle *, double > &neighLead, const std::pair< MSVehicle *, double > &neighFollow)
bool currentDistAllows(double dist, int laneOffset, double lookForwardDist)
double myLeadingBlockerLength
virtual void * inform(void *info, MSVehicle *sender)
virtual void prepareStep()
virtual int wantsChangeToLeft(MSAbstractLaneChangeModel::MSLCMessager &msgPass, int blocked, const std::pair< MSVehicle *, double > &leader, const std::pair< MSVehicle *, double > &neighLead, const std::pair< MSVehicle *, double > &neighFollow, const MSLane &neighLane, const std::vector< MSVehicle::LaneQ > &preb, MSVehicle **lastBlocked, MSVehicle **firstBlocked)
Called to examine whether the vehicle wants to change to left This method gets the information about ...
virtual double patchSpeed(const double min, const double wanted, const double max, const MSCFModel &cfModel)
Called to adapt the speed in order to allow a lane change.
bool currentDistDisallows(double dist, int laneOffset, double lookForwardDist)
Representation of a lane in the micro simulation.
Representation of a vehicle in the micro simulation.