You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Veins 4.4路由协议评估:无大量改码获取成功接收概率的方法问询

针对Veins 4.4获取成功接收概率的最小代码改动方案

首先,针对你的需求,我推荐两种改动极小的方案,完全不需要大规模修改Veins核心路由或MAC协议代码:

方案1:利用Omnet++信号监听(零核心代码修改)

Veins基于Omnet++构建,所有核心模块(Phy、Mac、App层)都会发射标准化的统计信号。你可以在自己的应用层模块中订阅这些信号,轻松统计发送/接收成功的帧数:

  • 在你的App类头文件中,添加两个成员变量:long totalSent; 和 long totalReceivedOk;,并在构造函数中初始化为0。
  • 在initialize()方法中,订阅以下信号:
    getParentModule()->getSubmodule("phy")->subscribe(packetReceivedOkSignal, this);
    getParentModule()->getSubmodule("mac")->subscribe(frameTransmittedSignal, this);
    
  • 重写handleSignal()方法,处理信号事件:
    void YourApp::handleSignal(cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) {
        if (signalID == packetReceivedOkSignal) {
            totalReceivedOk++;
        } else if (signalID == frameTransmittedSignal) {
            totalSent++;
        }
    }
    
  • 仿真结束时,在finish()方法中计算成功接收概率:
    double successRate = (totalSent > 0) ? (double)totalReceivedOk / totalSent : 0;
    recordScalar("Success Reception Rate", successRate);
    

这个方案完全不需要修改Veins的核心代码,只需要在你自己的应用模块中添加上述逻辑即可。

方案2:在应用层父类中添加极简计数(仅需修改几行代码)

如果你需要更精准的端到端统计(比如只统计你关心的特定消息类型),可以修改BaseWaveApplLayer(你的应用模块的父类):

  • 在BaseWaveApplLayer.h中添加两个protected成员变量:long m_totalSentWSM; 和 long m_totalReceivedWSM;
  • 在BaseWaveApplLayer.cc的构造函数中初始化这两个变量为0。
  • 修改sendWSM(WaveShortMessage* wsm)方法,在发送前增加m_totalSentWSM++;
  • 修改onWSM(WaveShortMessage* wsm)方法,在处理前增加m_totalReceivedWSM++;
  • 最后在finish()方法中计算并记录概率:
    double successRate = (m_totalSentWSM > 0) ? (double)m_totalReceivedWSM / m_totalSentWSM : 0;
    recordScalar("WSM Success Reception Rate", successRate);
    

这个方案仅需修改Veins的BaseWaveApplLayer类的几行代码,改动极小,且所有继承该类的应用模块都能复用这个统计逻辑。


关于你提到的文献实现问题:
大部分公开研究中展示的成功接收概率,并非全部是完全自行实现复杂的追踪模块。很多研究人员会复用Veins/Omnet++的内置统计机制(比如上述信号监听方案),或者做类似方案2的极小改动来获取数据。只有少数特殊场景(比如需要自定义的链路质量度量)才会进行较多代码修改。

内容的提问来源于stack exchange,提问作者user629034

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:54:29