- •Прикладные задачи математического программирования Учебное пособие
- •Глава I Введение в математическое моделирование § 1.1. Понятие математической модели, классификация моделей, виды моделирования
- •§ 1.2. Введение в линейное программирование
- •Глава II Основные типы задач линейного программирования и методы их решения § 2.1. Построение математических моделей задач лп
- •§ 2.2. Графический способ решения систем линейных неравенств
- •§ 2.3. Решение задачи линейного программирования графически
- •§ 2.4. Каноническая форма задач лп
- •§ 2.5. Идея симплексного метода
- •§ 2.6. Симплексный метод решения задач линейного программирования
- •I этап. Запись задачи в симплекс-таблицу.
- •II этап. Проверка опорного плана на оптимальность.
- •III этап. Улучшение опорного плана.
- •IV этап. Выписывание оптимального решения.
- •§ 2.7. Поиск первоначального опорного плана
- •§ 2.8. Двойственность в линейном программировании
- •Исходная задача I Двойственная задача II
- •§ 2.9. Теоремы двойственности
- •§ 2.10. Экономическая интерпретация двойственной задачи и теории двойственности
- •Глава III Транспортные задачи линейного программирования § 3.1. Постановка транспортной задачи общего вида
- •§ 3.2. Алгоритм метода потенциалов
- •1) Для всех (*)
- •2) Для всех (**)
- •§ 3.3. Усложненные задачи транспортного типа
- •§ 4. Решение задач оптимизации в Excel
- •Библиографический список
1) Для всех (*)
2) Для всех (**)
где
– матрица стоимостей перевозок.
Доказательство теоремы опускаем, оно основывается на рассмотрении двойственной задачи к исходной транспортной. Числа, называемые потенциалами, в точности являются переменными двойственной задачи, а сформулированные условия (**) – суть второй теоремы двойственности.
Покажем, как
находить числа, называемые потенциалами.
Отведем им место в таблице – правый
столбец и нижняя строка. Условие (*)
представляет собой систему из
линейных уравнений с
неизвестными потенциалами. Поэтому
одно из неизвестных полагаем равным 0
для определенности, затем последовательно
находим остальные потенциалы.
Проведем эти вычисления, записывая найденные потенциалы в дополнительно зарезервированный столбец и строку (табл.3.5).
Таблица 3.5
|
В1 |
В2 |
В3 |
В4 |
В5 |
uj |
А1 |
21 |
19 |
11 24 |
12 |
12 |
40 |
А2 |
26 |
29
|
14 2 |
1 10 |
26 |
43 |
А3 |
39 |
1 13 |
22 |
8 0 |
25 5 |
50 |
А4 |
53 11 |
23 |
40 |
26 |
28 5 |
53 |
vi |
0 |
–49 |
–29 |
–42 |
–25 |
|
Проводя вычисления, смотрим только на занятые клетки и на числа, стоящие в правом верхнем углу, – стоимости перевозок.
1. Полагаем один
из потенциалов равным 0. Пусть
найдем из условия (*) остальные,
последовательно обходя занятые клетки:
для занятой клетки
(4,1):
т.е.
,
для занятой клетки
(4,5):
т.е.
,
для клетки (3,5):
, т.к.
,
затем можем найти
из (3,2):
,
т.к.
,
после из (3,4):
,
т.к.
,
из (4,2):
, т.к.
и, наконец, из
(2,3):
,
т.к.
,
из (3,1):
т.к.
Все потенциалы
найдены. Вычисления обычно проводятся
устно, с
особой внимательностью,
не путая стоимости перевозок
стоящие в правых верхних углах клеток,
с самими перевозками
стоящими в клетках. Их значения на этом
шаге нам не нужны, важно лишь, что они
определяют
занятость
клетки.
2. После нахождения
системы потенциалов можно собственно
и заняться проверкой плана на оптимальность,
ради чего мы и вычисляли потенциалы.
Для проверки плана на оптимальность
необходимо проверить условие (**). Нужно
для свободных клеток посчитать суммы
и сравнить их с числами
–
стоимостями перевозок. Если
то по теореме, план является оптимальным,
задача решена. Иначе, если хотя бы для
одной клетки
план нужно улучшать. Переходить к 3-му
шагу алгоритма. Сделаем проверку условия
(**) для нашей таблицы, записывая в правом
верхнем углу выполнение неравенств
(табл.3.6).
Таблица 3.6
|
В1 |
В2 |
В3 |
В4 |
В5 |
vj |
А1 |
40>21 |
–9<19 |
11=11 24 |
–2<12 |
15>12 |
40 |
А2 |
43>26 |
–6<29 |
14=14 2 |
1=1 10 |
18<26 |
43 |
А3 |
50<39 |
1=1 13 |
21<22 |
8=8 0 |
25=25 5 |
50 |
А4 |
53=53 11 |
4<23 |
14<40 |
11<26 |
28=28 5 |
53 |
ui |
0 |
–49 |
–29 |
–42 |
–25 |
|
В нашей задаче первоначальный опорный план неоптимален, условие (**) нарушено в клетках (1, 1), (1, 5), (2, 1), (3, 1).
Шаг 3. Улучшение плана.
Для проведения операции улучшения плана нам понадобится понятие цикла – контура перераспределения ресурсов.
Циклом будем называть набор клеток таблицы, в котором две и ровно две соседние клетки расположены в одной строке или в одном столбце, вершины поочередно обозначаются «+» и «-». Цикл начинается со свободной клетки и проходит только по занятым.
Графически нетрудно представить цикл в виде ломаной, каждое звено которой лежит в строке или в столбце, причем в каждой строке или столбце не более чем по одному звену. Звенья ломаной располагаются под прямым углом. Цикл начинается со свободной клетки, в которой нарушено условие оптимальности, и проходит только по занятым.
Примеры циклов:
с11 |
с |
с13 |
с14 |
|
|
с11 • |
с12 • |
с13 |
с14 |
с21 |
с22 |
с23 |
с24 |
|
|
с21 |
с22 • |
с23 |
с24 • |
с31 |
с32 |
с33 |
с34 |
|
|
с31 • |
с32 |
с33 |
с34 • |
С понятием цикла связаны важные свойства планов:
1) допустимый план является опорным, когда из занятых этим планом клеток нельзя образовать ни одного цикла;
2) если имеем опорный план, то для каждой свободной клетки можно образовать единственный цикл, содержащий данную клетку и некоторые из занятых.
Улучшение плана
производится по следующей схеме. В
подчеркнутых клетках табл. 3.6. находим
клетку с
наибольшей разностью
т.е. где условие (**) нарушается максимально.
Затем для этой клетки согласно свойству
2 строим единственный цикл. Набор клеток
в цикле помечаем поочередно знаками
«+» и «–», начиная с «+» в свободной
клетке. Имеем таблицу 3.7
Таблица 3.7
|
В1 |
В2 |
В3 |
В4 |
В5 |
запасы |
А1 |
40>21 + |
–9<19 |
11=11 – 24 |
2<12 |
15>12 |
24 |
А2 |
43>26
|
–6<29 |
14=14 + 2 |
1=1 –10 |
18<26 |
12 |
А3 |
50>39
|
1=1 13 |
21<22 |
8=8 + 0 |
25=25 – 5 |
18 |
А4 |
53=53 –11 |
4<23 |
14<40 |
11<26 |
28=28 + 5 |
16 |
потребности |
11 |
13 |
26 |
10 |
10 |
|
Начиная с клетки (1, 1), где условие (**) нарушено максимально, строим цикл. Клетку (1, 1) помечаем знаком «+», далее ходим по занятым клеткам, поворачивая под прямым углом, знаки чередуем, пока не попадем в тот столбец или строку, откуда начали. Если вы нашли цикл, то он верный, т.к. цикл единственен. У нас все занятые клетки вошли в цикл, но это необязательно.
Рассмотрим элементы
плана
,
расположенные в клетках цикла со знаком
«–» :
.
Выберем из них наименьший
обозначим
Строим новый план
по правилу
Новый
план записываем в табл. 3.8. Клетка, в
которой разница
равна 0, у нас (3, 5), теперь будет
свободной.
Проверьте, что число занятых клеток
по-прежнему равно 8.
Таблица 3.8
|
В1 |
В2 |
В3 |
В4 |
В5 |
запасы |
А1 |
21 5 |
19 |
11 15 |
12 |
12 |
24 |
А2 |
26 |
29 |
14 7 |
1 5 |
26 |
12 |
А3 |
39 |
1 13 |
22 |
8 5 |
25 |
18 |
А4 |
53 6 |
23 |
40 |
26 |
28 10 |
16 |
потребности |
11 |
13 |
26 |
10 |
10 |
|
Очевидно, что
полученный план будет удовлетворять
прежним ограничениям, т.к. сдвиг перевозки
происходит по циклу, а значит, не нарушает
суммарную перевозку по столбцу и по
строке (в одном месте прибавили, а в
другом – столько же отняли). Общая же
стоимость перевозок уменьшается на
число, равное
где
–
объем перевозок, перемещаемый по циклу.
У нас эта величина равна 5·(40–21)=5·19=95.
Действительно,
для плана Х общая суммарная стоимость
перевозки:
.
Для нового плана
=5·21+19·11+7·14+5·1+13·1+5·8+6·53+10·28=1068.
Итак, мы построили новый «лучший» план, 3-й шаг закончен. И теперь переходим к следующей итерации: находим новые потенциалы, проверяем план на оптимальность, улучшаем, если план неоптимален.
Для нашей задачи проведем дальнейшее решение. Новая система потенциалов записана в табл. 3.9.
Условие (**) не
выполняется в клетках (4, 3) и (4, 4). С клетки
(4, 4) начинаем строить цикл. Выбираем
наименьшее из чисел
.
Таблица 3.9
-
В1
В2
В3
В4
В5
vj
А1
21
+
5–19<19
11
– 19
–2<12
–4<12
21
А2
24<26
–6<29
14
+ 7
1
– 5
–1<26
24
А3
31<39
1
13
21<22
8
5
6<25
31
А4
53
– 6
23=23
43>40
30>26
+
28
10
53
ui
0
–30
–10
–23
–25
Строим новый план, добавляя Δ к клеткам с «+», и вычитая Δ из клеток с «–». Новый план выглядит как показано в табл.3.10.
Таблица 3.10
-
В1
В2
В3
В4
В5
vj
A1
21
+
10–13>19
11
– 14
–6<12
–4<12
21
A2
24<26
–10<29
14
12
–3<1
–1<26
26
A3
35<39
1
13
–25<22
8
5
10<25
35
A4
53
– 1
19<23
43>40
+
26
5
28
10
53
ui
0
–34
–10
–27
–25
Найдем новую систему потенциалов, запишем в таблицу 3.10.
Оказывается, план не оптимален, в клетки (4, 3) нарушается неравенство (**), еще раз строим цикл, улучшаем план, Δ=1.
Находим новую систему потенциалов (табл. 3.11), проверяем на оптимальность, убеждаемся, что полученный план оптимален.
Таблица 3.11
|
В1 |
В2 |
В3 |
В4 |
В5 |
vj |
A1 |
21 11 |
–10<19 |
11 13 |
–3<12 |
–1<12 |
21 |
A2 |
24<26 |
–7<29 |
14 12 |
0<1 |
2<26 |
24 |
A3 |
32<39 |
1 13 |
22=22 |
8 5 |
10<25 |
32 |
A4 |
50<53 |
19<23 |
40 1 |
26 5 |
28 10 |
50 |
ui |
0 |
31 |
–10 |
–24 |
–22 |
–62 |
Итак, предложенный
таблицей 3.11, план перевозок является
оптимальным, при этом суммарная стоимость
перевозок
.
Действительно, после второй итерации стоимость перевозок уменьшилась на величину (30–26)·5=20, после третьей (43–40)·1=3, т.е. 1068–23=1045, что мы и имеем. Задача решена.
Замечание. Если транспортная задача является задачей открытого типа, в которой условие баланса не выполняется, а именно сумма запасов больше суммы потребностей, то решить такую задачу можно по предложенной схеме методом потенциалов, введя дополнительного потребителя, с потребностью равной разности балансов, и нулевыми стоимостями перевозок от каждого поставщика к этому потребителю.

12