Как установить максимальное количество дней подряд в OR-Tools CP-SAT?
Я управляю рабочими днями сотрудников. Если сотрудник работает {consecutive_count} дней подряд, ему предоставляются выходные {rest}.
ex)
Я придумал следующий код, но он не работает должным образом .
В чем может быть проблема?
from ortools.sat.python import cp_model
model = cp_model.CpModel()
employees = ["daniel","karla","sergio"]
dates=["12/1","12/2","12/3",...,"12/31"]
assignments = {}
for e in range(len(employees)):
for d in range(len(dates)):
assignments[(e, d)] = model.NewBoolVar(f"employee_{e}_dates_{d}")
# HERE IS MY CONSTRAINT PROBLEM
consecutive_count=4
rest=2
for e in range(len(employees)):
for d in range(len(dates) - consecutive_count-rest*2 +1):
model.Add(sum(assignments[(e, d+i )] for i in range(consecutive_count+rest*2))
Как установить максимальное количество дней подряд в OR-Tools CP-SAT? Я управляю рабочими днями сотрудников. Если сотрудник работает {consecutive_count} дней подряд, ему предоставляются выходные {rest}. ex) [list] [*]ОК [[b]0,1,1,1,1,0,0[/b],1,0,0,0,1,1,1,0,...] [*]НЕУДАЧА [0,0, ** 1,1,1,1,0, ** 1,0,0,1,0,...] [*]НЕУДАЧА [0,0, ** 1,1,1,1,1, ** 0,0 ,1,0,0,1,0,...] [/list] Я придумал следующий код, но он не работает должным образом . В чем может быть проблема? from ortools.sat.python import cp_model
model = cp_model.CpModel() employees = ["daniel","karla","sergio"] dates=["12/1","12/2","12/3",...,"12/31"] assignments = {} for e in range(len(employees)): for d in range(len(dates)): assignments[(e, d)] = model.NewBoolVar(f"employee_{e}_dates_{d}")
# HERE IS MY CONSTRAINT PROBLEM consecutive_count=4 rest=2 for e in range(len(employees)): for d in range(len(dates) - consecutive_count-rest*2 +1): model.Add(sum(assignments[(e, d+i )] for i in range(consecutive_count+rest*2))
Как установить максимальное количество дней подряд в OR-Tools CP-SAT?
Я управляю рабочими днями сотрудников. Если сотрудник работает {consecutive_count} дней подряд, ему предоставляются выходные {rest}.
ex)
Как установить максимальное количество дней подряд в OR-Tools CP-SAT?
Я управляю рабочими днями сотрудников. Если сотрудник работает {consecutive_count} дней подряд, ему предоставляются выходные {rest}.
ex)
В задаче, которую я пытаюсь решить, у меня есть список логических переменных длиной n с именем x . Учитывая целое число m, где m 0 then LinearExpr.Sum(x ) == 0
if LinearExpr.Sum( x ) > 0 then LinearExpr.Sum(x ) == 0