【发布时间】:2022-10-02 03:37:24
【问题描述】:
我正在使用 IBM Ilog Studio/OPL。
我想将一个元组转换为一个(4D)数组。 之前已经提出过类似的问题,但给定的答案在可能的情况下不起作用,我找不到原因。这里是链接。
How to represent and read 4D array in Opl Cplex from Excel
从 excel 中读取元组是有效的(我检查了“开始”是否正确读取)。 mod中的元组。文件定义为:
tuple mipstart {
int i;
int q;
int d;
int k;
int value; }
{mipstart} start =...;
int valuemip[I][Q][D][K];
execute
{
for(var x in start) valuemip[x.i][x.q][x.d][x.k]=x.value;
}
我得到的错误消息是“valuemip#0 超出了有效范围 (0)。”索引 (I,Q,D,K) 都被声明为以 1 开头的范围...... 换句话说,我正在尝试从元组开始构建 4D 数组 \"valuemip\"。
(更多信息:在 .dat 文件中,\"test\" 是命名数据空间 --> 有效)
start from SheetRead (sheet, \"test\");
我是使用元组的新手,以前主要使用 IBM Ilog Studio 的“基本学生”使用(在 mod 文件中编写模型(主要使用数组),并具有从 Excel 读取数据的相应 dat 文件)。
欢迎任何帮助。
-
不要采取错误的方式,但经验表明将一组元组转换为 am 数组几乎总是倒退。如果您使用元组集而不是数组,大多数模型最终会变得更简单、更清晰。试试看 - 你可能会喜欢它。