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

Anylogic队列现有agent集合创建及客户弃队模拟相关问题咨询

排队弃队联动逻辑实现方案(适配AnyLogic仿真平台)

前置准备(Customer Agent配置)

  • 新增集合参数:命名为frontAgents,类型选择ArrayList<Customer>,初始值设为new ArrayList<Customer>(),用于存储当前客户前方所有未弃队的客户agent引用
  • 新增状态标记变量:命名为isAbandoned,布尔类型,初始值为false,用于标记当前客户是否已经弃队
  • 新增联动响应函数:命名为frontCustomerLeft,入参为Customer leftAgent,函数内实现两个逻辑:
    1. 从frontAgents集合中移除已弃队的leftAgent
    2. 执行你自定义的弃队判断规则(可结合当前自身等待时长、前方剩余人数、弃队人数占比等参数),如果符合弃队条件则触发自身弃队逻辑

Queue块On Enter动作代码

新客户进入队列时,直接调用Queue块自带的queue有序集合(队首元素索引为0,队尾为最大索引)填充前置集合:

// 转换agent类型为自定义的Customer
Customer currentCustomer = (Customer) agent;
currentCustomer.frontAgents.clear();
// 遍历队列中除刚加入的当前客户外的所有已有客户(已有客户都排在当前客户前方)
for (int i = 0; i < self.queue.size() - 1; i++) {
    Customer frontCustomer = (Customer) self.queue.get(i);
    // 仅存储未弃队的前方客户
    if (!frontCustomer.isAbandoned) {
        currentCustomer.frontAgents.add(frontCustomer);
        // 如果需要单独采集参数,可直接调用属性获取,比如frontCustomer.waitDuration、frontCustomer.customerType
    }
}

弃队联动逻辑实现

某个客户触发弃队条件时,按以下顺序执行代码:

// 先标记自身已弃队
this.isAbandoned = true;
// 遍历队列中所有排在当前客户后方的客户,发送弃队通知
int currentIndex = queue.indexOf(this);
for (int i = currentIndex + 1; i < queue.size(); i++) {
    Customer behindCustomer = (Customer) queue.get(i);
    behindCustomer.frontCustomerLeft(this);
}
// 最后将自身移出队列
queue.remove(this);

无需单独存储agent ID,直接存储agent对象引用即可直接调用所有自定义参数、函数,操作效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:09:02