我正在尝试创建一个返回矩阵中当前访问行的索引值的MiniZinc函数,但是我不知道怎么做,因为我对MiniZinc非常陌生,所以代码可能包含一些错误。
代码将如下所示:
function int: to_Index(array[totVert][4] of int: matrix, int: pid, int: vert, set of int: TOT_VERT) =
forall(int: i in TOT_VERT)
(if matrix[i][0] == pid /\ matrix[i][1] == vert then
% here I would return the current value of i);发布于 2020-01-14 02:13:30
这是一个可能工作的版本,这取决于数据的结构。主要提示是使用exists而不是forall,因为您正在查找一个值。请注意,这是完全未经测试的,因为没有测试数据。
function var int: to_index(array[int,int] of int:matrix, int:pid, int:vert, set of int: TOT_VERT) =
let {
var TOT_VERT: ix;
constraint
exists(i in TOT_VERT) (
if matrix[i,0] = pid /\ matrix[i,1] = vert then
ix = i
endif
);
} in ix
;注意:我还更正了matrix的语法。
https://stackoverflow.com/questions/59720894
复制相似问题