Если для каждого водителя обязательна работа 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 *, но в этом случае целевая функция должна сделать это автоматически.
См. эту ссылку здесь:
http://mindprod.com/products2.html#SPEAKER
Это содержит источник Java и DLL для достижения функциональности, которой Вы требуете. Это испускает различные звуки от внутреннего динамика компьютера на определенной частоте на данное время. Проверьте пример Доброго старого времени:) Это использует JNI для достижения этого с включенным DLL.
btw.. Я не полагаю, что использование инструментария надежно. Это не произвело вывод на моем ПК.
Если Вы на 100% уверены, что будете поддерживать только окна, можно всегда называть соответствующий метод OS с помощью JNA