AnyLogic PLE 8.2.3中Source泊松到达率设置异常求助
解决AnyLogic Source泊松到达速率不符的问题
首先,咱们得搞清楚AnyLogic里「速率」模式下Source的工作逻辑:当你选择「到达定义方式」为「速率」时,Source默认是按照泊松过程生成智能体的——它会用指数分布 exp(λ) 来生成相邻智能体的到达间隔时间,这样单位时间内的平均到达数正好是你设置的λ值,这就是标准的泊松到达过程。
你之前操作的问题所在
你直接在「到达速率」框里填写 poisson(0.1215),这相当于每次生成到达间隔时,先随机抽取一个泊松分布的数值作为当前的速率,再用这个速率生成指数间隔。这完全不是标准的泊松过程:
- 泊松分布的取值是离散的(0、1、2...),每次的速率都是随机变化的
- 这种混合分布会导致实际的平均到达率偏离预期的0.1215,你观测到的0.32就是这个错误操作带来的结果
而你把 poisson(0.1215) 赋值给参数的做法,实际是让参数在模型启动时只生成一次泊松样本,之后速率就固定为这个样本值,相当于用了一个固定的λ(多次运行的话,这个λ的均值会接近0.1215),所以此时Source的到达过程是标准的泊松过程,结果就正常了。
正确的设置方法
想要生成符合预期λ=0.1215的泊松到达过程,只需要:
- 保持「到达定义方式」为「速率」
- 直接在「到达速率」框里填写常数0.1215,不需要嵌套
poisson()函数
这样Source就会自动用指数分布生成间隔时间,单位时间的平均到达数正好是0.1215,完全符合你观测到的λ值需求。
额外说明
如果你确实需要时变的泊松到达速率(比如速率随时间变化),那应该用一个随时间变化的变量或函数来定义速率,而不是每次生成间隔时随机抽取泊松值。比如你可以定义一个函数getArrivalRate(),根据当前时间返回对应的λ值,然后在Source的到达速率里引用这个函数。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

