Steady-state random waypoint mobility model. More...
#include "steady-state-random-waypoint-mobility-model.h"
Public Member Functions | |
SteadyStateRandomWaypointMobilityModel () | |
![]() | |
MobilityModel () | |
virtual | ~MobilityModel ()=0 |
int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
double | GetDistanceFrom (Ptr< const MobilityModel > position) const |
Vector | GetPosition (void) const |
double | GetRelativeSpeed (Ptr< const MobilityModel > other) const |
Vector | GetVelocity (void) const |
void | SetPosition (const Vector &position) |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized (void) const |
Check if the object has been initialized. More... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Register this type with the TypeId system. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type with the TypeId system. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Protected Member Functions | |
virtual void | DoInitialize (void) |
Initialize() implementation. More... | |
![]() | |
void | NotifyCourseChange (void) const |
Must be invoked by subclasses when the course of the position changes to notify course change listeners. More... | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoDispose (void) |
Destructor implementation. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
void | BeginWalk (void) |
Start a motion period and schedule the ending of the motion. More... | |
virtual int64_t | DoAssignStreams (int64_t) |
The default implementation does nothing but return the passed-in parameter. More... | |
virtual Vector | DoGetPosition (void) const |
virtual Vector | DoGetVelocity (void) const |
void | DoInitializePrivate (void) |
Configure random variables based on attributes; calculate the steady state probability that node is initially paused; schedule either end of pause time or initial motion of the node. More... | |
virtual void | DoSetPosition (const Vector &position) |
void | Start (void) |
Start a pause period and schedule the ending of the pause. More... | |
void | SteadyStateBeginWalk (const Vector &destination) |
Use provided destination to calculate travel delay, and schedule a Start() event at that time. More... | |
Private Attributes | |
bool | alreadyStarted |
flag for starting state More... | |
EventId | m_event |
current event ID More... | |
ConstantVelocityHelper | m_helper |
helper for velocity computations More... | |
double | m_maxPause |
maximum pause value (s) More... | |
double | m_maxSpeed |
maximum speed value (m/s) More... | |
double | m_maxX |
maximum x value of traveling region (m) More... | |
double | m_maxY |
maximum y value of traveling region (m) More... | |
double | m_minPause |
minimum pause value (s) More... | |
double | m_minSpeed |
minimum speed value (m/s) More... | |
double | m_minX |
minimum x value of traveling region (m) More... | |
double | m_minY |
minimum y value of traveling region (m) More... | |
Ptr< UniformRandomVariable > | m_pause |
random variable for pause values More... | |
Ptr< RandomBoxPositionAllocator > | m_position |
position allocator More... | |
Ptr< UniformRandomVariable > | m_speed |
random variable for speed values More... | |
Ptr< UniformRandomVariable > | m_u_r |
rv used in step 5 of algorithm More... | |
Ptr< UniformRandomVariable > | m_x |
rv used for position allocator More... | |
Ptr< UniformRandomVariable > | m_x1_r |
rv used in rejection sampling phase More... | |
Ptr< UniformRandomVariable > | m_x2_r |
rv used in rejection sampling phase More... | |
Ptr< UniformRandomVariable > | m_y |
rv used for position allocator More... | |
Ptr< UniformRandomVariable > | m_y1_r |
rv used in rejection sampling phase More... | |
Ptr< UniformRandomVariable > | m_y2_r |
rv used in rejection sampling phase More... | |
double | m_z |
z value of traveling region More... | |
Additional Inherited Members | |
![]() | |
typedef void(* | TracedCallback) (Ptr< const MobilityModel > model) |
TracedCallback signature. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Steady-state random waypoint mobility model.
This model based on random waypoint mobility (RWM) model for case when speed, pause and position are uniformly distributed random variables. The difference is that the initial values of this parameters are not from uniform distribution but from stationary distribution of RWM model. The implementation of this model is 2D-specific and with nonzero nodes speeds. In the 3D ns-3 coordinate system, the momement occurs on the plane, where
is a constant which can be configured using the Z attribute.
Based on NS-2 implementation by Toilers Research Group – Colorado School of Mines (http://toilers.mines.edu). The papers related to this code are: W. Navidi and T. Camp, Stationary Distributions for the Random Waypoint Mobility Model, IEEE Transactions on Mobile Computing, vol. 3, no. 1, pp. 99-108, January-March 2004. W. Navidi, T. Camp, and N. Bauer, Improving the Accuracy of Random Waypoint Simulations Through Steady-State Initialization, Proceedings of the 15th International Conference on Modeling and Simulation (MS '04), pp. 319-326, March 2004.
ns3::SteadyStateRandomWaypointMobilityModel is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Size of this type is 304 bytes (on a 64-bit architecture).
Definition at line 55 of file steady-state-random-waypoint-mobility-model.h.
ns3::SteadyStateRandomWaypointMobilityModel::SteadyStateRandomWaypointMobilityModel | ( | ) |
|
private |
Start a motion period and schedule the ending of the motion.
Definition at line 233 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::CalculateDistance(), ns3::ConstantVelocityHelper::GetCurrentPosition(), ns3::UniformRandomVariable::GetValue(), m_event, m_helper, m_maxX, m_maxY, m_minX, m_minY, m_position, m_speed, ns3::MobilityModel::NotifyCourseChange(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::ConstantVelocityHelper::SetVelocity(), Start(), ns3::ConstantVelocityHelper::Unpause(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoInitializePrivate(), and Start().
|
privatevirtual |
The default implementation does nothing but return the passed-in parameter.
Subclasses using random variables are expected to override this.
start | starting stream index |
Reimplemented from ns3::MobilityModel.
Definition at line 286 of file steady-state-random-waypoint-mobility-model.cc.
References m_pause, m_position, m_speed, m_u_r, m_x, m_x1_r, m_x2_r, m_y, m_y1_r, m_y2_r, and ns3::RandomVariableStream::SetStream().
|
privatevirtual |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 265 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetCurrentPosition(), m_helper, and ns3::ConstantVelocityHelper::Update().
|
privatevirtual |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 281 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetVelocity(), and m_helper.
|
protectedvirtual |
Initialize() implementation.
This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.
Reimplemented from ns3::Object.
Definition at line 101 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::Object::DoInitialize(), and DoInitializePrivate().
|
private |
Configure random variables based on attributes; calculate the steady state probability that node is initially paused; schedule either end of pause time or initial motion of the node.
Definition at line 108 of file steady-state-random-waypoint-mobility-model.cc.
References alreadyStarted, BeginWalk(), ns3::UniformRandomVariable::GetValue(), ns3::EventId::IsRunning(), m_event, m_helper, m_maxPause, m_maxSpeed, m_maxX, m_maxY, m_minPause, m_minSpeed, m_minX, m_minY, m_pause, m_position, m_speed, m_u_r, m_x, m_x1_r, m_x2_r, m_y, m_y1_r, m_y2_r, m_z, ns3::MobilityModel::NotifyCourseChange(), NS_ASSERT, ns3::ConstantVelocityHelper::Pause(), ns3::Simulator::Schedule(), ns3::Simulator::ScheduleNow(), ns3::Seconds(), ns3::ObjectBase::SetAttribute(), ns3::ConstantVelocityHelper::SetPosition(), SteadyStateBeginWalk(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoInitialize().
|
privatevirtual |
position | the position to set. |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 271 of file steady-state-random-waypoint-mobility-model.cc.
References alreadyStarted, m_event, m_helper, ns3::Simulator::Remove(), ns3::Simulator::ScheduleNow(), ns3::ConstantVelocityHelper::SetPosition(), and Start().
|
static |
Register this type with the TypeId system.
Definition at line 31 of file steady-state-random-waypoint-mobility-model.cc.
References m_maxPause, m_maxSpeed, m_maxX, m_maxY, m_minPause, m_minSpeed, m_minX, m_minY, m_z, ns3::MakeDoubleAccessor(), and ns3::TypeId::SetParent().
|
private |
Start a pause period and schedule the ending of the pause.
Definition at line 255 of file steady-state-random-waypoint-mobility-model.cc.
References BeginWalk(), ns3::UniformRandomVariable::GetValue(), m_event, m_helper, m_pause, ns3::MobilityModel::NotifyCourseChange(), ns3::ConstantVelocityHelper::Pause(), ns3::Simulator::Schedule(), ns3::Seconds(), and ns3::ConstantVelocityHelper::Update().
Referenced by BeginWalk(), DoSetPosition(), and SteadyStateBeginWalk().
|
private |
Use provided destination to calculate travel delay, and schedule a Start() event at that time.
destination | the destination to move to |
Definition at line 209 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::CalculateDistance(), ns3::ConstantVelocityHelper::GetCurrentPosition(), ns3::UniformRandomVariable::GetValue(), m_event, m_helper, m_maxSpeed, m_maxX, m_maxY, m_minSpeed, m_minX, m_minY, m_u_r, ns3::MobilityModel::NotifyCourseChange(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::ConstantVelocityHelper::SetVelocity(), Start(), ns3::ConstantVelocityHelper::Unpause(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoInitializePrivate().
|
private |
flag for starting state
Definition at line 106 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and DoSetPosition().
|
private |
current event ID
Definition at line 105 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), DoSetPosition(), Start(), and SteadyStateBeginWalk().
|
private |
helper for velocity computations
Definition at line 92 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoGetPosition(), DoGetVelocity(), DoInitializePrivate(), DoSetPosition(), Start(), and SteadyStateBeginWalk().
|
private |
maximum pause value (s)
Definition at line 103 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and GetTypeId().
|
private |
maximum speed value (m/s)
Definition at line 93 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
maximum x value of traveling region (m)
Definition at line 97 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
maximum y value of traveling region (m)
Definition at line 99 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
minimum pause value (s)
Definition at line 102 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and GetTypeId().
|
private |
minimum speed value (m/s)
Definition at line 94 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
minimum x value of traveling region (m)
Definition at line 96 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
minimum y value of traveling region (m)
Definition at line 98 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
random variable for pause values
Definition at line 104 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), Start(), and SteadyStateRandomWaypointMobilityModel().
|
private |
position allocator
Definition at line 101 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoAssignStreams(), and DoInitializePrivate().
|
private |
random variable for speed values
Definition at line 95 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used in step 5 of algorithm
Definition at line 111 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), SteadyStateBeginWalk(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used for position allocator
Definition at line 112 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used in rejection sampling phase
Definition at line 107 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used in rejection sampling phase
Definition at line 109 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used for position allocator
Definition at line 113 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used in rejection sampling phase
Definition at line 108 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
rv used in rejection sampling phase
Definition at line 110 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoAssignStreams(), DoInitializePrivate(), and SteadyStateRandomWaypointMobilityModel().
|
private |
z value of traveling region
Definition at line 100 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and GetTypeId().