- •Содержание
- •Предисловие
- •Глава I. Начала линейного программирования
- •§1. Задача линейного программирования. Типичные задачи линейного программирования, их математические модели.
- •1.1 . Задача линейного программирования
- •1.2. Типичные злп и их математические модели
- •1.3. Упражнения.
- •§2. Общая злп. Канонический вид злп.
- •2.2. Канонический вид злп
- •§3. Теоретические основы решения злп. Геометрическая интерпретация злп. Идея аналитического решения
- •3.1. Теоретические основы решения злп
- •3.2. Геометрическая интерпретация злп
- •3.4. Идея аналитического решения злп
- •3.5. Теоретические основы решения злп (продолжение)
- •§4. Симплекс-метод решения злп
- •4.1. Алгоритм симплекс-метода
- •4.2. Симплекс-таблицы.
- •§5. Метод искусственного базиса
- •5.1. Суть метода искусственного базиса
- •Глава II. Двойственность и целочисленность в линейном программировании. Транспортная задача.
- •§1. Теория двойственности
- •1.1. Задача, приводящая к паре двойственных задач
- •1.2. Пара симметричных двойственных задач
- •1.3. Пара несимметричных двойственных задач
- •1.4. Теоремы двойственности
- •1.5. Упражнения.
- •§2. Элементы целочисленного программирования
- •2.1. Постановка и геометрическая интерпретация
- •2.2. Метод Гомори
- •2.3. Упражнения.
- •§3. Транспортная задача
- •3.1. Постановка и математическая модель транспортной задачи
- •3.2. Теоретические основы решения транспортной задачи
- •3.3. Алгоритм метода потенциалов.
- •3.3.1. Основные пункты алгоритма:
- •3.3.2. Построение первоначального опорного плана.
- •3.3.4. Переход к новому опорному плану (построение очередного опорного плана).
- •3.3.5. Метод наименьших затрат построения первоначального опорного плана.
- •3.4. Сведение задачи открытого типа к задаче закрытого типа
- •3.5. Упражнения.
- •Задание лп-4
- •Задание лп-5
- •Задание лп-6
- •1. Приводим задачу к каноническому виду.
- •Задание лп-4
- •Задание лп-5
- •Задание лп-6
3.3. Алгоритм метода потенциалов.
Числа ui (i=1, 2, …, m) и vj (j=1, 2, …, n) из Теоремы 3.2.5 называются потенциалами задачи. Метод потенциалов основан на использовании этих чисел.
3.3.1. Основные пункты алгоритма:
1) Построить первоначальный опорный план.
2) Проверить план на оптимальность. Если критерий оптимальности не выполнен, то перейти к пункту 3). В противном случае задача решена. Перейти к пункту 5).
3) Перейти к очередному опорному плану.
4) Перейти к пункту 2).
5) Вычислить стоимость перевозок.
Распишем подробно основные пункты алгоритма.
3.3.2. Построение первоначального опорного плана.
Мы познакомимся с двумя методами построения первоначального опорного плана. Мы здесь рассмотрим метод северо-западного угла (ниже, в пункте 3.3.5 познакомимся с так называемым методом наименьшей стоимости). Суть метода (северо-западного угла) поясним на задаче с Таблицей 3.1. Начинаем заполнять таблицу планом с «северо-западного угла».
Пример 4. У первого поставщика имеется 90 единиц груза, а первому потребителю нужно 70 единиц. Поэтому можем спланировать перевозку 70 единиц груза от первого поставщика к первому потребителю: вписываем в клетку (1, 1) 70 и как бы вычёркиваем первого потребителя он «получил своё» и в дальнейшем распределении груза не участвует: ставим знак «» над первым столбцом:
-
bj
ai
70
30
20
40
90
1
70
3
4
5
30
5
3
1
2
40
2
1
4
2
У первого поставщика осталось 20 единиц груза, а второму потребителю всего нужно 30. Поэтому вписываем эти 20 единиц в клетку (1, 2), вычеркнув первую строку (у первого поставщика все 90 единиц груза использованы, и он выбывает из дальнейшего распределения поставок):
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
30
5
3
1
2
40
2
1
4
2
Второму потребителю требуется ещё 10 единиц, которые мы «заберём» у второго поставщика (у него их имеется 30 единиц): вписываем 10 в клетку (2, 2) и вычеркнем второй столбец:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
30
5
3
10
1
2
40
2
1
4
2
У второго поставщика осталось ещё 20 единиц груза, и третьему потребителю требуется как раз 20 единиц. Вписав эти 20 единиц в клетку (2, 3) вычёркиваем только одного участника, скажем, второго поставщика, хотя фактически из распределения груза выбывают одновременно второй поставщик и третий потребитель. Вычёркивание на одном шаге только одного участника обеспечивает участие второго в следующем шаге заполнения таблицы, и в результате будет заполнено в точности m+n1 клеток:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
30
5
3
10
1
20
2
40
2
1
4
2
Так как третий потребитель ещё не вычеркнут, то вписываем 0 в клетку (3, 3) и вычёркиваем третьего потребителя:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
30
5
3
10
1
20
2
40
2
1
4
0
2
Наконец, на последнем, 3+41=6-м шаге, вписываем 40 в клетку (3, 4) и вычёркиваем обоих участников третьего поставщика и четвёртого потребителя:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
30
5
3
10
1
20
2
40
2
1
4
0
2
40
Получили первоначальный опорный план (Таблица 3.2).
3.3.3. Проверка плана на оптимальность производится по следующей схеме:
1) Вычислить потенциалы ui (i=1, 2, …, m) и vj (j=1, 2, …, n).
2) Проверить условие оптимальности (3.3).
Более подробно:
1) Потенциалы вычисляются решением системы (3.2), где cij стоимости перевозок для заполненных клеток. Эта система состоит из m+n уравнений с m+n неизвестными. Ранг системы равен m+n1, так как матрица этой системы транспонирована по отношению к матрице ограничений транспортной задачи (3.1), ранг которой равен m+n1 (Теорема 3.2.2). Поэтому эта система имеет одну свободную неизвестную, и, вообще говоря, имеет бесконечное множество решений. Присвоив какой-то неизвестной, скажем, неизвестной u1, какое-то значение, например, 0 (u1=0), мы найдём однозначно определённые значения остальных ui и vj. При этом удобно решать систему не традиционным способом (например, методом исключения Гаусса), а, так сказать, «не отходя от таблицы»: справа от таблицы на уровне соответствующей строки последовательно выписываем очередное найденное значение ui, а под соответствующим столбцом очередное найденное значение vj. Продемонстрируем это на нашем примере (Таблица 3.1). А именно,
Пример 5. Найдём потенциалы ui и vj для первоначального опорного плана (Таблица 3.2).
Справа от таблицы на уровне первой строки записываем 0:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
0
30
5
3
10
1
20
2
40
2
1
4
0
2
40
В первой строке заполнены клетки (1, 1) и (1, 2). Стоимости в этих клетках равны соответственно c11=1 и c12=3. Поэтому v1=c11u1=10=1 и v2=c12u1=30=3. Значения v1=1 и v2=3 записываем под первым и вторым столбцами соответственно:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
0
30
5
3
10
1
20
2
40
2
1
4
0
2
40
1
3
Во втором столбце кроме клетки (1, 2) заполнена клетка (2, 2). По ней определяем u2=c22v2=33=0. Записываем u2=0 справа от таблицы на уровне второй строки:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
0
30
5
3
10
1
20
2
0
40
2
1
4
0
2
40
1
3
Во второй строке кроме клетки (2, 2) заполнена клетка (2, 3). По ней определяем v3=c23u2=10=1. Записываем значение v3=1 под третьим столбцом:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
0
30
5
3
10
1
20
2
0
40
2
1
4
0
2
40
1
3
1
В третьем столбце кроме клетки (2, 3) заполнена клетка (3, 3). По ней определяем u3=c33v3=41=3, и записываем u3=3 справа от таблицы на уровне третьей строки:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
0
30
5
3
10
1
20
2
0
40
2
1
4
0
2
40
3
1
3
1
Наконец, по клетке (3, 4) определяем v4=c34u3=23=1, и записываем его под четвёртым столбцом:
-
bj
ai
70
30
20
40
90
1
70
3
20
4
5
0
30
5
3
10
1
20
2
0
40
2
1
4
0
2
40
3
1
3
1
1
Таким образом, u1=0, u2=0, u3=3, v1=1, v2=3, v3=1, v4=1.
2) После нахождения потенциалов ui (i=1, 2, …, m) и vj (j=1, 2, …, n) необходимо проверить выполнение условия (3.3) для всех пустых клеток (для заполненных клеток потенциалы найдены из условия ui+vj=cij; поэтому для заполненных клеток проверка условия (3.3) нужна разве что только для проверки правильности найденных потенциалов. Имеем
u1+v3=0+1=1<4=c13, u1+v4=01=1<5=c14, u2+v1=0+1=1<5=c21,
u2+v4=01=1<2=c24, u3+v1=3+1=4>2=c31, u3+v2=3+3=6>1=c32,
Таким образом, u1+v3<c13, u1+v4<c14, u2+v1<c21, u2+v4<c24, но u3+v1>c31 и u3+v2>c32, то есть условие (3.3) выполнено не для всех клеток, и нельзя утверждать, что данный опорный план оптимален.
