您的位置:首页 > 其它

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

2012-02-14 17:13 183 查看
对于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以内了,但还需要再模拟几次,看看是否每次都行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