NS3节点分布和移动设置方法

节点分布和移动:

在NS3仿真设计中节点分布和移动通过调用“mobility-module.h”头文件实现

一.调e用MobinlityHe'jlper 生成mobility对象

MobilityHelper mobility

二.用对象函数为节点分配初始化位置

  1. mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
  2.                        "MinX", DoubleValue (0.0),
  3.                                  "MinY", DoubleValue (0.0),
  4.                                  "DeltaX", DoubleValue (5.0),
  5.                                  "DeltaY", DoubleValue (10.0),
  6.                                  "GridWidth", UintegerValue (3),
  7.                                 "LayoutType" ,StringValue ("RowFirst"));

ns3::GridPositionAllocator 为NS3自带的位置初始化模型,MinX, MinY为起始位置,DeltaX,DeltaY为节点之间的距离,GridWidth为每行节点数目;LayoutType为布局方式。

三.节点位置初始化后,设定节点之后的运动状态

RandomWalk2dMobilityModel,为NS3自带的2d运动模型,bounds属性为设置节点移动的边界

  1. mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
  2.                              "Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)));

  另外我们也可以设置节点静止:

   mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");

四.将移动模型绑定在到节点对象上

  mobility.Install (Nodes);

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ns-3中提供了三种节点移动模型:静态模型、随机游走模型和移动模型(Mobility Model)。其中移动模型又分为以下几种: 1. Constant Position Model:恒定位置模型,节点一直保持不动。 2. Random Walk Model:随机游走模型,节点在平面上以随机步长和方向运动。 3. Gauss-Markov Model:高斯-马尔科夫模型,节点在平面上以高斯分布的随机步长和方向运动。 4. Random Direction Model:随机方向模型,节点在平面上以随机方向和常量速度移动。 5. Constant Velocity Model:恒定速度模型,节点以恒定速度沿着一个随机方向移动。 6. Random Waypoint Model:随机航点模型,节点随机选择目标点并以一定速度移动。 7. Random Walk 2D Model:二维随机游走模型,节点在平面上以随机步长和方向运动。 可以通过创建相应的移动模型对象,并将其与节点关联,来实现节点移动。例如,使用Random Walk 2D Model来实现节点移动,可以按照以下步骤进行: 1. 创建一个移动模型对象: ```c++ Ptr<RandomWalk2dMobilityModel> model = CreateObject<RandomWalk2dMobilityModel> (); ``` 2. 设置节点的初始位置和速度: ```c++ model->SetPosition (Vector3D (0, 0, 0)); model->SetVelocity (Vector (5, 0, 0)); ``` 3. 将移动模型对象与节点关联: ```c++ node->AggregateObject (model); ``` 在仿真过程中,节点将按照指定的移动模型进行移动。可以使用仿真器的Schedule方法来控制节点移动时间。例如,以下代码将节点在10秒后开始移动,并在20秒后停止移动: ```c++ Simulator::Schedule (Seconds (10.0), &RandomWalk2dMobilityModel::Start, model); Simulator::Schedule (Seconds (20.0), &RandomWalk2dMobilityModel::Stop, model); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值