- •Лекция-4. Линейное программирование
- •4.1. Ограничения и целевая функция задач лп
- •2. В двух цехах а и в одного завода собирается два вида продукции мотопилы и сепараторы.
- •2.7.2 Общая постановка транспортной задачи
- •2.7.3. Решение транспортной задачи методом «северо-западного угла»
- •Более подробно методы улучшения решения транспортной задачи см. В учебнике [11].
2.7.3. Решение транспортной задачи методом «северо-западного угла»
Рассмотрим задачу (2.48) — (2.50) и представим ее в виде таблицы 2.16:
Таблица 2.16
|
Поставщики |
Потребители |
Запас |
|||
|
A |
B |
C |
D |
||
|
1 |
12 400 |
13
1 |
4 |
6 |
500 |
|
2 |
6 |
4
7 |
10 |
11 |
700 |
|
3 |
10 |
9
1 |
12
2 |
4 500 |
800 |
|
Потребность |
400 |
900 |
200 |
500 |
∑=2000 |
Название данного метода свидетельствует о том, что старт решения осуществляется с клетки, расположенной в верхнем левом углу и движение происходит по направлению "юго-восток". Диагональ и направление решения определяется произвольно, и в этом методе на результат влияет стохастически (случайно).
В клетки вносится количество перевозимого груза. При этом клетки, в которых имеется ненулевое количество груза, называются занятыми, а остальные — свободными. Объём перевозок, записанный в занятую клетку, есть не что иное, как значение соответствующего хij.
Рассмотрим клетку 1А и занесем туда максимально возможное количество груза. Это количество определяется величинами запаса на складе 1 и потребностями завода А. Очевидно, что это количество определяется наименьшим числом. Это количество будет равно 400. Тогда все потребности завода А удовлетворены, но на складе 1 осталось 500 — 400 = 100 т. Переходим к ближайшей незанятой клетке. Это не может быть клетка 2А, т. к. потребности потребителя А уже удовлетворены, в то время, как на складе 1 запасы еще есть. Второй вариант – клетка 1В и она загружается максимально возможным количеством, которое равно 100 (такой запас остался на складе 1). Таким образом, запасы на складе 1 исчерпаны, но заводу В еще необходимо 900 — 100 = 800 т. Снова от клетки 1В переходим к ближайшей клетке 2 В. Максимально возможно ее загрузить количеством 700, т. к это запас на складе 2. Потребности завода В опять не удовлетворены, т. к. 800 — 700 = 100. Снова переходим к следующей клетке ЗВ. Туда заносится величина 100 для того, чтобы удовлетворить потребности завода В. На складе З осталось еще 800 — 100 = 700. Снова переходим на соседнюю клетку (ЗС) и заносим туда 200 (потребности завода С). Наконец, в клетку 3D заносим 500. В результате все потребности удовлетворены, а запасы исчерпаны.
Подсчитаем количество занятых клеток. Их шесть. Число линейно-независимых уравнений системы тоже шесть. Согласно терминологии «северо–западного угла» получается первоначальный опорный план, в котором шесть переменных являются базисными, остальные шесть равных нулю — небазисные. Согласно этому решению:
.
Остальные x = 0. Можно подсчитать общую стоимость перевозок при данном плане:
![]()
Конечно, очень проблематично считать, что найденный план является оптимальным. Достоинством метода северо-западного угла (пожалуй, единственным) является его простота.
Сформулируем снова этапы метода «северо-западного угла»:
-
Начинаем с клетки, находящейся в верхнем левом углу. Наполняем эту клетку максимально возможным грузом. Это количество определяется величинами спроса и запаса ряда 1 и первой колонки. Помещаемое количество груза равно меньшему значению спроса или запаса.
-
В зависимости от того, что использовано полностью (спрос или запас), переходим к соседней клетке. Это будет клетка, находящаяся в первом ряду и во втором столбце (если удовлетворен спрос), или клетка второго ряда и первого столбца (если использован запас).
-
Так же, как и в пункте 1 максимально заполняем следующую клетку.
-
Делаем аналогичные операции, как и в пунктах 2 и 3. Процесс продолжим до тех пор, пока все потребности полностью не удовлетворены и не исчерпаны все запасы.
Задание.
1. Решите задачу самостоятельно, взяв за отправную точку любой другой угол.
2. Повторно решите задачу, транспонировав матрицу исходных данных.
2.7.4. Решение транспортной задачи методом «Фогеля»
Метод, предложенный американским ученым У. Фогелем, является более сложным, но, в то же время, первоначальный опорный план этого метода наиболее близок к оптимальному. Идея метода основана на так называемом понятии штрафных затрат.
Выясним, что это такое. Решим повторно задачу (2.48) — (2.50), причём таблица несколько изменится:
Таблица 2.17
-
Поставщки
Потребители
Запас
Штраф
А
В
С
D
1
12
13
4
6
500
2 = 6 – 4
2
6
4
10
11
700
2 = 6 – 4
3
10
9
12
4
800
5 = 9 – 4
Спрос
400
900
200
500
∑=2000
Штраф
4 = 10 – 6
5=9-4
6 = 10 – 4
2 = 6 – 4
Рассмотрим первую строку.
Наименьшая цена доставки со склада 1 — это до завода С и цена равна 4. Следующая наименьшая цена — до завода D,которая равна 6. Поэтому, если не производить перевозки продукции со склада 1 заводу С, то появятся дополнительные издержки, которые будут не меньше, чем 6- 4 = 2. Это и будут штрафные затраты, которые записываются в дополнительный столбец таблицы. Аналогично определяются величины штрафных затрат всех остальных рядов, а также для всех колонок. Как видно из таблицы, наибольшая величина штрафа соответствует колонке С. Эта колонка является «критичной», т.к. именно в этом случае возникнут наибольшие потери, если не будет использоваться клетка с наименьшей стоимостью. В этой колонке выбирается клетка с наименьшей ценой — клетка 1С и заполняется максимально возможным грузом. Возможно поместить только 200 т груза, в результате потребности завода С будут удовлетворены, но на складе 1 останется 500 — 200 = 300 т груза. В дальнейшем колонка С не рассматривается.
Строится следующая таблица (2.18), причём строки и столбцы запаса и спроса корректируются:
Снова находится строка или столбец (без столбца С), где штраф наибольший. Это 1 строка. В ней находится клетка с наименьшей ценой —
Таблица 2.18
|
Поставщики |
Потребители |
Запас |
Штраф |
|||
|
А |
B |
C |
D |
|||
|
1 |
12 |
13 |
4 |
6 |
500-20=300 |
6 |
|
2 |
6 |
4 |
10 |
11 |
700 |
2 |
|
3 |
10 |
9 |
12 |
4 |
800 |
5 |
|
Спрос |
400 |
900 |
0 |
500 |
∑=2000 |
|
|
Штраф |
4 |
5 |
0 |
2 |
|
|
клетка 1D и заполняется максимально возможным количеством продукции. Из таблицы ясно, что в клетку помещается 300 т, т.к. такое количество продукции осталось на складе 1. В результате запас склада 1 будет исчерпан, но заводу D необходимо еще 500 — 300 = 200 т. На следующих этапах строка 1 и столбец С уже не будут учитываться (таблица 2.19).
Таблица 2.19
|
Поставщики |
Потребители |
Запас |
Штраф |
|||
|
А |
B |
C |
D |
|||
|
1 |
12 |
13 |
4 200 |
6 300 |
0 |
6 |
|
2 |
6 |
4 |
10 |
11 |
700 |
2 |
|
3 |
10 |
9 |
12 |
4 |
800 |
5 |
|
Спрос |
400 |
900 |
0 |
200 |
∑=2000 |
|
|
Штраф |
4 |
5 |
0 |
7 |
|
|
Снова находится наибольшее значение штрафа (колонка D); в клетку 3D заносится 200 (почему?) и в дальнейшем исключается из рассмотрения колонка D, т. к. спрос завода D удовлетворен. Запас поставщика 3 уменьшается на 200 и становится равным 800-200=600.
Продолжая этот процесс, окончательно получаем таблицу 2.20 (проделайте самостоятельно):
Таблица 2.20
|
Поставщики |
Потребители |
Запас |
|||
|
А |
В |
С |
D |
||
|
1 |
12 |
13 |
4 200 |
6 300 |
0 |
|
2 |
6 |
4 700 |
10 |
11 |
0 |
|
3 |
10 400 |
9 200 |
12 |
4 200 |
0 |
|
Спрос |
0 |
0 |
0 |
0 |
|
В результате получился первоначальный опорный план данной задачи:
Все остальные хij= 0.
Подсчитаем суммарные затраты:
![]()
Итак, алгоритм метода Фогеля.
-
Для каждого ряда и каждого столбца находим штрафные затраты путем вычитания наименьшей цены из следующей наименьшей цены.
-
Определяем ряд или столбец, где штрафные затраты наибольшие.
-
В выбранном в пункте 2 ряду или столбце максимально заполняем клетку с наименьшей стоимостью.
-
Возвращаемся к пункту 1, при этом ряд или столбец, выбранный в пункте 2, не учитывается.
-
Процесс повторяется до тех пор, пока все потребности не будут удовлетворены и все запасы не будут использованы.

00
00
00
00