AnyLogic系统动力学模型:实现每日8小时工厂流程启停
AnyLogic系统动力学模拟工厂作息(每日8小时运行+次日重启)解决方案
核心逻辑梳理
由于模型时间单位设为天,1天对应24小时,因此每日8小时运行时长等价于1/3天(或精确计算8.0/24)。核心是判断当前时间处于当日的前1/3周期内时运行生产,剩余时段停止,次日自动循环。
具体实现方案
方案一:动态变量+条件判断(直观易维护)
- 创建布尔型动态变量
isOperating,设置其更新规则为:
解释:time() % 1 < 8.0/24time() % 1提取当前时间的小数部分(即当日已流逝的天数范围0~1),当该值小于8.0/24(对应8小时)时,变量为true(运行状态),否则为false(停止状态)。 - 在系统动力学的流量(Flow)速率公式中,嵌入状态判断:
例如生产速率可写为:isOperating ? 每日生产能力 : 0
方案二:直接嵌入条件(无需额外变量)
无需创建动态变量,直接在流量速率公式中写入判断逻辑:
(time() % 1 < 8.0/24) ? (每日到达总量 / (8.0/24)) : 0
解释:运行时段内,速率设为每日到达总量除以运行时长,确保当日总产出匹配输入的每日到达量;非运行时段速率直接设为0。
验证与排查
- 运行模型时,添加
isOperating变量的仪表盘和时间轴,观察每日01/3天变量为`true`,1/31天为false,次日循环正常。 - 统计每日总产出,确认与输入的每日到达量一致,避免因速率计算错误导致产出偏差。
- 若存在存量或延迟模块,需确保所有依赖运行状态的环节都添加了条件判断,防止非运行时段存量异常变化。
内容的提问来源于stack exchange,提问作者ali
相关产品推荐
相关产品推荐

