AnyLogic中如何将数据库n×n矩阵导入集合并将行数赋值给变量
AnyLogic 数据库矩阵导入与行数获取操作指南
1. 完整矩阵数据导入集合
默认的单字段导入功能确实不支持整表矩阵读取,你可以通过自定义查询代码实现,操作步骤如下:
- 先创建适配矩阵存储的集合:如果是数值型矩阵,建议创建类型为
ArrayList<ArrayList<Double>>的集合(如果是其他数据类型,修改泛型对应即可) - 在需要触发导入的位置(如模型初始化块、按钮点击动作、自定义函数内)写入以下代码:
// 清空集合旧数据 yourCollectionName.clear(); // 查询读取矩阵对应的整张数据库表 List<Tuple> tableRows = selectQuery("SELECT * FROM 你的矩阵数据表名称"); // 遍历行数据写入集合 for (Tuple row : tableRows) { ArrayList<Double> matrixRow = new ArrayList<>(); // 此处循环上限改为你的矩阵实际列数,示例为4列 for (int colIndex = 1; colIndex <= 4; colIndex++) { matrixRow.add(row.getDouble(colIndex)); } yourCollectionName.add(matrixRow); }
如果是8.5及以上版本,你也可以直接创建Matrix(矩阵)类型的参数,在参数默认值设置中选择「从数据库导入」,选中对应数据表即可一键生成矩阵,无需手动写查询代码。
2. 矩阵行数赋值给变量
两种实现方式可按需选择:
- 已将矩阵导入集合/Matrix参数:直接读取长度属性即可
// 集合场景 A = yourCollectionName.size(); // Matrix参数场景 A = yourMatrixParam.getRowCount();
- 无需提前导入矩阵,直接从数据库查询行数:
A = (int) selectFirstValue("SELECT COUNT(*) FROM 你的矩阵数据表名称");
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

