Download
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