Материал: Д6520 Алексеев Математические методы в инженерии

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Переменные двойственной задачи (ДЗ):

ui – потенциал поставщика Ai, i = 1m;

vj – потенциал потребителя Bj, j = 1n.

Сформулируем в терминах потенциалов критерий оптимальности плана перевозок.

Теорема 2. Пусть Х* = () – план перевозок ТЗ. Для того, чтобы этот план был оптимальным, необходимо и достаточно, чтобы существовали потенциалы поставщиков ui, i = 1m, и потенциалы потребителей vj, j = 1n, удовлетворяющие следующим условиям:

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

; (7)

– если по плану Х* имеет место перевозка от поставщика Ai потребителю Bj, то сумма их потенциалов равна соответствующей стоимости перевозки единицы груза, т. е. если  > 0, то

Таким образом, чтобы выполнить проверку оптимальности плана перевозок, необходимо для всех занятых ячеек составить систему уравнений относительно потенциалов:

ui + vj = сij. (8)

Так как занятых ячеек m+n–1, а неизвестных потенциалов m+n, то одному из неизвестных нужно придать произвольное значение (обычно полагают u= 0), и тогда остальные потенциалы определяются однозначно. Затем для свободных ячеек проверяются условия (7), или

ij = ui + vj – сij ≤ 0 (7)

(ij называется оценкой соответствующей ячейки). Если все эти неравенства выполняются, то, согласно приведённому выше критерию (теорема 2), план перевозок оптимальный. Если хотя бы одно из неравенств (7) не выполняется, то план не является оптимальным. В этом случае из свободных ячеек с положительной оценкой выбирается та, для которой эта оценка является наибольшей. Если наибольших оценок несколько, то выбирается та из ячеек, где меньше тариф.

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

Для каждой ячейки можно построить только один цикл. Вершинам цикла приписываются чередующиеся знаки, причём свободная ячейка снабжается знаком «+». В ячейках, соответствующих отрицательным вершинам цикла, отыскивается наименьшее значение объёма перевозок, α = min, которое перераспределяется по ячейкам цикла, т. е. прибавляется к переменным в ячейках со знаком «+» и вычитается от переменных в ячейках со знаком «–». В ячейках, не вошедших в цикл, переменные остаются неизменными. Ячейка «–», по которой определялась величина α, остаётся пустой. Если ячеек с наименьшим значением объёма перевозок α несколько, то пустой остаётся одна из них (желательно с большим тарифом).

В результате перераспределения перевозок по циклу получается новый план с меньшими затратами. Примеры некоторых циклов показаны на рис. 1.

Рис. 1. Примеры некоторых циклов

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

Таким образом, алгоритм решения ТЗ методом потенциалов состоит из следующих этапов:

Этап 1. Составление начального плана перевозок.

Этап 2. Вычисление потенциалов поставщиков и потребителей; проверка оптимальности плана перевозок. Если план оптимальный, то задача решена; иначе следует переход к этапу 3.

Этап 3. Построение нового (улучшенного) плана перевозок, для которого транспортные затраты меньше или, по крайней мере, равны затратам для предыдущего плана. Далее следует переход к этапу 2.

Пример 3. Рассмотрим применение метода потенциалов для нахождения оптимального плана ТЗ, опорный план которой найден методом минимальной стоимости (ММС).

Для определения потенциалов составляем систему уравнений (для занятых ячеек):

u1+v2=2, u1+v4=1, u1+v5=0, u2+v3=1, u3+v1=3, u3+v2=2, u4+v1=5, u4+v3=2.

Полагая u1=0, находим v2=2, v4=1, v5=0, u3=0, v1=3, u4=2, v3=0, u2=1.

Потенциалы проставлены в таблицу (столбец ui и строка vj), которую мы обозначим «Итерация 0». Потенциалы можно вычислять и непосредственно в таблице, не выписывая систему уравнений. Если известны потенциал и тариф занятой ячейки, то из соотношения ui+vj = сij легко определить неизвестный потенциал (из суммы вычесть известное слагаемое).

