Я пытаюсь настроить свою проблему PuLP, чтобы у сотрудника не было более 10 часов в день.
Я настроил следующую переменную сотрудника:
cost = []
vars_by_shift = defaultdict(list)
for employee, info in employees.iterrows():
for shift in info['availability']:
employee_var = pl.LpVariable("%s_%s" % (employee, shift), 0, 1, pl.LpInteger)
vars_by_shift[shift].append(employee_var)
cost.append(employee_var * info['base_rate'])
Моя цель - минимизировать затраты:
prob = pl.LpProblem("scheduling", pl.LpMinimize)
prob += sum(cost)
Пример моих данных смены:
"76749": {
"start_date": "2019-08-14",
"start_time": "08:00",
"end_date": "2019-08-14",
"end_time": "12:00",
"duration": 4,
"number_positions": 1
},
"76750": {
"start_date": "2019-08-14",
"start_time": "13:00",
"end_date": "2019-08-14",
"end_time": "20:00",
"duration": 7,
"number_positions": 1
}
Иногда сотруднику может быть назначено две короткие смены в один и тот же день. Я хочу, чтобы общее количество часов в реестре сотрудников в любой день не превышало 10 часов. Как смоделировать это ограничение?