Смекни!
smekni.com

Применение метода ветвей и границ для задач календарного планирования (стр. 2 из 3)

Согласно 2-му пункту нашего плана, составим 2 новых системы ограничений для (7):

(12) и
(13).

Выполним 3-й пункт алгоритма. Для начала, решим задачу (7), (12) с помощью табличного процессора MicrosoftExcel (см. Приложение 2) и получим X2 = (2; 1)[2], z2 = 10 (14). Так как z2 ≥ z0, «оптимальным» становится план Х0.

Решим задачу (7), (13). Из последнего уравнения очевидно, что x2 = 0. Отсюда следует, что x1 = 3 (максимально возможное). Тогда Х3 = (3; 0), z3 = 13 (15), а следовательно, данный план является оптимальным (теперь уже без кавычек).

Нам не пришлось выполнять 4-й пункт нашего алгоритма в связи с тем, что оптимальное решение найдено, переменные целочисленные. К тому же, все необходимые моменты решения уже были показаны в пунктах 1-3.

Пример, в котором всё складывается не так просто, приведен в Приложении 3.

календарное планирование программирование


III. Применение метода ветвей и границ для задач календарного планирования

Метод ветвей и границ является универсальным методом решения комбинаторных задач дискретного программирования. Сложность практического применения метода заключается в трудностях нахождения способа ветвления множества на подмножества и вычисления соответствующих оценок, которые зависят от специфики конкретной задачи.

Для того, чтобы выяснить области применения данного метода и ознакомиться с практической его формой, мы обратимся к задаче трех станков[3], как к классическому примеру.

§1. Алгоритм решения задачи трех станков методом ветвей и границ

Заданыnдеталей di (i= 1, 2, ..., n), последовательно обрабатываемых на трех станках R1, R2, R3, причем технологические маршруты всех деталей одинаковы. Обозначим ai ,bi ,ci — длительность обработки деталей diна первом, втором и третьем станках соответственно.

Определить такую очередность запуска деталей в обработку, при которой минимизируется суммарное время завершения всех работ Tц.

Можно показать, что в задаче трех станков очередность выполнения первых, вторых и третьих операций в оптимальном решении может быть одинаковой (для четырех станков это свойство уже не выполняется). Поэтому достаточно определить очередность запуска только на одном станке (например, третьем).

Обозначимsk = (i1, i2 , ..., ik) — некоторую последовательность очередности запуска длиной k(1 £k£n) и A(sk), В (sk), С (sk) — время окончания обработки последовательности деталей skна первом, втором и третьем станках соответственно.

Необходимо найти такую последовательность sопт, что

С(sопт) = min С (s). (16)

§1.1 Реккурентное вычисление A(sk), В(sk), C(sk) и условие доминирования

Покажем, как можно рекуррентно вычислять A(sk), В (sk), С (sk). Пусть sk+1 = (sk ,ik+i), т. е. последовательность деталей sk+1получена из деталей skс добавлением еще одной детали ik+1. Тогда:

A (sk+1) = A (sk)+

(17),

В (sk+1) = max [A(sk+1); В (sk)] +

(18),

С (sk+1) = max [В (sk+1); С (sk)] +

(19).

Логика выражений (17) – (19) очевидна, особенно если рассмотреть задачу двух станков.

Для задачи трех станков можно использовать следующее правило доминирования:

Если s — некоторая начальная последовательность, а

— подпоследовательность, образованная из s перестановкой некоторых символов, то вариант s доминирует над
, когда выполняются следующие неравенства:

А (s) £ А (

), В (s) £ В (
), С (s) £ С (
) (20),

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

§1.2 Способ конструирования вариантов последовательностей s и вычисления оценок D(s) для каждого из них

Способ конструирования вариантов последовательностей s и вычисления оценок D(s) для каждого из них состоит в следующем:

Пусть имеется начальная подпоследовательность s. Тогда вычисляются величины:

dC(s) = С(s) +

, (21)

dB(s) = В (s) +

+
, (22)

dA(s) = A (s) +

+
(23),

где J (s) — множество символов, образующих последовательность s.

За оценку критерия С(s) для варианта s можно принять величину

D(s) = max {dA(s), dB (s), dC (s)} (24).

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

1) Нулевойшаг.Задание множества G(0), образуется всеми возможными последовательностями (s = 0).

Вычисление оценки для множества G0:

D(0) = max {dA(0), dB (0), dC (0)} (25), где


;
;
(26).

2) Первыйшаг. ОбразованиемножествG1(1), G2(1) , …, Gn(1), подмножествоGkопределяется всеми последовательностями с началом ik(k, ...,n).

Вычисление оценок. Оценку для последовательности skопределяют из соотношения (24), т. е. D(sk) = max {dA(sk), dB (sk), dC (sk)}; k = 1,…,n. (27).

Выбор варианта для продолжения. Из всех подпоследовательностей, построенных на предыдущем шаге, выбирают наиболее перспективную последовательность sk с наименьшей оценкой, т. е. D(sk(1))=minD(sj(1)). (28)

Ветвление. Выбрав наиболее перспективный вариант последовательности sk(1), развивают его построением всех возможных подпоследовательностей длиной 2 с началом sk(1)вида sk+1(2)= (sk(1), j), где j не входит в sk.

Вычисление оценок производят в соответствии с соотношениями (21), (22), (23).

3) k-й шаг. Допустим, что уже проведено kшагов, в результате чего построены варианты s1(k),s2(k) ,…,sk(k), а именно подпоследовательности длиной k.

Выбираем самый перспективный вариант sS(k)такой, что

D(ss(k))=minD(sj(k)).

Множество Gs(k) разбиваем на (n — k) подмножеств, каждое из которых образуется добавлением к последовательности ss(k) некоторого элемента ik+1 такого, что ik+1

.

Оценка

определяется в соответствии с соотношениями (21) — (24).

В результате строим дерево вариантов следующего вида: вершина О отвечает s = 0, вершины первого уровня G1(1), G2(1)..., Gn(1) соответствуют последовательностям длиной 1, т. е. s1(1) = 1, s2(1) = 2,..., sn(1) = п и т. д. Каждая конечная вершина отвечает последовательности максимальной длины n.

Признак оптимальности.Если sv(n) отвечает конечной вершине дерева, причем оценка

наименьшая из оценок всех вершин, то sv(n) — искомый вариант.

§2. Пример использования метода ветвей и границ в задаче трех станков

Для того, чтобы придать формальной схеме прикладное значение, рассмотрим конкретный пример задачи трех станков.

Решим задачу трех станков, условия которой приведены в табл. 1:

Таблица 1

Длительность операций Деталь
1 2 3 4 5

ai

bi

ci

2

3

4

5

2

4

1

1

2

3

4

2

3

5

2

1) Нулевой шаг.s = 0.

dA(s = 0) = A(0) +

+
= 0 + 14 + 3 = 17;

dB(s = 0) = В(0) +

+
= 0 + 15 + 2 = 17;

dC(s = 0) = С(0) +

=14 .