随机数生成需要太多次迭代

时间:2015-09-17 15:02:29

标签: random iteration generator bounds anylogic

我在Anylogic中运行模拟,我正在尝试校准以下分布:

Jump = normal(coef1, coef2, -1, 1);

但是,一旦我开始校准(实验),我就会不断收到以下消息:

  

随机数生成需要太多次迭代(> 10000)

我试图用其他值替换-1和1并继续得到同样的东西 我还尝试更改coef1coef2的界限并添加[0,1]之类的内容,但我仍然遇到同样的错误。

我不明白。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

四参数法线方法不推荐使用,不是“校准,其中coef1和coef2是要求解的系数”。你从哪里得到了这种理解?或者您是说您正在使用AnyLogic实验(可能是多次运行或优化实验)来“校准”该分布,在这种情况下,您需要在此处解释“校准”的含义---您的是什么期望的结果?

如果您查看API参考(AnyLogic类和函数 - > API参考 - > com.xj.anylogic.engine - >实用工具),您将看到它是一种使用方法截断正态分布。

public double normal(double min,
                     double max,
                     double shift,
                     double stretch) 

前两个参数是最小值和最大值(重复采样并忽略[min,max]范围之外的值);第二个是有效的均值和标准差。因此,如果min或max意味着它将采样太多次以获得范围内的值,那么您将得到您提到的错误。

下面的API参考详情:

  

生成截断的正态分布的样本。分配   normal(1,0)由拉伸系数拉伸,然后转移到   右移,之后被截断以适应[min,max]   间隔。通过丢弃外部的每个样本来执行截断   这个间隔并随后尝试。有关详细信息,请参阅   正常(双,双)

     

参数:       min - 此函数将返回的最小值。截断分段以返回高于此值的值。如果是样品   (拉伸和移位)低于此值,它将被丢弃   将绘制另一个样本。使用-infinity为“无限制”。       max - 此函数将返回的最大值。截断分段以返回低于此值的值。如果是样品   (拉伸和移位)大于该值将被丢弃   并将绘制另一个样本。使用+无穷大为“无限制”。       shift - 移位参数,指示(拉伸)分布将向右移动多少=平均值       stretch - 指示分布将拉伸多少的拉伸参数=标准差返回:       生成的样本

答案 1 :(得分:0)

根据AnyLogic's documentation,没有normal的版本需要4个参数。另请注意,如果您指定平均值和标准差,则通过将标准差置于平均值之前,顺序是不寻常的(对于概率论者/统计学家)。