AnyLogic中从数据库调用速率时模型崩溃问题求助
解决AnyLogic按日期配置流转速率时的数据库空值错误
我需要为AnyLogic模型的每一天配置不同的流转速率,于是创建了数据表,在流转(transition)中通过date()函数基于模型日期获取对应速率。模型仅能正常运行8小时左右就崩溃,抛出如下错误:
Exception during discrete event execution: root.houses[1423]: Empty database value result! java.lang.RuntimeException: root.houses[1423]: Empty database value result! at com.anylogic.engine.Engine.error(Unknown Source) at com.anylogic.engine.Agent.error(Unknown Source) at com.anylogic.engine.Utilities.error(Unknown Source) at com.anylogic.engine.Utilities.getResult(Unknown Source) at com.anylogic.engine.Utilities.selectUniqueValue(Unknown Source) at com.anylogic.engine.Utilities.selectUniqueValue(Unknown Source) at adr01.House.evaluateRateOf(House.java:285) at com.anylogic.engine.TransitionRate.start(Unknown Source) at adr01.House.enterState(House.java:204) at adr01.House.executeActionOf(House.java:318) at com.anylogic.engine.TransitionMessage.execute(Unknown Source) at com.anylogic.engine.Engine.a(Unknown Source) at com.anylogic.engine.Engine.ln(Unknown Source) at com.anylogic.engine.Engine$m.run(Unknown Source)
相关流程图与数据表截图:

禁用数据表改用固定速率时模型可正常运行,确认问题源于数据库引用环节,解决方案如下:
统一日期匹配格式:
date()函数返回的日期默认包含时间部分(时分秒),而数据表中的日期可能只有年月日,导致8小时后模型日期的时间部分变化,匹配失败返回空值。用toDate(date(), "yyyy-MM-dd")格式化模型日期,去掉时间部分后再执行查询,确保格式与数据表完全一致。添加空值 fallback 机制:
在查询速率的代码中加入默认值处理,避免空值引发崩溃。示例代码:// 替换yourDataTable为你的数据表名称,defaultRate为预设默认速率 String targetDate = toDate(date(), "yyyy-MM-dd"); Double rate = selectUniqueValue(yourDataTable, "rate", "date = '" + targetDate + "'"); return rate != null ? rate : defaultRate;检查数据表完整性:
- 确认数据表覆盖了模型运行的所有日期范围,避免模型运行到无对应记录的日期时返回空值。
- 检查日期列是否存在重复记录或格式错误,
selectUniqueValue要求查询结果唯一,重复记录也可能引发异常;同时确保所有日期格式统一,无空值。
调试查询过程:
在流转速率的代码中添加trace输出,查看每次查询的日期和结果,定位问题日期:String targetDate = toDate(date(), "yyyy-MM-dd"); trace("当前查询日期:" + targetDate); Double rate = selectUniqueValue(yourDataTable, "rate", "date = '" + targetDate + "'"); trace("查询到的速率:" + rate); return rate != null ? rate : defaultRate;通过AnyLogic的Trace窗口查看输出,明确哪一次查询返回了空值,针对性修复数据或逻辑。
内容的提问来源于stack exchange,提问作者Toni Gliege
相关产品推荐
相关产品推荐

