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

IBM CPLEX ILOG报错:Excel范围大小与数组不匹配问题求助

问题排查与解决方案

针对Excel连接时的demand报错问题

  • 检查Excel中demand数据范围的隐藏行/列:CPLEX读取Excel时会自动跳过隐藏行,即便你选中的范围包含266行,若其中有隐藏行,实际读取数量会小于数组定义的大小。取消所有行/列隐藏后重新确认范围。
  • 确认范围引用的绝对正确性:使用绝对引用格式(如Sheet1!$B$2:$B$267),避免相对引用导致范围偏移;同时检查范围是否包含了表头,若表头被误纳入,会导致数据行数多1行。
  • 排查单元格异常格式:检查demand列是否有合并单元格、文本型数字或空值单元格,这类异常会导致CPLEX无法正确识别数据行数量。将所有单元格统一设置为数值格式,确保无空值。
  • 临时验证读取数量:在.dat文件中添加以下代码,运行后查看实际读取的demand数量,对比预期的266:
    execute {
      writeln("实际读取的demand数量: ", demand.size);
    }
    

针对CSV导入后warehouses仅读取265个的问题

  • 检查CSV文件的末尾空行:用文本编辑器打开CSV,确认最后一行是否为有效数据,若存在空行,CPLEX可能会忽略最后一行有效数据。删除多余空行后重新导入。
  • 核对分隔符一致性:确认.dat文件中定义的CSV分隔符(如sep=",")与实际CSV文件的分隔符完全一致,若分隔符不匹配会导致数据读取错位,某一行数据可能被拆分或合并。
  • 检查特殊字符:查看warehouses列是否包含换行符、制表符等特殊字符,这类字符会导致数据行识别错误。替换或删除所有特殊字符后重新生成CSV。
  • 验证warehouses读取数量:同样在.dat文件中添加代码,确认实际读取的数量:
    execute {
      writeln("实际读取的warehouses数量: ", warehouses.size);
    }
    

通用检查项

确认.mod文件中数组的定义维度与数据行数完全匹配,比如demand是否定义为float demand[1..266];,warehouses的索引范围是否对应266个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:07:49