如何使用不同的配置运行模拟?我使用的是omnet ++版本4.6
。
我的omnetpp.ini
文件如下所示:
[General]
[Config Dcn2]
network = Dcn2
# leaf switch
#**.down_port = 2
**.up_port = 16 #12 # 4
# spine switch
**.port = 28 # 20 #2048
# crossconnect
**.cross_down_port = 28 # 20 #2048
**.cross_up_port = 28 # 20 #2048
# to set destination of packet
**.number_leaf_switch = 28 # 20 #2048
# link speed
#**.switch_switch_link_speed = 40 Mbps
**.interArrivalTime = ${exponential(.0001),exponential(0.0002),exponential(0.0003)}
**.batch_length = 10
**.buffer_length = 10
sim-time-limit = 1000s
我想使用interArrivalTime
的不同值运行代码。但我既不能运行不同的配置(一个接一个),也不能在不同的内核上并行运行单独的运行。
我在运行配置中尝试使用cmdev
选项,但不同的运行与第一个运行不同。当我尝试提到多个进程的数量时,也只有第一次运行被模拟。我真的找不出原因。
答案 0 :(得分:4)
配置Examinataion
在您的情况下,您可以执行配置检查。 OMNeT ++为此提供了不同的选择。它们在OMNeT ++手册的Parameter Studies部分进行了解释。
因此,您可以尝试以下选项之一来检查配置,从而配置文件:
./run –a
- 将显示omnet.ini
./run -x <config_name>
- 将提供有关特定配置的更多信息./run -x <config_name> -g
- 查看配置的所有组合首先,您必须导航到示例文件夹,然后执行上述命令之一。
我执行了./run -x Dcn2 -g
并获得了以下结果
OMNeT++ Discrete Event Simulation (C) 1992-2014 Andras Varga, OpenSim Ltd.
Version: 4.6, build: 141202-f785492, edition: Academic Public License -- NOT FOR COMMERCIAL USE
See the license for distribution terms and warranty disclaimer
Setting up Tkenv...
Config: Dcn2
Number of runs: 3
Run 0: $0=exponential(.0001), $repetition=0
Run 1: $0=exponential(0.0002), $repetition=0
Run 2: $0=exponential(0.0003), $repetition=0
End.
这确实证实了您尝试修改的模拟参数有3种不同的运行。但是,默认情况下,您为interArrivalTime
参数使用的变量名称已分配给$0
,因为您尚未指定它。
如果您在配置中更改以下行:
**.interArrivalTime = ${exponential(.0001),exponential(0.0002),exponential(0.0003)}
到
**.interArrivalTime = ${interArrivalTime = exponential(0.0001),exponential(0.0002),exponential(0.0003)}
您将获得./run -x Dcn2 -g
运行配置的不同运行:
下一步是为您的配置运行不同的运行。您可以通过导航到示例目录并执行:
来实现./run -c <config-name> -r <run-number> -u Cmdenv
请注意,<config-name>
对您来说是Dcn2
,而-r
指定您要执行的上述运行。
换句话说,您可以打开三个终端窗口并导航到示例目录并执行:
./run -c Dcn2 -r 0 -u Cmdenv
- for interArrivalTime = exponential(0.0001)./run -c Dcn2 -r 1 -u Cmdenv
- for interArrivalTime = exponential(0.0002)./run -c Dcn2 -r 2 -u Cmdenv
- for interArrivalTime = exponential(0.0003)区分不同的运行结果
为了能够区分给定配置的不同运行的输出结果文件,您可以修改输出文件的默认名称。
&#34;操作方法&#34;在OMNeT ++手册的 12.2.3结果文件名部分中给出。
output-vector-file = "${resultdir}/${configname}-${runnumber}.vec" output-scalar-file = "${resultdir}/${configname}-${runnumber}.sca"
默认情况下,您可以看到输出文件将由${runnumber}
变量区分。您可以通过将interArrivalTime
添加到输出文件名来进一步改进它。
示例:强>
output-scalar-file = "${resultdir}/${configname}-${runnumber}-IAtime=${interArrivalTime}.sca/vec"
我没有测试最终方法。所以你可能会在路径上遇到一些错误。