leach.out中节点总消耗能量大于200J的一个修改方法(摘)

对于leach中节点死亡后继续发消息,并且消耗能量的问题,在网上找了一些方法,暂时记录于此,方便查阅。

方法尚未测试,感谢原作者~

补充一句,我的ns是2.35.

原出处http://www.linuxquestions.org/questions/linux-newbie-8/running-leach-on-ns2-34-a-860250/

 

1. deepa_2111提到:

In \mac\Wireless-Phy.cc

if (energy_)
{
if(alive_ != 0) // Deepa
{ //Deepa
if (energy_->remove(pktEnergy(Pt_, PXcvr_, ch->size())) != 0)
{
printf("alive = 0\n");
alive_ = 0;
}
} // Deepa
}

i.e., add the <code> if(alive_ != 0) </code> wherever the remove energy function is called, 

就是说把后面有// Deepa注释的代码加进来,不论后面的 if (energy_->remove……那一段代码在什么位置。



and in mit\rca\energy.cc :

int EnergyResource::remove(double amount)
{
double new_level = energy_level_ - amount;

if(new_level >= 0 )
{
energy_level_ = new_level;
expended_ += amount;
} // Deepa

check if the new_level is greater or equal to 0. if it is not, energy can‘t be removed

添了if一句后,if一句是用来检查new_level的值是否大于等于0,如果不是,这个能量值就不能被移除。

 

  今个测试了一下,修改了这两段之后。直接./test,发现还是不行,最后还是高。然后重新编译了下ns。

$make clean
$make

再去跑leach的测试程序./test

发现最后的能量约是199.665J(当然后面还有很多位,省略了)。

这次结果是保持在200J以内了,但还需要再模拟几次,看看是否每次都行。


转载于:https://www.cnblogs.com/reaver21/archive/2012/02/14/2351336.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值