Я хотел бы выяснить, как написать это ограничение: у меня есть список экзаменов, каждый экзамен имеет продолжительность; конечный результат - отображение реального расписания, в столбцах - доступные часы, четыре часа утра и четыре дня, с двумя часами в середине обеда, которые не будут доступны. Так что позвольте мне сделать это совершенно ясно, если у меня есть два экзамена, и каждый экзамен имеет назначенную продолжительность, я бы хотел показать номер экзамена в расписании, связанный с их продолжительностью, потому что мои переменные являются экзаменами.Minizinc: возможно ли это ограничение?
Например: У меня есть два экзамена и первый занимает один час, вторые три часа
int: Exams;
array[1..Exams] of int: Exams_duration;
int: Slotstime; % number of slots
int: Rooms; % number of rooms
array[1..Slotstime,1..Rooms] of var 0..Exams: Timetable_exams;
%Data
Exams=2;
Exam_duration=[1,3];
Slotstime=4;
Я хотел бы иметь этот выход: [1,2,2,2], а не [ 0,0,0,4] (в вертикальном режиме) Можно ли сделать это в Minizinc? Код для второго выхода является:
constraint forall (p in 1..Rooms)
(
sum (s in 1..Slotstime) (Timetable_exams[s,p])
= sum (f in 1..Exams)(Exams_duration[f])
);
Заранее спасибо
То, что я вижу, теперь изменило вопрос довольно много. Это очень сбивает с толку, поскольку вы уже приняли ответ. Лучше отменить свои изменения в исходном вопросе и написать новый вопрос. – hakank
Вы правы! Вернуться к оригиналу! Это будет полезно для других! – MassinissA