MiniZin c: ошибка типа: функция или предикат с этой сигнатурой не найдены: `cost (var int, var int) ' - PullRequest
1 голос
/ 29 марта 2020
int: W;
set of int: COL  = 1..W;
int: H; 
set of int: ROW  = 1..H;
array[ROW,COL] of int: cost;
int: budget; 
array[1..budget] of  var COL: x;
array[1..budget] of  var ROW: y;
array[1..budget] of  int: c;

...
constraint forall(i in 1..budget)(c[i]=cost(x[i],y[i]));

Minizin c имеет отчет об ошибке типа для ограничения: функция или предикат с этой сигнатурой не найдены: `cost (var int, var int) '. Как я могу присвоить значение от стоимости массива массиву c, используя x, y?

1 Ответ

2 голосов
/ 30 марта 2020

cost объявляется как массив, а не функция. Это означает, что MiniZin c ожидает, что вы будете использовать его в квадратных скобках, т.е. cost[x[i], y[i]]. Поскольку в настоящее время вы используете скобки, MiniZin c считает, что cost(x[i],y[i]) - это вызов функции.

...