主要是为了自己以后查找方便,先贴出源地址:http://blog.csdn.net/bennyfun79/article/details/5828192
转载原文:
ns2中的能量模型主要针对无线网络,如Ad-hoc及WSN。其能量模型的实现在~ns/mobility/energy-model.h/cc,同时在~/ns/mac/wireless-phy.h/cc中进行引用,用来实现能量的控制,如发送能量、接收能量。
1. energy-model.h/cc的修改及实现
这里主要注意,当我们希望扩展自己的能量模型时,需要继承或者修改哪些地方。通过查看源代码,发现以下函数是虚拟的,其作用也比较明显,当我们希望利用自己的能量消费模型时,可以对其进行相应的修改继承:
virtual void DecrTxEnergy(double txtime, double P_tx);
virtual void DecrRcvEnergy(double rcvtime, double P_rcv);
virtual void DecrIdleEnergy(double idletime, double P_idle);
virtual void DecrSleepEnergy(double sleeptime, double P_sleep);
virtual void DecrTransitionEnergy(double transitiontime, double P_transition);
2. tcl部分使用
默认的,NS不会启用能量模型
,使用方式为:
$ns_ node-config -energyModel "EnergyModel" /
-initialEnergy (焦耳)
-rxPower (瓦)
-txPower (瓦)
-idlePower (瓦)
-sleepPower (瓦)
-sleepTime (节点开始休眠前需要等待的时间,秒)
-transitionPower (在sleep和idle状态间切换所需的功率,瓦)
-transitionTime (在sleep和idle状态间切换所需的时间,秒)
在trace
文件中,能量模型部分的格式为:
energy
[total remaining energy] ei [idle consumption] es [sleep consumption]
et [transmition consumption] er [receiving consumption]
使用方法1
加入模型:
设置变量
请根据自己实际需要配置这些变量
set opt(engmodel) EnergyModel ;# 能量模型
set opt(initeng) 10000.0 ;# 总能量
set opt(txPower) 0.660 ;# 传输能量
set opt(rxPower) 0.395 ;# 接受能量
set opt(idlePower) 0.035 ;# 待机能量
配置node-config
$ns_ node-config -adhocRouting $val(rp) /
-llType $val(ll) /
-macType $val(mac) /
-ifqType $val(ifq) /
-ifqLen $val(ifqlen) /
-antType $val(ant) /
-propType $val(prop) /
-phyType $val(netif) /
-energyModel $opt(engmodel) /
-initialEnergy $opt(initeng) /
-txPower $opt(txPower) /
-rxPower $opt(rxPower) /
-idlePower $opt(idlePower) /
-topoInstance $topo /
-agentTrace OFF /
-routerTrace OFF /
-macTrace ON /
-movementTrace OFF /
-channel $chan_1_
#include <mobilenode.h>
// Get pointer to the node
iNode = (MobileNode *) (Node::get_node_by_address(index));
iEnergy = iNode->energy_model()->energy();
参考:
http://zhm2k.blog.163.com/blog/static/598150682009411105033716/
http://elmurod.net/wps/?p=348