using JuMP
# data.jl has our preference matrix, P
include("data.jl");
# Define the model
m =
# Define the variables
# We want every student to be assigned to exactly one section.
# So, every row must have exactly one non-zero entry
# In other words, the sum of all the columns for every row is 1
# We also want each section to have between 6 and 10 students,
# so the sum of all the rows for every column should be between these
# Specify the constraints
# HINT: you can do it with for-loops of
# the other way I mentioned in class ;)
# Our objective is simple sum(X .* P), which can be
# more efficiently represented as vec(X)' * vec(P)
# Since each entry of X is either 0 or 1,
# this is basically summing up the rankings of students
# that were assigned to them.
# If all students got their first choice,
# this value will be the number of students since
# the ranking of the first choice is 1.
# Specify the objective
# Solve it
@time status = solve(m)
println("Objective value: ", getObjectiveValue(m))
# print the value
# should also be 65.0 ...