import datetime
def date_generator():
cur = base = datetime.date.today()
end = base + datetime.timedelta(days=100)
delta = datetime.timedelta(days=1)
while(end>base):
base = base+delta
print base
date_generator()
Если для каждого водителя обязательна работа 7,6ч, то нет необходимости ставить его в условия. Это просто статическое время (стоимость), которое может быть вычтено из общего количества часов (затрат), потому что оно всегда происходит:
195 - (NumDrivers * 7.6) = - это оставшееся время, которое необходимо гибко распределить между водителями как их сверхурочное время достигает 195 часов (когда общее количество часов> NumDrivers * 7,6).
Я представлял бы каждого водителя с двумя переменными (одна для времени, работающего на скорости 1,5, а вторая для рабочего времени на двойной скорости) и делала следующее LP:
Xij = представляет часы, отведенные для i-driver в j- рабочий режим (скажем, j = 1 для 1,5 и j = 2 для 2)
На основе предоставленного входного файла:
<час>Мин. Z = 70 * 1,5 * X11 + 70 * 2 * X12 + 22 * 1,5 * X21 + 22 * 2 * X22 + ... 62 * 1,5 * X221 + 62 * 2 * X222
Ограничения:
[ 117] X11 + X12 + X21 + X22 + ... X221 + X222 = 27,8 (195 - (22 * 7,6))
X11 + X12 = 3,4 X21 + X22 < = 3,4 ... X221 + X222 = 3,4
X11 = 2 X21 = 2 ... X221 = 2
Для полноты также должны быть набор условий, представляющих, что каждый водитель может начать работу в режиме j (2 *) только после завершения 2 часов при 1,5 *, но в этом случае целевая функция должна сделать это автоматически.