Определим оценки свободных ячеек (ij = ui+vj–сij):

11 = 0+3–3 = 0, 13 = 0+0–4 = –4, 21 = 1+3–2 = 2, 22 = 1+2–3 = 0,

24 = 1+1–5 = –3, 25 = 1+1–5 = –3, 33 = 0+0–4 = –4, 34 = 0+1–4 = –3,

35 = 0+0–0 = 0, 42 = 2+2–3 = 1, 44 = 2+1–6 = –3, 45 = 2+0–0 = 2.

Далее оценки будем также вычислять непосредственно в таблице, помещая их в левом нижнем углу каждой свободной ячейки. Так как среди оценок есть положительные, то план ХХм.ст не является оптимальным. Перейдём к этапу 3 – улучшению плана Х0. Для этого выберем ячейку (4,5) (она имеет одну из наибольших положительных оценок (2) и меньший тариф, чем ячейка (2,1) с той же оценкой). Из этой ячейки проводим цикл, в который войдут ячейки (4,5) (отмечается знаком «+»), (1,5) (отмечается знаком «–»), (1,2) (отмечается знаком «+»), (3,2) (отмечается знаком «–»), (3,1) (отмечается знаком «+»), (4,1) (отмечается знаком «–»).

Итерация 0

Bj

Ai

30

25

35

20

20

ui

50

3

0

2

10

4

–4

1

20

0

20

Ө

0

10

2

2

3

0

1

10

5

–3

0

1

1

20

3

5

2

15

Ө

4

–4

4

–3

0

0

0

50

5

25

Ө

3

1

2

25

6

–3

0

2 

vj

3

2

0

1

0

Итерация 1

Bj

Ai

30

25

35

20

20

ui

50

3

2

2

25

4

–2

1

20

0

5

0

10

2

2 

3

–2

1

10

Ө

5

–5

0

–1

–1

20

3

20

2

–2

4

–4

4

–5

0

–2

–2

50

5

10

Ө

3

–1

2

25

6

–5

0

15

0

vj

5

2

2

1

0

Наименьшее значение груза, стоящее в вершинах цикла со знаком «–», α = min(20,15,25) = 15. Это число прибавляется к переменным в ячейках со знаком «+» и вычитается от переменных в ячейках со знаком «–». В результате получается новый план с меньшими затратами.

Для нового плана Х1 определяем новые потенциалы и оценки свободных ячеек (итерация 1). Новый план также не оптимален. Перейдём к этапу 3 – улучшению плана Х1. Для этого выберем ячейку (2,1) (она имеет одну из наибольших положительных оценок (2) и меньший тариф, чем ячейка (1,1) с той же оценкой). Из этой ячейки проводим цикл (табл. 3). В цикл войдут ячейки (2,1) (отмечается знаком «+»), (4,1) (знак «–»), (4,3) (знак «+»), (2,3) (знак «–»). Наименьшее значение груза, стоящее в двух вершинах цикла со знаком «–», одинаково, α = min (10,10) = 10. Из базиса должна уйти только одна переменная; пусть это будет переменная х41 = 10 (тариф этой ячейки больше). Это число прибавляется к переменным в ячейках со знаком «+» и вычитается от переменных в ячейках со знаком «–». В результате получается новый (вырожденный) план с меньшими затратами (итерация 2).

Итерация 2

Вj

Аi

30

25

35

20

20

ui

50

3

0

2

25

4

–2

1

20

0

5

0

10

2

10

3

–2

1

0

5

–5

0

–1

–1

20

3

20

2

0

4

–2

4

–3

0

0

0

50

5

–2

3

–1

2

35

6

–5

0

15

0

vj

3

2

2

1

0

Для нового плана все оценки неположительные. Следовательно, полученный план

Х =

является оптимальным (фиктивного потребителя в ответе не указываем). Кроме того, план вырожден (базисная переменная х23 = 0) и альтернативен (некоторые оценки 11=32=34 = 0). При данном плане стоимость перевозок zmin = 225 + 120 + 210 + 320 + 235 = 230 ден. ед.

