我有下面的代码在数据文件中写入数组值,然后在相同模型的相同数据文件的另一个数组中再次读取它的值,但它给了我一个错误"数据元素示例已经设置"如何解决这个问题。由于
range Number= 0..6;
int Example [i in Number]=i;
execute
{
var o=new IloOplOutputFile("Example.dat");
o.writeln("Example=");
o.writeln(Example);
o.writeln(";");
o.close();
}
main {
var source = new IloOplModelSource("Write and read from the data file.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
var opl = new IloOplModel(def,cplex);
var data = new IloOplDataSource("Example.dat");
opl.addDataSource(data);
opl.generate();
if (cplex.solve())
{
writeln("OBJ = " + cplex.getObjValue());
}
else
{
writeln("No solution");
}
}
如果你有sub.mod
subject to
{
}
range Number= 0..6;
int Example [i in Number]=i;
execute
{
var o=new IloOplOutputFile("Example.dat");
o.writeln("Example=");
o.writeln(Example);
o.writeln(";");
o.close();
}
和sub2.mod
range Number= 0..6;
int Example [i in Number]=...;
dvar int obj;
subject to
{
obj==sum(i in Number) Example[i];
}
execute
{
writeln("obj=",obj);
}
,然后。mod
main {
var source = new IloOplModelSource("sub.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
var opl = new IloOplModel(def,cplex);
opl.generate();
cplex.solve();
opl.postProcess();
var source2 = new IloOplModelSource("sub2.mod");
var def2 = new IloOplModelDefinition(source2);
var opl2 = new IloOplModel(def2,cplex);
var data2 = new IloOplDataSource("Example.dat");
opl2.addDataSource(data2);
opl2.generate();
if (cplex.solve())
{
writeln("OBJ = " + cplex.getObjValue());
}
else
{
writeln("No solution");
}
opl2.postProcess();
}
为
OBJ = 0
obj=21
且只有一个。mod
sub.mod
range Number= 0..6;
int ExampleIn [i in Number]=...;
dvar int obj;
subject to
{
obj==sum(i in Number) ExampleIn[i];
}
execute
{
writeln("obj=",obj);
}
int ExampleOut [i in Number]=i+obj;
execute
{
var o=new IloOplOutputFile("Example.dat");
o.writeln("ExampleIn=");
o.writeln(ExampleOut);
o.writeln(";");
o.close();
}
Example.dat
ExampleIn=
[21 22 23 24 25 26 27]
;
然后
main {
var source = new IloOplModelSource("sub.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
var data= new IloOplDataSource("Example.dat");
var opl = new IloOplModel(def,cplex);
opl.addDataSource(data);
opl.generate();
cplex.solve();
opl.postProcess();
var source2 = new IloOplModelSource("sub.mod");
var def2 = new IloOplModelDefinition(source2);
var opl2 = new IloOplModel(def2,cplex);
var data2 = new IloOplDataSource("Example.dat");
opl2.addDataSource(data2);
opl2.generate();
if (cplex.solve())
{
writeln("OBJ = " + cplex.getObjValue());
}
else
{
writeln("No solution");
}
opl2.postProcess();
}
为
obj=0
OBJ = 0
obj=21