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
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 :
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。
再去跑leach的测试程序./test
发现最后的能量约是199.665J(当然后面还有很多位,省略了)。
这次结果是保持在200J以内了,但还需要再模拟几次,看看是否每次都行。
方法尚未测试,感谢原作者~
补充一句,我的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以内了,但还需要再模拟几次,看看是否每次都行。
相关文章推荐
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- Tomcat运行状态下 修改Velocity嵌套的页面时报 java.lang.OutOfMemoryError: PermGen space及其解决方法
- 在Android系统中修改Android.mk使其同时编译rgb2565和rgb2888(向out/host/linux-x86/bin/下新增加一个工具命令)
- 2440BSP 支持大于4G SD卡的修改方法
- 在小程序中修改上一个页面里data中的数据调用上一个页面的方法
- 又一个不错的FCKeditor 2.2的安装、修改和调用方法
- 编写一个Cirle类,包括构造方法,求圆的面积和周长,如果圆的半径小于0则抛出异常,让用户必须处理,半径必须大于0才可以
- 向记事本里写入数据、一个修改密码的判断方法(用记录本处理密码的方式)
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- MySQL PXC构建一个新节点只需IST传输的方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 删除某一个节点k的方法(1320 P103)
- 批量修改MS sql中一个字段值的部分内容的方法
- 给定一个链表,一次颠倒链表k的节点并返回其修改列表。如果节点的数量不是k的倍数,那末最后的剩余节点应该保持原样。
- oracle sga修改以及限制某一个用户的连接数的方法【自己整理】
- 将一个表中个某一列修改为自动增长的方法
- java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
- java虚拟机修改一个指针指向的位置,使这种情况线程安全的方法
- GIT 版本控制软件的常用命令记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标和使用方法
- ztree节点名称和x-editable结合,修改一个字段的名称