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

AnyLogic模型中如何为进入流程的Agent随机分配不重复列表值

AnyLogic 不重复随机分配选项列表值实现方案

前置准备

首先完成2项基础配置:

  • 给客户Agent新增一个参数,参数类型选择你定义的Issue选项列表,命名为assignedIssue,用于存储分配给当前Agent的取值
  • 在Main(或你对应流程的上级Agent)中新增一个集合类型变量:
    • 变量名:availableIssues
    • 类型:ArrayList<Issue>
    • 初始值:new ArrayList<>(Arrays.asList(Issue.values()))
      这个集合会作为动态可用值池,存储还未被分配过的Issue选项

分配逻辑实现

在你流程中客户刚进入的位置(通常是Source块的「On exit」动作,或者流程第一个模块的「On enter」动作)中写入如下代码:

// 先判断可用值池是否为空,避免报错
if (availableIssues.isEmpty()) {
    // 此处可根据你的业务需求调整逻辑:比如重置可用池、抛出提示、终止流程等
    // 示例:重置可用池,重新开始分配
    availableIssues.addAll(Arrays.asList(Issue.values()));
    
    // 如果你不需要重置,而是12个值用完就不允许新Agent进入,可以写如下代码:
    // throw new RuntimeException("Issue选项已全部分配完毕,无可用值");
}

// 随机生成可用值范围内的索引
int randomIdx = uniform_discr(0, availableIssues.size() - 1);
// 取出对应值分配给Agent,同时从可用池中移除该值,保证不会重复分配
agent.assignedIssue = availableIssues.remove(randomIdx);

可选适配场景

如果你的模型需要按轮次分配,每12个Agent为一轮,每轮都要重新用全量Issue值分配,可在每轮结束的触发位置执行重置代码即可:

availableIssues.clear();
availableIssues.addAll(Arrays.asList(Issue.values()));

内容的提问来源于stack exchange,提问作者Stranieri Andrea Cosimo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:27:01