1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | language Essence 1.3 $ prob030.essence: Balanced Academic Curriculum Problem $ Problem details available at http://www.csplib.org/Problems/prob030/ $ 07 September 2007 $ given n_courses, n_periods, load_per_period_lb, load_per_period_ub, courses_per_period_lb, courses_per_period_ub : int (1..) letting Course be domain int (1..n_courses), Period be domain int (1..n_periods) given prerequisite : relation of (Course * Course), course_load : function ( total ) Course --> int (1..) find curr : function ( total ) Course --> Period such that forAll c1,c2 : Course . prerequisite(c1,c2) -> curr(c1) < curr(c2), forAll p : Period . ( sum c in preImage (curr,p) . course_load(c)) <= load_per_period_ub /\ ( sum c in preImage (curr,p) . course_load(c)) >= load_per_period_lb, forAll p : Period . | preImage (curr,p)| <= courses_per_period_ub /\ | preImage (curr,p)| >= courses_per_period_lb |