param d, integer, >0; param p, integer, >0; param n, integer, >0; param m, integer, >0; param l{ i in {1..n}, dl in {1..d}, pl in {1..p} }, binary, default 1; param e { i in {1..n}, j in {1..m} }, integer, >= 0, default 0; var x{i in {1..n}, j in {1..m}, dl in {1..d}, pl in {1..p} }, binary; s.t. allocate{ i in {1..n}, j in {1..m} } : sum{ dl in {1..d}, pl in {1..p} } x[i,j,dl,pl] = e[i,j]; /* coloque suas restrições aqui */ solve; printf "\n\ntimetables for teachers\n\n" ; for { i in {1..n} } { printf "teacher %3d ", i; for { dl in {1..d } } { printf "|"; for { pl in {1..p} } { printf "%4d", sum{ j in {1..m} } j*x[i,j,dl,pl]; } } printf " |\n"; } printf "\n\ntimetables for classes\n\n" ; for { j in {1..m} } { printf "class %3d ", j; for { dl in {1..d } } { printf "|"; for { pl in {1..p} } { printf "%4d", sum{ i in {1..n} } i*x[i,j,dl,pl]; } } printf " |\n"; } end;