如何在CPLEX中的元组中声明动态数组?

时间:2018-06-22 11:39:47

标签: cplex

我要在CPLEX中声明一个元组数组。元组内部声明了一个2D数组,并且元组数组的每个元素的长度都不相同。但是CPLEX显示错误。我附上了代码片段。谁能帮我这个?

int n=...;
range N=1..n;
tuple info{
     int a;
     int b;
     int box[1..b];
     float d;
 }

 info tuplearray[N]=...;

1 个答案:

答案 0 :(得分:0)

元组集中的所有数组a具有相同的大小。 因此,我将为此使用元组集。

让我给你举个例子:

.mod

int n=4;
range N=1..n;
int m=2;
tuple info{
     int a;
     int b;
     int box[1..m];
     float d;
 }

 info tuplearray[i in N]=...; 

 execute
 {
  writeln(tuplearray);
 }

 tuple boxitem
 {
 int i;
 int j;
 int v; 
 }

 {boxitem} boxitems={<1,1,1>,<2,1,3>,<2,2,4>,<3,1,2>,<4,1,2>};
 int sizes[i in 1..n]=card({t | t in boxitems : t.i==i});

 execute
 {

 writeln(sizes);
  writeln(boxitems);
 }

.dat

tuplearray=[<1,2,[1,2],1.5>,<3,4,[3,2],1.5>,<1,2,[4,2],1.5>,<7,8,[6,2],1.5>,]; 

致谢