如何在AnyLogic中设置潮汐周期事件,实现船舶定时通航控制
AnyLogic船舶过桥潮汐通行问题分步解决指南
核心思路
你需要通过两个循环事件分别控制高潮的开始(解锁Hold)和结束(锁定Hold),再配合全局变量关联Hold块的放行条件,实现每日8-18点(10小时)的通行周期。
分步操作
创建全局控制变量
- 在AnyLogic的项目视图中,右键点击
Main-> 选择添加->变量 - 变量类型选
boolean,名称设为isHighTide,初始值设为false(代表初始为低潮,禁止通行)
- 在AnyLogic的项目视图中,右键点击
设置高潮开始事件(解锁Hold)
- 拖拽一个
事件到主画布,命名为event_highTideStart - 打开事件属性面板:
- 类型选择
timeout-cyclic - 首次触发时间:输入
8(对应仿真开始后8小时,即每日8点) - 周期:输入
24(每24小时重复一次) - 在
动作栏输入代码:isHighTide = true; // 替换成你自己的Hold块名称,比如你的块叫Hold_ship就改成Hold_ship.setAllowed(true) holdBlock.setAllowed(true);
- 类型选择
- 拖拽一个
设置高潮结束事件(锁定Hold)
- 再拖拽一个
事件到主画布,命名为event_highTideEnd - 打开事件属性面板:
- 类型选择
timeout-cyclic - 首次触发时间:输入
18(8点+10小时=18点,高潮结束时间) - 周期:输入
24(每24小时重复一次) - 在
动作栏输入代码:isHighTide = false; // 同样替换成你的Hold块名称 holdBlock.setAllowed(false);
- 类型选择
- 再拖拽一个
配置Hold块的放行规则
- 打开你的Hold块属性面板:
- 找到
允许继续选项,选择基于条件 - 在条件输入框中输入
isHighTide(只有当变量为true时,船舶才能通过)
- 找到
- 打开你的Hold块属性面板:
调试验证(可选)
- 拖拽一个
文本控件到画布,在文本属性中输入:isHighTide ? "当前状态:高潮(可通行)" : "当前状态:低潮(禁通行)" - 运行仿真,观察文本变化:0-8点显示低潮,8-18点显示高潮,18点后回到低潮,每日循环。
- 拖拽一个
内容的提问来源于stack exchange,提问作者Agung Limowa
相关产品推荐
相关产品推荐

