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

AnyLogic系统动力学模型中条件触发事件重启问题求助

AnyLogic系统动力学模型:流入启停的条件事件解决方案

问题背景

搭建了时间单位为年的简易系统动力学模型,需求如下:

  • 触发停止流入:当存量(stock)≥2158590 或 time()为5的倍数时,停止存量的流入(inflow)
  • 触发重启流入:当存量<2158590(存在移除1000000的流出outflow)且 time()不为5的倍数时,重启流入
  • 此前尝试添加event.restart();、拆分事件、新增反向触发事件等方法均未解决第5年停止后无法重启的问题

可行解决方案

核心是拆分两个独立的条件触发事件,分别管控「停止流入」和「重启流入」,避免逻辑冲突:

1. 创建「停止流入」事件(条件触发)

  • 触发条件:
    stock >= 2158590 || (time() % 5 == 0 && time() > 0)
    

    注:添加time()>0避免模拟初始时刻(time=0)误触发

  • 动作代码:
    inflow.set_rate(0); // 若流入由变量控制,替换为`inflowRate = 0;`
    
  • 事件属性:设置为「单次触发」(不勾选重复触发)

2. 创建「重启流入」事件(条件触发)

  • 触发条件:
    stock < 2158590 && (time() % 5 != 0)
    
  • 动作代码:
    inflow.set_rate(原始流入速率); // 替换为模型中流入的初始值或计算逻辑,比如`inflowRate = 100000;`
    event.restart(); // 持续监控重启条件
    
  • 事件属性:设置为「重复触发」

关键注意事项

  • 确认流出(outflow)逻辑正常,确保存量能在触发流出后降至2158590以下
  • 检查模型时间单位是否为年,避免time()取模计算出错
  • 若流入是自定义函数驱动,需对应调整启停逻辑(比如禁用/启用函数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:13