AnyLogic系统动力学模型动态变量关联降水数据库报错求助
报错原因
你定义getrainfall函数时未设置输入参数,调用时传入了time()生成的double类型参数,参数数量不匹配触发报错。且现有实现逻辑冗余,无需额外封装自定义函数。
原有方案修复步骤
- 打开
getrainfall函数编辑界面,新增1个输入参数:参数名设为currentDay,类型选择double - 将函数体修改为
return ProjectedRainfall(currentDay); - 你也可以省略自定义函数步骤,直接将动态变量
Rainfall的值设置为ProjectedRainfall(time()),tableFunction本身支持直接传入参数调用
提示:请确保仿真时间单位与数据库
day列的单位保持一致,若仿真时间单位不是天,需先对time()返回值做单位转换后再传入。
替代实现方案(配置更简洁,不用tableFunction)
你可以直接通过AnyLogic内置数据库查询函数获取对应降水量,动态变量Rainfall的值直接设置为如下代码即可:
// 请将代码中的<降水表名>替换为你导入Excel后生成的数据库表实际名称 selectFrom(<降水表名>) .where(<降水表名>.day.eq(time())) .uniqueResult(<降水表名>.precipitation, 0.0)
代码末尾的0.0为查询无匹配结果时的默认返回值,你可根据业务需求调整。
内容的提问来源于stack exchange,提问作者Vianey Rueda
相关产品推荐
相关产品推荐

