Метод ветвей и границ для задачи календарного планирования Универсальность концепции метода ветвей и границ при решении практических задач предполагает необходимость разработки уникального способа ветвления дерева решений и вычисления соответствующих оценок нижней границы, которые зависят от специфики конкретной задачи. Рассмотрим применение метода ветвей и границ для решения задачи трех станков. Заданы п деталей di (i = 1, 2, ..., n), последовательно обрабатываемых на трех станках R1, R2, R3, причем технологические маршруты всех деталей одинаковы. Обозначим ai, bi, ci — длительность обработки деталей di на первом, втором и третьем станках соответственно. Определить такую очередность запуска деталей в обработку, при которой минимизируется суммарное время завершения всех работ Tц. Можно показать, что в задаче трех станков очередность выполнения первых, вторых и третьих операций в оптимальном решении может быть одинаковой (для четырех станков это свойство уже не выполняется). Поэтому достаточно определить очередность запуска только на одном станке (например, третьем). Обозначим sk = (i1, i2 , ..., ik) — некоторую последовательность очередности запуска длиной k (1 £ k £ п) и A (sk), В (sk), С (sk) — время окончания обработки последовательности деталей sk на первом, втором и третьем станках соответственно. Необходимо найти такую последовательность sопт, что С(sопт) = min С (s). Покажем, как можно рекуррентно вычислять A(sk), В(sk), С(sk). Пусть sk+1 = (sk ,ik+i), т. е. последовательность деталей sk+1получена из деталей sk с добавлением еще одной детали ik+1. Тогда: A (sk+1) = A (sk)+ , В (sk+1) = max [A (sk+1); В (sk)]+ , С (sk+1) = max [В (sk+1); С (sk)] +  Для задачи трех станков можно использовать следующее правило доминирования: Если s— некоторая начальная последовательность, а - подпоследовательность, образованная из s перестановкой некоторых символов, то вариант s доминирует над , когда выполняются следующие неравенства: А (s) £ А ( ), В (s) £ В ( ), С (s) £ С ( ) Причем хотя бы одно из них выполняется как строгое неравенство. Способ конструирования вариантов последовательностей s и вычисления оценок D(s) для каждого из них состоит в следующем: пусть имеется начальная подпоследовательность s. Тогда вычисляются величины: dC(s) = С(s) + , (3.1) dB(s) = В (s) + + min cj , (3.2) dA(s) = A (s) + + (3.3) где J (s) — множество символов, образующих последовательность s. За оценку критерия С (s) для варианта s можно принять величину D(s) = max {dA(s), dB (s), dC (s)}.(3.4) Тогда ход решения задачи трех станков можно представить следующей формальной схемой. Нулевой шаг. Задание множества G(0), образуется всеми возможными последовательностями (s = 0). Вычисление оценки для множества G0: Где D(0) = max {dA(0), dB (0), бC (0)}, ; ; . Первый шаг. Образование множеств G1(1) U,G1(2)U... …G1(n). Подмножество Gk определяется всеми последовательностями с началом ik(k - 1, ...,n ). Вычисление оценок. Оценку для последовательности sk определяют из соотношения (3.4), т. е. D(sk) = max {dA(sk), dB (sk), dC (sk)}; k = 1, n. Выбор варианта для продолжения. Из всех подпоследовательностей, построенных на предыдущем шаге, выбирают наиболее перспективную последовательность sk с наименьшей оценкой, т. е. D(sk(1))=min D(sj(1)). Ветвление. Выбрав наиболее перспективный вариант последовательности sk(1), развивают его построением всех возможных подпоследовательностей длиной 2с началом sk(1) вида sk+1(2)= (sk(1), j), где j не входит в sk. Вычисление оценок производят в соответствии с соотношениями (3.1), (3.2), (3.3). k - шаг. Допустим, что уже проведено k шагов, в результате чего построены варианты s1(k), s2(k) ,…,svk(k), а именно подпоследовательности длиной k. Выбираем самый перспективный вариант sS(k) такой, что D(ss(k))=min D(sj(k)). Множество Gs(k) разбиваем на (п - k) подмножеств, каждое из которых образуется добавлением к последовательности ss(k) некоторого элемента ik+1 такого, что ik+1 . Оценка определяется в соответствии с соотношениями (3.1) - (3.4). В результате строим дерево вариантов следующего вида: вершина О отвечает s = 0, вершины первого уровня G1(1), G2(1)..., Gn(1) соответствуют последовательностям длиной 1, т. е. s1(1) = 1, s2(1) = 2,..., sn(1) = п и т. д. Каждая конечная вершина отвечает последовательности максимальной длины п. Признак оптимальности.Если sv(n) отвечает конечной вершине дерева, причем оценка наименьшая из оценок всех вершин, то sv(n) — искомый вариант, иначе переходим к продолжению варианта с наименьшей оценкой. Пример. Рассмотрим задачу трех станков, условия которой приведены в табл. 3.1: Таблица 3.1 Длительность операций | Деталь | | | | | | ai bi ci | | | | | | Нулевой шаг. s = 0. dA(s = 0) = A(0) + + = 0 + 14 + 3 = 17; dB(s = 0) = В(0) + + min cj = 0 + 15 + 2 = 17; dC(s = 0) = С(0) + =14 . Тогда: ∆ (s = 0) = max {17, 17,14} = 17. Первый шаг. Конструируем все возможные последовательности длиной 1 s1(1) = 1; s2(1) = 2; s3(1) = 3; s4(1) = 4; s5(1) = 5. Находим dA(1) = A1 + + = 14 + 3 = 17; dB(1)(s = 0) = В1 + + = 5 + 12 + 2 = 19; dC(1) = С1 + = 9 + 10 = 19 . Откуда ∆ (1) = max {17, 19, 19} = 19. Аналогично определяем ∆ (2), ∆ (3), ∆ (4), ∆ (5).  Второй шаг. Среди множества подпоследовательностей длиной 1 (s1(1) = 1, s2(1) = 2,..., s5(1) = 5) выбираем наиболее перспективную s = 1, для которой величина оценки-прогноза ∆ (s) оказывается наименьшей. Далее развиваем ее, конструируя возможные варианты длиной 2, т. е. (1.2), (1.3), (1.4), (1.5). Для каждого из этих вариантов вновь определяем оценки по формулам (3.1) — (3.4). Процесс вычислений продолжаем аналогично. Каждой конечной вершине дерева вариантов будет отвечать полная последовательность s = i1,i2,,.in. Если для некоторой такой вершины величина оценки ∆ (s) не превосходит величины оценок для всех остальных вершин, то эта оценка определяет искомый оптимальный вариант. В противном случае разбиваем более перспективный вариант с наилучшей оценкой. Конечная вершина определяет вариант (последовательность) = 3, 1, 5, 2, 4 с наилучшей оценкой ∆ = 20. Поэтому данный вариант является оптимальным. Непосредственной проверкой убеждаемся, что время обработки всей последовательности деталей для этого варианта совпадает со значением оценки-прогноза и является минимальным:  3.6. Тест по теме «Метод ветвей и границ» |