Search code examples
pythonmaxminor-tools

Use AddMaxEquality to find the max sum of bools


How can one use AddMinEquality and AddMaxEquality to distribute assignments evenly? My model variables are boolean, hence I try to minimize difference between maximum and minimum of sum of bools.

assignments = []
for c in cars:
    a = model.NewIntVar(0, total_assignments, c)
    model.Add(a == sum(car_sch[(d, c)] for d in days))
    assignments.append(a)

assignment_min = model.AddMinEquality(assignments)  
assignment_max = model.AddMaxEquality(assignments)

model.Minimize(assignment_max - assignment_min)

Solution

  • After some testing

    assignments = []
    for c in cars:
        a = model.NewIntVar(0, total_assignments, c)
        model.Add(a == sum(car_sch[(d, c)] for d in days))
        assignments.append(a)
    
    min_value = model.NewIntVar(0, total_assignments, "min val") 
    assignment_min = model.AddMinEquality(assignments) 
    max_value = model.NewIntVar(0, total_assignments, "max val") 
    assignment_max = model.AddMaxEquality(assignments)
    
    model.Minimize(max_value - min_value)