从矩阵中提取列

时间:2016-12-16 16:28:45

标签: minizinc

在MiniZinc中,我需要从矩阵中提取一列,以便有一个由列值组成的集合。 例如,如果我有这样的表:

1 0 0
6 4 6
3 5 8

我想提取int 1 6 3的集合,以便有一个可以在此集合中流动的索引。是否有命令这样做?

1 个答案:

答案 0 :(得分:2)

您可以将col()函数与array2set()结合使用。这是一个使用固定矩阵“a”的简单模型:

int n: 3;
array[int,int] of int: a = 
    array2d(1..n,1..n,
         [
           1, 0, 0,
           6, 4, 6,
           3, 5, 8,
    ]);

set of int: s1 = array2set(col(a,1));

solve satisfy;
constraint true;
output [
       "col(a,1): \(col(a,1))\n",
       "s1: \(s1)\n"
];

然后输出设置为“{1,3,6}”。