我在Anylogic中运行模拟,我正在尝试校准以下分布:
Jump = normal(coef1, coef2, -1, 1);
但是,一旦我开始校准(实验),我就会不断收到以下消息:
随机数生成需要太多次迭代(> 10000)
我试图用其他值替换-1和1并继续得到同样的东西
我还尝试更改coef1
和coef2
的界限并添加[0,1]
之类的内容,但我仍然遇到同样的错误。
我不明白。 有什么想法吗?
答案 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个参数。另请注意,如果您指定平均值和标准差,则通过将标准差置于平均值之前,顺序是不寻常的(对于概率论者/统计学家)。