zoukankan      html  css  js  c++  java
  • [转载]ns2中的能量模型

    主要是为了自己以后查找方便,先贴出源地址: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_
    #在此请注意,/后面不应出现空格之类的符号,也不能在其中换行的过程加入自己的注释。

    使用方法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();


    参考:

    http://zhm2k.blog.163.com/blog/static/598150682009411105033716/

    http://elmurod.net/wps/?p=348

  • 相关阅读:
    No Hibernate Session bound to thread, and configuration does not allow
    谈谈数据库中MyISAM与InnoDB区别
    hibernate实体的几种状态:
    解决Eclipse导出javadoc乱码问题
    freemarker截取字符串
    many-to-one和one-to-many的配置比较
    one-to-many many-to-one配置解释
    extends:类似于java中的继承特征,extends="struts-default"
    eclipse 中创建maven web项目
    java.lang.ClassNotFoundException: javax.persistence.EntityListeners
  • 原文地址:https://www.cnblogs.com/noanswer/p/3078555.html
Copyright © 2011-2022 走看看