【发布时间】:2014-11-20 09:36:31
【问题描述】:
我想弄清楚如何编写这个约束:我有一个考试列表,每个考试都有一个持续时间;最终输出是显示一个实时时间表,列中有可用时间,早上四点和下午四点,午餐中间有两个小时不可用。所以,让我做这很清楚,如果我有两门考试并且每门考试都有指定的持续时间,我想在时间表中显示与考试持续时间相关的考试编号,因为我的变量是考试。
例如:我有两次考试,第一次需要一个小时,第二次需要三个小时
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])
);
提前致谢
【问题讨论】:
-
我可以看到你现在已经改变了这个问题。这很令人困惑,因为您已经接受了答案。最好撤销对原始问题的更改并编写一个新问题。
-
你是对的!回到原来的!它会对其他人有用!
标签: constraints constraint-programming check-constraints minizinc