RNG种子的选择会极大地影响模拟目标

时间:2019-01-10 16:23:17

标签: random simulation omnet++ random-seed

我第一次在Omnet ++ 5.4中开发一个仿真,该仿真利用了可用的queueinglib库。特别是,我建立了一个简单的模型,该模型包含服务器和一些被动队列。

如《 Omnet仿真手册》所写,我重复了不同的时间,设置了不同的种子和参数,这是我的omnetpp.ini:

# specify how many times a run needs to be repeated
repeat = 100
# default: different seed for each run
# seed-set = ${runnumber}
seed-set = ${repetition} # I tried both lines

OppNet.source.interArrivalTime = exponential(${10,5,2.5}s)

对于interArrivalTime分布参数的每个值,将产生300次运行,重复100次。

但是,我观察到一些“奇怪”的行为,即根据RNG种子得出的统计数据高度可变。 例如,考虑到模型中的队列长度,大多数运行值都小于10,而另一些运行中的平均值却在数量级上有所不同(85000、45000?)。

这是否意味着我的实现是错误的?还是随机种子选择可能会对模拟结果产生如此大的影响?

感谢您的帮助或提示,谢谢。

2 个答案:

答案 0 :(得分:0)

我不能排除在没有看到它的情况下您的实现是错误的,但是您完全有可能恰好配置了一个混乱的情况。 在那种情况下,是的,输入的任何细微变化(在本例中为PRNG种子)都可能导致结果出现重大差异。

编辑

特别考虑给定的(非平凡的)排队网络,如果您更改“负载”(传入作业/消息的数量/比率,并且具有一些随机分布),则结果中可能会观察到不同的“状况”:

  • 负载很轻,几乎没有排队
  • 负载非常重(接近或处于最大容量),大多数队列几乎总是被加载,甚至无限制地不断增长
  • 在这两者之间的某个地方,您可能会得到这种不稳定的行为,有时几个队列突然突然变深,然后被清空,然后装入不同的队列,依此类推;时间或PRNG种子或两者的函数-这就是我所说的混乱

但这只是猜测...

答案 1 :(得分:0)

没有人看不到您的实现是对还是错。但是,有一些一般规则适用于您应该注意的队列。您说您正在更改interArrivalTime分布参数。排队中一个非常重要的概念是交通强度,它是到达间隔率与服务率的比率。如果该比率小于1,则线路长度可能会有很大变化,但是从长远来看,清空队列会存在一些时间间隔,因为平均而言,服务器可处理的客户多于到达的客户。这是一个稳定的队列。但是,如果该比率大于1,则队列将无限制地增长。您运行系统的时间越长,该行就会越长。令很多人惊讶的是,当交通强度等于1时,直线也会渐近地到达无穷大。

要知道的另一件事是,对于稳定的队列,流量强度越接近一个,可变性就越大。那是因为平均值增加了,但是如上所述,总会出现线长为零的周期。为了始终存在零但使平均值增加,必须有一些队列长度超过平均值的时间,这意味着可变性必须增加。更改随机数种子可让您对在任何时间片上可能出现的方差的大小有一些了解。

最重要的是,您可能只是看到证据证明队列比您想象的要怪和多变。

相关问题