NS2能量模型

参考:https://blog.csdn.net/norbert_jxl/article/details/9319537

在NS2.34中,能量模型是节点属性,在~ns/mobile/energy-model.[h,cc]文件中定义,在~ns/mac/wireless-phy.[h,cc]文件中也有相关代码。

默认的,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]

 [energy 979.917000 ei 20.074 es 0.000 et 0.003 er 0.006]  

The meaning of each item is as follows:
energy: total remaining energy
ei: energy consumption in IDLE state
es: energy consumption in SLEEP state
et: energy consumed in transmitting packets
er: energy consumed in receiving packets


加入模型:   设置变量
    请根据自己实际需要配置这些变量
    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_ 
提取方法:   在路由层提取:
        Node* thisnode = Node::get_node_by_address(src);
        energy = thisnode->energy_model()->energy(); 
使用方法2.在创建节点的时候,利用addenergymodel方法.
$node addenergymodel [new $opt(energy) $node $opt(initeng)  $opt(txPower) $opt(rxPower) ]
3. 如何在路由层或者其它层调用能量模型?
首先,在希望使用该能量模型的头文件中加入:
#include <mobilenode.h>
接着,可以获取节点的指针:
// Get pointer to the node
iNode = (MobileNode *) (Node::get_node_by_address(index));
注意其中的index一般为节点的id,也称为地址。
接着,可以获取能量模型的指针:
energy = thisnode->energy_model()->energy();
接下来,可以获得任意参数,如:
iEnergy = iNode->energy_model()->energy();

猜你喜欢

转载自blog.csdn.net/weixin_41565755/article/details/88959631