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

如何通过编程方式调整AnyLogic实验的运行速度?

模型运行速度控制逻辑失效问题排查及修复

常见失效原因

  • 快进模式未正确退出
    runFast() 会强制模型以最高速度运行,且优先级高于setRealTimeScale()的参数设置,你当前代码在进入非快进时段时,没有先停止快进模式,导致后续的倍速设置完全不生效。
  • 日期函数取值定义不匹配
    不同工具库的getDayOfWeek()返回值规则不一致:部分库周日返回1、周六返回7,若你的预期是周六周日为非工作日,需要先确认当前库的返回值规则是否和你的判断逻辑匹配,避免把工作日误判为非工作日。
  • 触发时机存在时间差
    你使用每小时触发一次的循环事件执行逻辑,若时段切换节点(如8点、12点、17点)刚好落在两次事件触发的间隔中间,会导致最长1小时的配置不生效空档。
  • 时间来源错误
    需确认date()函数获取的是模型模拟时间,而非运行设备的本地系统时间,若取到系统时间会完全不符合模拟场景的时间逻辑。
  • 事件触发时间类型错误
    需确认循环事件的触发间隔是按照模拟时间计算,而非真实物理时间,若设置为真实时间间隔,模型快进时会跳过大量模拟时段的逻辑执行。

修复后代码示例

Date date = date();
// 先退出快进模式,避免之前的快进设置覆盖后续倍速配置
getEngine().stopRunFast();
if (getDayOfWeek(date)==1||getDayOfWeek(date)==7)
{
    getEngine().runFast();
}
else if (getHourOfDay(date)<8||getHourOfDay(date)==12||getHourOfDay(date)>=17)
{
    getEngine().runFast();
}
else
{
    getEngine().setRealTimeScale(5);
}

额外优化建议

  • 可以把循环事件的触发时间调整到每个时段切换的节点(如每天的8点、12点、17点、0点)触发,避免时间差空档
  • 增加一次模型启动时的初始化执行,避免模型启动初期的配置不生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:48:02