Java 如何在OPL ILOG studio上正确加载2×2矩阵而不出错?
我正在从oplstudio中的数据文件加载一个2乘2的矩阵,并使用以下脚本Java 如何在OPL ILOG studio上正确加载2×2矩阵而不出错?,java,cplex,opl,Java,Cplex,Opl,我正在从oplstudio中的数据文件加载一个2乘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",
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;
我使用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();
}
我会解析你所有的数字,然后你可以做任何你需要的事情
问候
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();
}