如何在 OPL ILOG studio 上正确加载 2 x 2 矩阵而不会出现错误?

How can I load correctly a 2 by 2 matrix on OPL ILOG studio without an error?

我正在从 OPL studio 中的数据文件加载一个 2 x 2 矩阵并使用以下脚本

P=5;
Customers={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50"};
Warehouses={"A","B","C","D","E"};
Demand=[3,14,1,14,19,2,14,6,7,6,10,18,3,6,20,4,14,11,19,15,15,4,13,13,5,16,3,7,14,17,3,3,12,14,20,13,10,9,6,18,7,20,9,1,8,5,1,7,9,2];
prepare { 
   function read(element, name) {
      var customDataSource = 
IloOplCallJava("externaldatasource.SimpleTextReader","<init>", "(Ljava.lang.String;Ljava.lang.String;)V","C:/Users/Brian/opl/ccp/data.txt", ",");
      customDataSource.fillOplElement(element);
      return true;
   }   
}

Distance = invoke read;

我收到 "Data parsing error: syntax error, unexpected prepare, expecting $end" 我想从具有以下格式的文件数据加载并将其从文件读取到 OPL studio

0    86    42    67    54    76    78   107   100    57
42    93    44    21    25    35    56    16    60   101
10    54    58    72    82    60    58    72    43    67
70    15    36    61   102    14    69    64    23    83
19    52    94    10    62    50    69    53    52     4


86     0    76    23    47    18    60    23    16    51
70     7    62    97    63    75    51    70    37    19
75    49    74    27    32    71    28    30    47    43
42    86    72    80    16    77    21    46    63     6
94    81    15    78    62    87    47    72    42    85

我使用 OPL 文档开发了上面的脚本

您可以在您的模型中进行解析。 假设您的文字在 toto.txt

int N=10;

execute
{
var f=new IloOplInputFile("toto.txt");
var str1=f.readline();
var str2=f.readline();
var rank=1;
while (!f.eof)
{
var str=f.readline();
while (str.charAt(0)==" ") str=str.substring(1);
writeln(str);
var ar=new Array(N+1);
var arindex=0;
while (str.indexOf(" ")!=-1)
{
   ar[arindex]=str.substring(0,str.indexOf(" "));
   writeln(ar[arindex]);
   str=str.substring(str.indexOf(" ")+1);
   while (str.charAt(0)==" ") str=str.substring(1);
   arindex++;
}

ar[arindex]=str;
writeln(ar[arindex]);
rank++;
}
f.close();
}

将解析你所有的数字,然后你可以做任何你想做的事 此致