如何在Veins / Omnetpp的单一车辆上停止应用程序?

时间:2018-01-11 14:37:44

标签: omnet++ veins sumo

我正在寻找停止在模拟的单个节点上运行的VEINS应用程序,让剩余的车辆正常模拟(不希望停止整个模拟)。 我只想停止正在运行的应用程序,这意味着车辆应继续作为常规SUMO车辆的模拟 - 就好像他没有配备应用程序一样。 有可能这样做吗? 我无法在文档中找到解决问题的方法。 提前致谢

1 个答案:

答案 0 :(得分:1)

TL; DR:仅使用VEINS API无法实现,您需要手动编写代码。它需要做多少工作取决于你想要做什么。

删除&重新添加:通过编程永久停止它应该相对容易 - 如果你终止与Car.ned相关的所有内容,你基本上就会完成你想要做的事情(这个动作不会在SUMO模拟中移除汽车)。然后你可以在以后再次实例化汽车;要做到这一点,你可能只需要一个相对较小的扩展,以便在满足某些条件时再次实例化移除的车辆。

暂停和恢复:冻结汽车并恢复它有点困难,因为您必须暂停与车辆相关的所有事件。暂停单个车辆的概念问题是,由于VEINS的设计方式,您需要推迟一些事件(例如,定期信标应用的定时器),并丢弃其他事件(信号接收检查事件)其他派遣车辆排队)。特别是,您需要问自己是否要保留汽车MAC队列中的消息。基本上你需要手写这个,查看与车辆相关的所有事件,并决定是否将它们推迟一段时间(或丢弃它们)。如果您决定简单地丢弃所有事件(可能是最容易实施的决定),那么您将不得不处理汽车的应用状态不再有意义的情况。