Omnetpp:如何避免仿真结果文件意外被覆盖?
首先要明确:ANF(Analysis File)文件不直接存储仿真数据,它只记录对原始.sca(标量数据)和.vec(向量数据)文件的引用、图表配置、分析规则。你遇到的问题本质是:两个ANF文件都指向了同一组.sca/.vec,第二次仿真覆盖了这组原始文件,导致两个ANF读取的都是新数据。
以下是三种可行的解决方法:
方法1:让每次仿真生成独立的原始输出文件
修改omnetpp.ini配置文件,指定输出文件名包含运行标识,避免每次仿真覆盖同一文件:output-scalar-file = General-${run}.sca output-vector-file = General-${run}.vec配置后,不同运行(或不同配置)会生成
General-1.sca、General-2.sca这类独立的原始文件,对应生成的ANF会绑定各自的数据源,后续复制重命名ANF后不会互相干扰。方法2:导出ANF为离线独立文件
若已生成目标ANF,可将其转为不依赖原始数据的离线文件:在OMNeT++ Analysis Tool中打开该ANF,点击菜单栏File > Export > Export as Standalone Analysis File。导出后的文件会将仿真数据嵌入其中,即使原始.sca/.vec被覆盖或删除,依然能保留原有图表和数据。方法3:手动修改ANF的数据源引用
第一次仿真完成后,除了重命名ANF,还要将对应的General-#0.sca和General-#0.vec复制并重命名(比如General_1st.sca、General_1st.vec);然后打开General_1st.anf,右键点击左侧面板的数据集,选择Properties,将数据文件路径改为备份后的重命名文件,保存ANF即可。此后该ANF会指向备份的原始数据,不受后续仿真影响。
内容的提问来源于stack exchange,提问作者Nguyen Huy

