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

AnyLogic中Source块用数据库时出现Not unique database value!错误

解决AnyLogic Source块多智能体到达的"Not unique database value!"错误

针对你遇到的问题,这里提供几个可行的解决思路:

原因分析

启用"Multiple agents per arrival"时,AnyLogic会严格校验到达时间表的时间列唯一性,同时要求数量列的配置正确。即便你的时间看起来唯一,也可能因格式解析、字符串冗余(如空格)或列映射错误触发报错。

解决方案

1. 检查并修复时间列的唯一性与格式

  • 确认数据库time列无隐形空格或格式不一致:比如两行时间字符串前后是否有多余空格,可通过TRIM(time)函数清理后再导入AnyLogic。
  • 将time列转换为数据库原生时间类型(如DATETIME),而非字符串类型,避免AnyLogic解析时出现识别误差。

2. 正确配置Source块的多智能体参数

在Source块的到达时间表设置中:

  • 选择"From database table"后,确保在"Multiple agents per arrival"区域,将"Number of agents"下拉选项准确映射到你的quantity列,而非其他列。

3. 绕过多智能体选项,手动生成批量智能体

如果上述方法无效,可以不启用"Multiple agents per arrival",改用代码实现批量生成:

  • 保持Source块默认设置(每行生成1个智能体)。
  • 在Source块的On exit事件中添加以下代码(替换MyAgent为你的智能体类型):
Record arrivalRecord = (Record)getArrivalTableRecord();
int totalQuantity = arrivalRecord.getInt("quantity");
// 已生成1个,循环生成剩余数量
for(int i = 1; i < totalQuantity; i++){
    MyAgent newAgent = add_myAgent(); // 此处调用你的智能体生成方法,比如从AgentPool添加或直接创建
    // 如果需要传递product等参数,可在这里赋值
    newAgent.product = arrivalRecord.getString("product");
}

这样既可以实现按quantity列生成对应数量的智能体,又能规避报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:28:15