I stumbled upon a piece of software that I'd like to convert from Julia to Python (don't have much experience with Julia). The main problem I'm having is I don't understand exactly what is going on in the section I've marked with comments #PROBLEM BELOW/ABOVE
skaters_teams is a 180 x 10 matrix (180 skaters and 10 teams) and the team is stored as a binary array where skaters_teams[0] gives the array of player 0 ex:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0].
m = Model(solver=GLPKSolverMIP())
# Variable for skaters in lineup
@defVar(m, skaters_lineup[i=1:num_skaters], Bin)
# Variable for goalie in lineup
@defVar(m, goalies_lineup[i=1:num_goalies], Bin)
# One goalie constraint
@addConstraint(m, sum{goalies_lineup[i], i=1:num_goalies} == 1)
# Eight Skaters constraint
@addConstraint(m, sum{skaters_lineup[i], i=1:num_skaters} == 8)
# between 2 and 3 centers
@addConstraint(m, sum{centers[i]*skaters_lineup[i], i=1:num_skaters} <= 3)
@addConstraint(m, 2 <= sum{centers[i]*skaters_lineup[i], i=1:num_skaters})
# between 3 and 4 wingers
@addConstraint(m, sum{wingers[i]*skaters_lineup[i], i=1:num_skaters} <= 4)
@addConstraint(m, 3<=sum{wingers[i]*skaters_lineup[i], i=1:num_skaters})
# between 2 and 3 defenders
@addConstraint(m, 2 <= sum{defenders[i]*skaters_lineup[i], i=1:num_skaters})
@addConstraint(m, sum{defenders[i]*skaters_lineup[i], i=1:num_skaters} <= 3)
# Financial Constraint
@addConstraint(m, sum{skaters[i,:Salary]*skaters_lineup[i], i=1:num_skaters} + sum{goalies[i,:Salary]*goalies_lineup[i], i=1:num_goalies} <= 50000)
# exactly 3 different teams for the 8 skaters constraint
@defVar(m, used_team[i=1:num_teams], Bin)
#PROBLEM BELOW
@addConstraint(m, constr[i=1:num_teams], used_team[i] <= sum{skaters_teams[t, i]*skaters_lineup[t], t=1:num_skaters})
@addConstraint(m, constr[i=1:num_teams], sum{skaters_teams[t, i]*skaters_lineup[t], t=1:num_skaters} <= 6*used_team[i])
#PROBLEM ABOVE
@addConstraint(m, sum{used_team[i], i=1:num_teams} == 3)
Is it looping like so:
for i in range(num_teams):
for t in range(num_skaters):
m += sum(skaters_teams[i][t]*skaters_lineup[t]) >=ut[i]
m += sum(skaters_teams[i][t]*skaters_lineup[t]) <=6*ut[i]
Also I can't find any documentation on using 3 parameters with @addConstraint
. The first is the problem you're adding it to and the third is the constraint you're adding. What is the second?
@addConstraint(m, constr[i=1:num_teams], sum{skaters_teams[t, i]*skaters_lineup[t], t=1:num_skaters} <= 6*used_team[i])