Я использовал minizinc, чтобы запрограммировать код планирования смены, указанный ниже. Однако произошла ошибка с сообщением об ошибке: MiniZinc: ошибка типа: не найдено ни функции, ни предиката с этой сигнатурой: `forall (array [int] of var int) '
Я хотел бы посеять вашу помощь, чтобы выяснить причину. Большое спасибо
include "globals.mzn";
include "regular.mzn";
int: No_Shift = 7 ;
int: Hour = 24 ;
int: Cap = 30 ;
array[1..No_Shift , 1..Hour] of int: Shift_Available = [|1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
|0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
|0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,
|0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
|0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0|];
array[1..Hour] of int: Demand = [10,8,12,16,18,25,28,30,30,30,30,25,26,27,30,30,30,30,26,22,17,14,10,8];
array[1..No_Shift] of var 0..30: Shift_Assigned;
constraint forall(i in 1..No_Shift)(Shift_Assigned[i]>=0);
constraint forall(i in 1..Hour)(
sum(j in 1..No_Shift)
(Shift_Assigned[j]*Shift_Available[j,i])<=Cap);
solve minimize forall(i in 1..Hour)(
sum(j in 1..No_Shift)
(Shift_Assigned[j]*Shift_Available[j,i])-Demand[i]);