AnyLogic中为各工序配置独立RNG的变量可见性问题
解决AnyLogic中工位独立随机数生成器(RNG)的作用域问题
方法1:在主代理变量面板定义全局RNG实例
- 打开主代理的「变量」面板(Variables)
- 添加新变量:
- 类型选择
Random - 变量名设为
myRNG1(或其他自定义名称) - 初始化值填写
newRandom()
- 类型选择
- 完成后,模型内任何模块(包括延迟块)都能直接调用
triangular(5, 10, 25, myRNG1),不会出现变量无法解析的错误
方法2:给工位代理单独定义RNG(适合工位为独立代理的场景)
如果你的工序工位是用自定义代理(比如Workstation代理)实现的:
- 打开工位代理的「变量」面板,添加
Random类型变量stationRNG,初始化值设为newRandom() - 在该工位的延迟块中,直接使用
triangular(5,10,25, stationRNG) - 每个工位代理实例会拥有完全独立的RNG,随机序列相互隔离
方法3:延迟块内临时定义(仅适合单次测试)
如果只是临时测试,可在延迟块的「延迟时间」编辑框中直接写:
Random tempRNG = newRandom(); triangular(5,10,25, tempRNG)
注意:这种方式每次触发延迟都会创建新的RNG,无法保证随机序列的连续性,不推荐用于正式模型
内容的提问来源于stack exchange,提问作者Norbert Rötgen
相关产品推荐
相关产品推荐

