Условное ограничение линейного программирования

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()
0
задан Rakesh Goyal 19 March 2019 в 14:09
поделиться

1 ответ

Если для каждого водителя обязательна работа 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 *, но в этом случае целевая функция должна сделать это автоматически.

0
ответ дан kozo 19 March 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: