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

Anylogic技术问题:Delay块满容时Hold队列,降至90时解除如何实现?

AnyLogic舞蹈俱乐部入口控制实现方案

前提模型结构

假设你的模型流程是:Source(生成顾客) → Queue(入口排队) → Delay(模拟俱乐部内停留) → Sink(顾客离开),其中Delay块代表俱乐部内部,需先将其Capacity(容量)设置为100。


实现方式一:直接利用Delay块的内置事件(最简方案)

  1. 双击Delay块,切换到「Events」标签页
  2. 在「On enter」事件(顾客进入俱乐部时触发)中添加代码:
    // 检查当前俱乐部人数是否达到满员100,是则锁住入口队列
    if (this.size() == 100) {
        entranceQueue.hold(); // entranceQueue替换为你实际的Queue块名称
    }
    
  3. 在「On exit」事件(顾客离开俱乐部时触发)中添加代码:
    // 检查当前俱乐部人数是否降到90,是则解锁入口队列
    if (this.size() == 90) {
        entranceQueue.release(); // 同样替换为你的Queue块名称
    }
    

实现方式二:状态变量监听(适合扩展需求)

如果后续需要基于俱乐部人数添加更多逻辑,推荐用变量监听:

  1. 在主代理中添加整数型变量clubOccupancy,用于实时记录俱乐部内人数
  2. 回到Delay块的「Events」标签页:
    • 「On enter」事件写:clubOccupancy++;
    • 「On exit」事件写:clubOccupancy--;
  3. 选中clubOccupancy变量,添加「On change」事件(变量值变化时触发),写入代码:
    if (clubOccupancy == 100) {
        entranceQueue.hold();
    } else if (clubOccupancy == 90) {
        entranceQueue.release();
    }
    

注意事项

  • 必须确保代码中引用的Queue块名称和你模型里的实际名称完全一致,否则会报错
  • 上述逻辑支持重复触发:满员锁门→人数降到90开门→再次满员锁门,循环生效
  • 可添加「仪表盘」组件绑定clubOccupancy变量,方便实时查看俱乐部人数,调试更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:05:19