You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic动态模型中如何为变量添加时间波动(正弦函数示例)

AnyLogic实现就业率的周期/随机时间波动效果

一、周期波动(正弦函数实现)

适合模拟有规律的季节性经济波动,步骤如下:

  1. 定义基础参数
    • 创建全局变量:baseEmploymentRate(基础就业率,比如设为0.9)、waveAmplitude(波动幅度,比如0.05,即±5%)、wavePeriod(波动周期,比如365,单位与模拟时间一致,比如天)
  2. 设置动态实时就业率
    • 创建全局动态变量currentEmploymentRate:将变量的「Value type」改为Dynamic,在表达式框中输入:
      baseEmploymentRate + waveAmplitude * sin(2 * PI * time() / wavePeriod)
      
      其中time()是AnyLogic内置的当前模拟时间函数,2*PI用于将周期转换为弧度,确保波动周期符合设定值。
  3. 可视化验证
    • 添加Time Plot组件到画布,将currentEmploymentRate拖入Y轴数据源,运行模型即可看到周期性波动曲线。

二、随机时间演化效果

模拟经济中的随机扰动,可选以下几种方式:

1. 白噪声叠加(短期随机波动)

在周期波动基础上叠加正态分布随机数,修改currentEmploymentRate的表达式:

max(0, min(1, baseEmploymentRate + waveAmplitude * sin(2 * PI * time() / wavePeriod) + normal(0, 0.01)))

用max(0, min(1, ...))限制就业率在0-1的合理范围内,normal(0,0.01)生成均值0、标准差0.01的随机数,可调整标准差控制波动幅度。

2. 随机游走(长期趋势性随机变化)

  • 创建全局变量randomWalkOffset,初始值设为0
  • 添加On Time Event组件,设置触发间隔(比如每天1次),在事件动作中输入:
    randomWalkOffset += uniform(-0.005, 0.005)
    
  • 实时就业率表达式改为:
    max(0, min(1, baseEmploymentRate + randomWalkOffset))
    

3. 周期+随机组合(贴近现实经济)

结合季节性周期和随机扰动,表达式示例:

max(0, min(1, baseEmploymentRate + waveAmplitude * sin(2 * PI * time() / wavePeriod) + normal(0, 0.008)))

三、注意事项

  • 如果是智能体模型(ABM),若就业率是全局指标,在Main中设置变量即可;若为个体属性,在Agent类中定义对应动态变量。
  • 动态变量会随模拟时间自动更新,无需额外编写循环逻辑。
  • 可根据需求调整参数值,比如修改wavePeriod改变周期长度,调整waveAmplitude改变波动强度。

内容的提问来源于stack exchange,提问作者Olivier SIRE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:12:41