AnyLogic:主实验变量结果传入参数变异实验报错求助
解决DataSet.add()参数类型不匹配的报错
这个错误的核心原因非常直接:你传入的参数类型和方法要求的完全不匹配。
你调用的datasetExp.add()方法,设计初衷是接收单个double类型的数值,但你传进去的root.Pats是一个完整的DataSet对象——也就是你在主实验里用来存储每月患者数的整个数据集集合。方法根本不知道怎么处理一个数据集作为输入,所以直接抛出了类型不兼容的错误提示。
怎么解决?
根据你的需求,分两种情况处理:
情况1:只想记录每次变异运行中特定月份的患者数
比如你想记录每次运行的最后一个月数据,或者某个固定月份的数据,你需要从root.Pats里取出对应的单个double值再传入add():
// 取最后一个月的患者数(假设Pats按月份顺序存储) datasetExp.add(root.Pats.get(root.Pats.size() - 1)); // 或者取第6个月的患者数(索引从0开始,所以是5) datasetExp.add(root.Pats.get(5));
情况2:想把每次变异运行中所有月份的患者数都存入datasetExp
这种情况下,单个的add()方法没法直接处理整个数据集,你需要用批量添加的方式:
- 如果你的
DataSet类支持addAll()方法(很多集合类都有这个方法),直接用:
datasetExp.addAll(root.Pats);
- 如果没有
addAll(),就遍历Pats里的每个数值逐个添加:
for (double monthlyPatients : root.Pats) { datasetExp.add(monthlyPatients); }
小建议
以后遇到这类方法参数报错,先看IDE的代码提示或者类的文档,确认方法要求的参数类型和预期功能,就能快速定位问题啦。
内容的提问来源于stack exchange,提问作者Pedro
相关产品推荐
相关产品推荐

