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

AnyLogic中为单Agent类型配置数据库动态DelayBlock延迟时间

解决AnyLogic中DelayBlock引用Excel数据库出现“not unique database value”错误的方案

问题原因

直接在DelayBlock的延迟时间中引用数据库列(如tabelle1.processing1)时,AnyLogic无法确定要选取哪一行数据(因为列包含多个值),因此抛出“非唯一数据库值”的错误。

解决方案1:为每个Agent分配固定的数据库行索引(适合每个Agent对应唯一延迟时间)

  • 在Agent类型中添加变量
    打开你的Agent类型编辑界面,添加一个整数类型的变量,命名为processingRowIndex,用于存储该Agent对应的Excel表行号。

  • 创建Agent时分配行索引

    • 按顺序分配行:
      在主环境中创建全局整数变量agentRowCounter,初始值设为1;在生成Agent的Source块的“On exit”动作中添加代码:
      agent.processingRowIndex = agentRowCounter;
      // 循环复用行数据的判断逻辑
      if(agentRowCounter < tabelle1.size()){
          agentRowCounter++;
      } else {
          agentRowCounter = 1;
      }
      
    • 随机分配行:
      在Source块的“On exit”动作中直接设置:
      agent.processingRowIndex = uniform_discr(1, tabelle1.size());
      
  • 在DelayBlock中引用对应行的延迟时间
    在DelayBlock的“Delay time”输入框中输入:

    tabelle1.get(agent.processingRowIndex).processing1
    

解决方案2:直接随机选取数据库行(适合每次延迟随机取一个值)

如果不需要每个Agent固定延迟时间,而是每次进入DelayBlock时随机获取Excel中的值,可直接在DelayBlock的“Delay time”中输入:

tabelle1.randomRow().processing1

注意事项

  • 确保Excel数据库已正确导入AnyLogic,且数据库表名称为tabelle1、列名称为processing1,大小写和拼写完全匹配。
  • 使用行索引时,注意AnyLogic数据库的行号从1开始计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:52:12