【问题标题】:Using a subset of a SUMO scenario for OMNeT++ network simulation (with VEINS)使用 SUMO 场景的子集进行 OMNeT++ 网络模拟(使用 VEINS)
【发布时间】:2016-05-21 22:13:27
【问题描述】:

我正在尝试使用 OMNeT++、Veins 和 SUMO 评估在车载网络上运行的应用程序。因为应用程序依赖于真实的流量行为,所以我决定使用LuST Scenario,这似乎是此类数据的最新技术。但是,我想使用此场景的特定部分而不是整个场景(例如,高流量和低流量负载片段,也许还有其他)。保留 VEINS 提供的双向功能会很好,尽管我最感兴趣的是将交通数据从 SUMO 导入到我的模拟中。

实现这一点的一个明显方法是使用预热期。但是,我想知道是否有更有效的方法 - 模拟 8 小时的流量只是为了获得几分钟的片段感觉效率低下,并且对于具有足够重复次数的模拟可能会出现问题。

VEINS 是否有内置的热身机制,主要是避免发送消息(这是迄今为止模拟中最耗时的部分),还是有办法等待 SUMO 推进,例如,到一个特定的时间戳(这也避免了在 OMNeT++ 中创建车辆对象以及所有的启动代码)?

如果它是相关的 - 我正在使用 OMNeT++ 和 SUMO 的最新稳定版本(OMNeT++ 4.6 和 SUMO 0.25.0),我的代码库基于 VEINS 4a2(有一些变化,特别是接受 TraCI API 版本10)。

【问题讨论】:

    标签: simulation omnet++ veins


    【解决方案1】:

    您可以在此处做两件事来减少 Veins 中发送的消息数量:

    1. 按照手册中的here 所述使用 OMNeT++ 预热期。基本上,这意味着在您的.ini 文件中设置warmup-period,并确保您的代码使用if (simTime() >= simulation.getWarmupPeriod()) 进行检查。结果收集的 OMNeT++ 信号知道这一点。

    2. TraCIScenarioManager 提供了一个变量double firstStepAt @unit("s"),您可以使用它来延迟它的启动。同样,这可以在.ini 文件中设置。

    3. 正如VEINS FAQ 所述,TraCIScenarioManagerLaunchd 提供了两个变量来配置感兴趣的区域,基于矩形或道路(string roiRoadsstring roiRects)。为了减少模拟区域,您可以将模拟限制在特定的矩形;例如,*.manager.rioRects="1000,1000-3000,3000" 模拟两个提供的坐标之间的 2x2km 区域。

    使用这两种解决方案(最好结合使用),您仍然需要运行 SUMO - 但 Veins 几乎不会消耗任何时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多