J2ni2Cmax

Материал из Викиконспекты
Версия от 22:11, 22 июня 2013; 194.85.161.2 (обсуждение) (Описание алгоритма)
Перейти к: навигация, поиск

Постановка задачи

Рассмотрим задачу:

  1. Дано n работ и 2 станка.
  2. Для каждой работы известно её время выполнения на каждом станке pij.
  3. Для каждой работы известна последовательность Oik станков - порядок, в котором нужно выполнить работу.
  4. Для любой работы ni (Длина последовательности Oi) <=2.

Требуется минимизировать время окончания выполнения всех работ.

Описание алгоритма

M1 - первый станок. M2 - второй станок.

Разобьем все работы на четыре множества:

  1. I1 - множество всех работ, которые должны выполниться только на M1.
  2. I2 - множество всех работ, которые должны выполниться только на M2.
  3. I12 - множество всех работ, которые должны выполниться сначала на M1 затем на M2.
  4. I21 - множество всех работ, которые должны выполниться сначала на M2 затем на M1.

Решим задачу F2∣∣Cmax для I12 и для I21 независимо. Получим расписание S12 и S21.

Тогда оптимальное расписание для нашей задачи будет следующим:

  • Расписание M1 : сначала I12 в соответсвии с расписанием S12. Затем I1 в произвольном порядке. Затем I21 в соответсвии с S21.
  • Расписание M2 : сначала I21 в соответсвии с расписанием S21. Затем I2 в произвольном порядке. Затем I12 в соответсвии с S12.

Примечание: во время выполнения I21 на M1 или I12 на M2 могут возникнуть простои из-за того, что работа ещё не выполнилась на предыдущем станке.

Доказательство корректности алгоритма

Tj(x) - время выполнения множества работ x на станке j.

Gj - множество всех работ, которые нужно сделать хотя бы раз на j-м станке. (Формально G1=I1I12I21)

Лемма:
Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев.
Доказательство:

Рассмотрим 2 случая:

  • T1(I12)+T1(I1)>=T2(I21). Тогда M1 работает без прерываний, т.к к моменту завершения выполнения I1 на M1 все работы I21 выполнены на M2.
  • Иначе T1(I12)+T1(I1)<T2(I21). Тогда M2 работает без прерываний, т.к к моменту завершения выполнения I2 на M2 все работы I12 выполнены на M1 .
Теорема:
Расписание, построенное данным алгоритмом, является корректным и оптимальным.
Доказательство:
Рис. 1 - Расположение работ.
В серой области могут быть прерывания.

Корректность алгоритма очевидна. Докажем оптимальность.

Пусть, для опеределенности M1 работает без прерываний.

Рассмотрим станок на котором достигается Cmax .

  • Если это M1, то оптимальность очевидна (Cmax>=iG1pi1).
  • Иначе Cmax достигается на M2. Тогда либо M2 работает без прерываний и оптимальность очевидна. Или есть прерывания. Тогда целевая функция равна ответу задачи F2∣∣Cmax для работ I21, который оптимален.

Сложность алгоритма

Время работы алгоритма равно времени работы алгоритма F2∣∣Cmax.

Сложность алгоритма O(nlogn).