omnet++ 中的正确索引
Proper indexing in omnet++
在 omnet++ 中,omnetpp.ini 文件中的索引可以这样吗:
*.Member[0].numTcpApps = 2
*.Member[1..numberOfMembers].numTcpApps = 1
参数 numberOfMembers
已在 .ned 文件中指定为普通整型变量。它被初始化为某个值,例如10.
如果我的 numberOfMembers
变量仅设置为 1,会发生什么情况。在这种情况下,我应该只有一个成员 (Member[0]
)。那么 .ini 文件的第二个条目会发生什么?
不能在 omnetpp.ini
中使用 NED 参数的值。但是,您可以在 omnetpp.ini
.
中使用 wildcard patterns 来实现您的目标
假设网络在 .ned
中定义为:
network ExampleNetwork
{
parameters:
int numberOfMembers;
submodules:
Member[numberOfMembers] : SomeMemberType;
// ...
}
那么在omnetpp.ini
中就可以控制网络了。例如,要为 Member[0]
设置 numTcpApps = 2
,为所有其他子模块设置 numTcpApps = 1
,应该这样写:
*.numberOfMembers = 10
*.Member[0].numTcpApps = 2
*.Member[*].numTcpApps = 1 # i.e. Member[1], Member[2], ..., Member[9]
注意 omnetpp.ini
中条目的顺序,因为:
The order of entries is very important with wildcards. When a key matches several wildcard patterns, the first matching occurrence is used.
因此,条目顺序如下:
*.numberOfMembers = 10
*.Member[*].numTcpApps = 1 # i.e. Member[0], Member[1], Member[2], ..., Member[9]
*.Member[0].numTcpApps = 2
将为所有子模块设置 numTcpApps = 1
。不考虑最后一行,因为条目 Member[*]
.
已经设置了 Member[0]
在 omnet++ 中,omnetpp.ini 文件中的索引可以这样吗:
*.Member[0].numTcpApps = 2
*.Member[1..numberOfMembers].numTcpApps = 1
参数 numberOfMembers
已在 .ned 文件中指定为普通整型变量。它被初始化为某个值,例如10.
如果我的 numberOfMembers
变量仅设置为 1,会发生什么情况。在这种情况下,我应该只有一个成员 (Member[0]
)。那么 .ini 文件的第二个条目会发生什么?
不能在 omnetpp.ini
中使用 NED 参数的值。但是,您可以在 omnetpp.ini
.
假设网络在 .ned
中定义为:
network ExampleNetwork
{
parameters:
int numberOfMembers;
submodules:
Member[numberOfMembers] : SomeMemberType;
// ...
}
那么在omnetpp.ini
中就可以控制网络了。例如,要为 Member[0]
设置 numTcpApps = 2
,为所有其他子模块设置 numTcpApps = 1
,应该这样写:
*.numberOfMembers = 10
*.Member[0].numTcpApps = 2
*.Member[*].numTcpApps = 1 # i.e. Member[1], Member[2], ..., Member[9]
注意 omnetpp.ini
中条目的顺序,因为:
The order of entries is very important with wildcards. When a key matches several wildcard patterns, the first matching occurrence is used.
因此,条目顺序如下:
*.numberOfMembers = 10
*.Member[*].numTcpApps = 1 # i.e. Member[0], Member[1], Member[2], ..., Member[9]
*.Member[0].numTcpApps = 2
将为所有子模块设置 numTcpApps = 1
。不考虑最后一行,因为条目 Member[*]
.
Member[0]