Problem:bacp Data n_courses := 66; n_periods := 9; load_per_period_lb := 10; load_per_period_ub := 24; courses_per_period_lb := 2; courses_per_period_ub := 10; dew100 := 1; fis100 := 2; hcw310 := 3; iwg101 := 4; mat111 := 5; mat121 := 6; dew101 := 7; fis110 := 8; iwi131 := 9; mat112 := 10; mat122 := 11; dewxx0 := 12; fis120 := 13; hcw311 := 14; hxwxx1 := 15; ili142 := 16; mat113 := 17; mat123 := 18; fis130 := 19; ili134 := 20; ili151 := 21; iwm185 := 22; mat124 := 23; fis140 := 24; hxwxx2 := 25; ile260 := 26; ili260 := 27; iwn170 := 28; qui104 := 29; ili231 := 30; ili243 := 31; ili252 := 32; ili273 := 33; mat210 := 34; mat260 := 35; ild208 := 36; ili221 := 37; ili274 := 38; ili281 := 39; iwn270 := 40; mat270 := 41; hrw150 := 42; ili238 := 43; ili242 := 44; ili275 := 45; ili355 := 46; hrw110 := 47; ici393 := 48; ili237 := 49; ili334 := 50; ili363 := 51; iwn261 := 52; hrw100 := 53; ici382 := 54; ili331 := 55; ili362 := 56; ili381 := 57; iln230 := 58; ici313 := 59; ici315 := 60; ici332 := 61; ici344 := 62; icn336 := 63; iwi365 := 64; ici314 := 65; ici367 := 66; Domains Dom courses=[1..n_courses]; Dom zeroone=[0..1]; Dom periods=[1..n_periods]; Dom addload=[load_per_period_lb..load_per_period_ub]; Dom addcourses=[courses_per_period_lb..courses_per_period_ub]; Dom load=[1..5]; Dom load_ext=[0..5]; Variables IntVar course_load[n_courses]::load; IntVar acourses[n_courses]::periods; IntVar mload[n_courses,n_periods]::load_ext; IntVar load_per_period[n_periods]::addload; IntVar course_per_period[n_periods]::addcourses; Constraints course_load[1]=1; course_load[2]=3; course_load[3]=1; course_load[4]=2; course_load[5]=4; course_load[6]=4; course_load[7]=1; course_load[8]=5; course_load[9]=3; course_load[10]=4; course_load[11]=4; course_load[12]=1; course_load[13]=4; course_load[14]=1; course_load[15]=1; course_load[16]=4; course_load[17]=4; course_load[18]=4; course_load[19]=4; course_load[20]=4; course_load[21]=3; course_load[22]=3; course_load[23]=4; course_load[24]=4; course_load[25]=1; course_load[26]=3; course_load[27]=3; course_load[28]=3; course_load[29]=3; course_load[30]=3; course_load[31]=4; course_load[32]=4; course_load[33]=3; course_load[34]=4; course_load[35]=4; course_load[36]=3; course_load[37]=4; course_load[38]=3; course_load[39]=3; course_load[40]=3; course_load[41]=4; course_load[42]=2; course_load[43]=4; course_load[44]=3; course_load[45]=3; course_load[46]=4; course_load[47]=2; course_load[48]=4; course_load[49]=4; course_load[50]=4; course_load[51]=3; course_load[52]=3; course_load[53]=2; course_load[54]=4; course_load[55]=4; course_load[56]=3; course_load[57]=3; course_load[58]=3; course_load[59]=2; course_load[60]=2; course_load[61]=3; course_load[62]=4; course_load[63]=3; course_load[64]=3; course_load[65]=2; course_load[66]=2; acourses[dew101] < acourses[dew100]; acourses[fis110] < acourses[fis100]; acourses[fis110] < acourses[mat121]; acourses[mat112] < acourses[mat111]; acourses[mat122] < acourses[mat111]; acourses[mat122] < acourses[mat121]; acourses[dewxx0] < acourses[dew101]; acourses[fis120] < acourses[fis110]; acourses[fis120] < acourses[mat122]; acourses[hcw311] < acourses[hcw310]; acourses[ili142] < acourses[iwi131]; acourses[mat113] < acourses[mat112]; acourses[mat113] < acourses[mat122]; acourses[mat123] < acourses[mat112]; acourses[mat123] < acourses[mat122]; acourses[fis130] < acourses[fis110]; acourses[fis130] < acourses[mat122]; acourses[ili134] < acourses[iwi131]; acourses[ili151] < acourses[mat112]; acourses[mat124] < acourses[mat113]; acourses[mat124] < acourses[mat123]; acourses[fis140] < acourses[fis120]; acourses[fis140] < acourses[fis130]; acourses[ile260] < acourses[fis120]; acourses[ile260] < acourses[mat124]; acourses[ili231] < acourses[iwi131]; acourses[ili252] < acourses[iwi131]; acourses[ili273] < acourses[ili260]; acourses[mat210] < acourses[mat113]; acourses[mat260] < acourses[iwi131]; acourses[mat260] < acourses[mat113]; acourses[mat260] < acourses[mat123]; acourses[ili221] < acourses[ili134]; acourses[ili221] < acourses[ili231]; acourses[ili221] < acourses[mat260]; acourses[ili274] < acourses[ili273]; acourses[ili281] < acourses[mat260]; acourses[mat270] < acourses[iwi131]; acourses[mat270] < acourses[mat113]; acourses[mat270] < acourses[mat123]; acourses[ili238] < acourses[ili134]; acourses[ili242] < acourses[ili142]; acourses[ili275] < acourses[ili274]; acourses[ili355] < acourses[ili221]; acourses[hrw110] < acourses[hrw150]; acourses[ici393] < acourses[mat210]; acourses[ici393] < acourses[mat260]; acourses[ili237] < acourses[ili231]; acourses[ili237] < acourses[ili252]; acourses[ili334] < acourses[ili238]; acourses[ili363] < acourses[ili273]; acourses[hrw100] < acourses[hrw110]; acourses[ici382] < acourses[ili334]; acourses[ili331] < acourses[ili238]; acourses[ili331] < acourses[ili274]; acourses[ili362] < acourses[ili363]; acourses[ili381] < acourses[ili281]; acourses[ili381] < acourses[mat210]; acourses[iln230] < acourses[iwn170]; acourses[ici313] < acourses[ili331]; acourses[ici332] < acourses[ici393]; acourses[ici332] < acourses[ili331]; acourses[ici344] < acourses[ili243]; acourses[icn336] < acourses[ici393]; acourses[ici314] < acourses[ici313]; Forall(t in [1..n_periods]) { Count( [ acourses[j] | j in [1..n_courses] ], t, course_per_period[t]); Forall(c in [1..n_courses]) { If_Then_Else( acourses[c] = t ) { mload[c,t] = course_load[c]; } { mload[c,t] = 0;}; } Sum( [ mload[i,t] | i in [1..n_courses] ], load_per_period[t] ); }