Часто при решении транспортных задач возникает необходимость введения дополнительных ограничений (условий). Рассмотрим наиболее часто встречающиеся условия, используемые при решении задач транспортного типа.

Запрет перевозок от i-го поставщика к j-му потребителю. Для определения оптимальных планов таких задач предполагают, что тариф перевозки единицы груза из пункта Аi в пункт Вj является столь угодно большой величиной M, и при этом условии известными методами находят решение новой транспортной задачи. При таком предположении исключается возможность при оптимальном плане ТЗ перевозить грузы из Аi в Вj. Такой подход к нахождению решения ТЗ называется запрещением перевозок или блокированием соответствующей клетки таблицы данных задачи.

Фиксированная поставка. В отдельных ТЗ дополнительным условием является обеспечение перевозки по соответствующим маршрутам определенного количества груза. Пусть, например, из пункта Аi в пункт Вj требуется обязательно перевезти αij единиц груза. Тогда в ячейку таблицы данных ТЗ, находящуюся на пересечении строки Аi и столбца Вj, записывают указанное число αij и в дальнейшем эту ячейку считают свободной со сколь угодно большим тарифом перевозок М. Для полученной таким образом новой ТЗ находят оптимальный план, который определяет оптимальный план исходной задачи.

Нижние границы на поставки. Иногда требуется найти решение ТЗ, при котором из пункта Аi в пункт Вj должно быть завезено не менее заданного количества груза αij. Для определения оптимального плана какой задачи считают, что запасы пункта Аi и потребности пункта Вj меньше фактических на αij ед. Далее находят оптимальный план новой ТЗ, на основании которого и определяют решение исходной задачи. После этого к значению переменной хij добавляют αij.

Верхние границы на поставки. В некоторых ТЗ требуется найти оптимальный план перевозки при условии, что из пункта отправления Аi в пункт Вj перевозится не более чем αij единиц груза, т. е. xij ≤ αij. Для сведения условия задачи к разрешимому типу поставщика Аi или потребителя Вj (либо того, либо другого) делят на две части, как бы на два самостоятельных поставщика (или потребителя).

Рис. 2. Деление поставщика или потребителя на две части

При этом мощности этих условно самостоятельных поставщиков будут равны:  = αij и  Аi–αij. Затраты на поставку продукции от поставщика к Вj и другим потребителям принимаются равными затратам, заданным в матрице C = (сij). Затраты на поставку продукции от поставщика к Вj принимаются равными  = М, где М – сколь угодно большое число. Затраты на поставку от к другим потребителям (помимо Вj) принимаются равными заданным в матрице C = (сij). Подобный прием обеспечивает положение, при котором переменная xij в решении задачи непременно будет равна нулю, в то время как переменная xij может принимать любое значение от нуля до aij, 0 ≤ xij ≤ αij. После получения оптимального решения соответствующие переменные поставщиков и (или потребителей и ) складываются.

Условия полного ввоза-вывоза. Аналогично решается задача в случае, если может возникнуть требование полного вывоза груза из отдельных пунктов отправления или полного удовлетворения заявок некоторых потребителей. Например, пусть в задаче требуется вывезти груз от поставщика Аi полностью. Это означает, что следует назначить очень высокую стоимость М перевозки от поставщика Аi в фиктивный пункт назначения. В случае требования полного удовлетворения заявок, например, некоторого потребителя Bj, следует назначить очень высокую стоимость М перевозки от фиктивного поставщика Аi потребителю Bj.

Усложнения типа полного ввоза–вывоза возможны лишь для открытых ТЗ.

Пример 4. Найдем решение ТЗ, исходные данные которой приведены в табл. 7 с учетом того, что из пункта А1 в пункт В1 перевозки не могут быть осуществлены, а из пункта А3 в пункт В1 будет завезено 10 ед. груза.

Таблица 7

Вj

Аi

50

80

30

60

65

3

5

4

1

85

4

5

6

2

70

5

1

3

3