在 Omnetpp 中收集不同运行的结果时出现问题

问题描述

自版本 2.X 到版本 4.XI 能够通过我自己重新实现的 cIoUtputScalarManager 成功记录标量,这使我能够将所有运行的结果存储在 cLongHistogram/cDoubleHistogram 类的相同实例中,这些实例由内部使用我对 cIoUtputScalarManager 的重新实现。我使用 OMNeT++ 进行瞬态分析,因此我需要将许多不同运行的结果(在大多数情况下为 100000 次运行)平均以获得所需的图,但是在版本 5.X 中,每次运行都会从头开始重新实例化整个 cIoUtputScalarManager,因此而不是所有结果运行,最后我只从上次运行中得到结果:( 我怎样才能恢复为所有运行使用一个相同的 cIoUtputScalarManager 而不是为每次运行单独一个(特别是在考虑并行执行运行时,在我的情况下没有打破结果,因为我实际上需要所有结果的平均值)?

感谢您提供有助于解决此问题的任何想法。

解决方法

如果您真的必须收集所有运行的统计信息(并且据我所知,您的用例证明了这一点),那么您仍然可以基于 cIOutputScalarManager 实现自己的管理器,但在该对象中,您可以将所有工作委托给您的经理的 静态 实例。即使用单例设计模式并将所有工作委托给该单个实例。