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

如何在AnyLogic中设置Event块指定时长的港口运营中断事件?

如何给Event块实现的中断设置持续时长

单纯的Event块(仅负责信号触发)本身不支持直接设置中断时长,得通过触发中断→定时维持→自动解除的事件链来实现,以下是不同场景的具体方案:

代码式离散事件框架(如SimPy)

  • 先定义中断事件和定时解除逻辑:
    import simpy
    
    def trigger_timed_interrupt(env, interrupt_event, duration):
        # 触发中断
        interrupt_event.succeed()
        print(f"中断启动:{env.now}")
        # 等待设定的中断时长
        yield env.timeout(duration)
        # 重置事件,解除中断
        interrupt_event = env.event()
        print(f"中断结束:{env.now}")
    
    def port_handling_process(env, interrupt_event):
        while True:
            # 模拟正常港口装卸作业
            yield env.timeout(15)
            # 监听中断信号
            if interrupt_event.triggered:
                # 进入中断状态,直到事件重置(解除)
                yield interrupt_event
                # 恢复正常作业
                print("恢复港口运营")
    
    # 初始化环境
    env = simpy.Environment()
    interrupt_event = env.event()
    # 触发30单位时长的中断
    env.process(trigger_timed_interrupt(env, interrupt_event, 30))
    env.process(port_handling_process(env, interrupt_event))
    env.run(until=100)
    

可视化模拟工具(如AnyLogic)

如果你用的是可视化拖拽式工具:

  • 拖入Event块命名为startInterrupt,作为中断触发信号。
  • 连接Delay块到startInterrupt后,在Delay块的“延迟时间”中输入你需要的中断时长(比如60代表60分钟)。
  • 再拖入Event块命名为endInterrupt,连接到Delay块后,作为中断解除信号。
  • 在被中断的作业进程(比如Service块或ProcessFlow)中,设置“中断事件”为startInterrupt,“恢复事件”为endInterrupt。

核心逻辑总结

  • 中断不是单一事件,而是触发+定时+解除的组合流程,Event块只负责信号的收发,时长控制要靠延迟/定时器来实现。
  • 无论用代码还是可视化工具,都要确保被中断的进程能监听“中断结束”信号,在时长到点后自动恢复运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:54:36