使用一个参数进行多项赋值

Using a parameter for multiple assignments

我正在模拟多个会话长度的网络拓扑。我希望实验的重复次数随着会话长度的减少而增加。所以我尝试将 $repeat 值与 *.sendBytes 绑定但失败了。

这是我的尝试 1

[some config]

repeat = ${1, 10, 100} # fails

...

**.app[0].sendBytes = repeat * 1KiB

这是我的第二次尝试

[some config]

**.app[0].sendBytes = ${load = 1KiB, 10KiB, 100KiB}

... 

repeat = 100KiB / ${load} # fails 

我不想浪费模拟时间来重复长时间的会话以确保测量的可靠性。

您要查找的内容在 omnet 手册中称为“Parallel Iteration”:

迭代的主体可能以感叹号结尾,后跟另一个迭代变量的名称。此语法表示并行迭代。并行迭代不定义自己的循环,而是序列以“!”后的变量同步推进。换句话说,“!” syntax 从迭代中选择第 k 个值,其中 k 是迭代变量在“!”之后的位置(迭代次数)。

一个例子:

**.plan =     ${plan= "A", "B", "C", "D"}
**.numHosts = ${hosts= 10,  20,  50, 100 ! plan}
**.load =     ${load= 0.2, 0.3, 0.3, 0.4 ! plan}

你可以这样写:

repeat =  ${5, 50, 200 ! load}