Скачать .docx |
Реферат: Решение задач транспортного типа методом потенциалов
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ВОРОНЕЖСКИЙ ИНСТИТУТ ВЫСОКИХ ТЕХНОЛОГИЙ
Факультет заочно-послевузовского обучения
КУРСОВАЯ РАБОТА
По дисциплине: "Методы оптимизации"
На тему: " Решение задач транспортного типа методом потенциалов "
Воронеж 2003 г.
СОДЕРЖАНИЕ
1. Линейная транспортная задача. 3
2. Математическая модель транспортной задачи. 4
3. Составление опорного плана. 5
4. Распределительный метод достижения оптимального плана. 8
5. Решение транспортной задачи методом потенциалов. 11
Список использованной литературы .. 16
1. Линейная транспортная задача.
Линейные транспортные задачи составляют особый класс задач линейного программирования. Задача заключается в отыскании такого плана перевозок продукции с m складов в пункт назначения n который, потребовал бы минимальных затрат. Если потребитель j получает единицу продукции (по прямой дороге) со склада i , то возникают издержки С ij . Предполагается, что транспортные расходы пропорциональны перевозимому количеству продукции, т.е. перевозка k единиц продукции вызывает расходы k С i j .
Далее, предполагается, что
где ai есть количество продукции, находящееся на складе i , и bj – потребность потребителя j .
Замечание.
1. Если сумма запасов в пунктах отправления превышает сумму поданных заявок то количество продукции, равное остается на складах. В этом случае мы введем "фиктивного" потребителя n +1 с потребностью и положим транспортные расходы pi , n +1 равными 0 для всех i .
2. Если сумма поданных заявок превышает наличные запасы то потребность не может быть покрыта. Эту задачу можно свести к обычной транспортной задаче с правильным балансом, если ввести фиктивный пункт отправления m + 1 с запасом и стоимость перевозок из фиктивного пункта отправления во все пункты назначения принять равным нулю.
2. Математическая модель транспортной задачи.
где xij количество продукции, поставляемое со склада i потребителю j , а С i j издержки (стоимость перевозок со склада i потребителю j ).
3. Составление опорного плана.
Решение транспортной задачи начинается с нахождения опорного плана. Для этого существуют различные способы. Например, способ северо-западного угла, способ минимальной стоимости по строке, способ минимальной стоимости по столбцу и способ минимальной стоимости таблицы.
Рассмотрим простейший, так называемый способ северо-западного угла. Пояснить его проще всего будет на конкретном примере:
Условия транспортной задачи заданы транспортной таблицей.
Таблица № 1
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
Запасыа i |
А1
|
10 |
8 |
5 |
6 |
9 |
48 |
А2
|
6 |
7 |
8 |
6 |
5 |
30 |
А3
|
8 |
7 |
10 |
8 |
7 |
27 |
А4
|
7 |
5 |
4 |
6 |
8 |
20 |
Заявки bj |
18 |
27 |
42 |
12 |
26 |
125 |
Будем заполнять таблицу перевозками постепенно начиная с левой верхней ячейки ("северо-западного угла" таблицы). Будем рассуждать при этом следующим образом. Пункт В1 подал заявку на 18 единиц груза. Удовлетворим эту заявку за счёт запаса 48, имеющегося в пункте А1 , и запишем перевозку 18 в клетке (1,1). После этого заявка пункта В1 удовлетворена, а в пункте А1 осталось ещё 30 единиц груза. Удовлетворим за счёт них заявку пункта В2 (27 единиц), запишем 27 в клетке (1,2); оставшиеся 3 единицы пункта А1 назначим пункту В3 . В составе заявки пункта В3 остались неудовлетворёнными 39 единиц. Из них 30 покроем за счёт пункта А2 , чем его запас будет исчерпан, и ещё 9 возьмём из пункта А3 . Из оставшихся 18 единиц пункта А3 12 выделим пункту В4 ; оставшиеся 6 единиц назначим пункту В5 , что вместе со всеми 20 единицами пункта А4 покроет его заявку. На этом распределение запасов закончено; каждый пункт назначения получил груз, согласно своей заявки. Это выражается в том, что сумма перевозок в каждой строке равна соответствующему запасу, а в столбце - заявке. Таким образом, нами сразу же составлен план перевозок, удовлетворяющий балансовым условиям. Полученное решение является опорным решением транспортной задачи:
Таблица № 2
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
Запасы а i |
А1 |
10 18 |
8 27 |
5 3 |
6 |
9 |
48 |
А2 |
6 |
7 |
8 30 |
6 |
5 |
30 |
А3 |
8 |
7 |
10 9 |
8 12 |
7 6 |
27 |
А4 |
7 |
5 |
4 |
6 |
8 20 |
20 |
Заявки bj |
18 |
27 |
42 |
12 |
26 |
125 |
Составленный нами план перевозок, не является оптимальным по стоимости, так как при его построении мы совсем не учитывали стоимость перевозок С ij .
Другой способ - способ минимальной стоимости по строке - основан на том, что мы распределяем продукцию от пункта Ai не в любой из пунктов Bj , а в тот, к которому стоимость перевозки минимальна. Если в этом пункте заявка полностью удовлетворена, то мы убираем его из расчетов и находим минимальную стоимость перевозки из оставшихся пунктов Bj . Во всем остальном этот метод схож с методом северо-западного угла. В результате, опорный план, составленный способом минимальной стоимости по строке выглядит, так как показано в таблице № 3.
При этом методе может получиться, что стоимости перевозок Cij и Cik от пункта Ai к пунктам Bj и Bk равны. В этом случае, с экономической точки зрения, выгоднее распределить продукцию в тот пункт, в котором заявка больше. Так, например, в строке 2: C21 = C24 , но заявка b1 больше заявки b4 , поэтому 4 единицы продукции мы распределим в клетку (2,1).
Таблица № 3
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
Запасы а i |
А1 |
10 |
8 |
5 42 |
6 6 |
9 |
48 |
А2 |
6 4 |
7 |
8 |
6 |
5 26 |
30 |
А3 |
8 |
7 27 |
10 |
8 |
7 0 |
27 |
А4 |
7 14 |
5 |
4 |
6 6 |
8 |
20 |
Заявки bj |
18 |
27 |
42 |
12 |
26 |
125 |
Способ минимальной стоимости по столбцу аналогичен предыдущему способу. Их отличие состоит в том, что во втором способе мы распределяем продукцию от пунктов Bi к пунктам Aj по минимальной стоимости Cji .
Опорный план, составленный способами минимальных стоимостей, обычно более близок к оптимальному решению. Так в нашем примере общие затраты на транспортировку по плану, составленному первым способом F0 = 1039, а по второму F0 = 723.
Клетки таблицы, в которых стоят ненулевые перевозки, являются базисными . Их число должно равняться m + n - 1. Необходимо отметить также, что встречаются такие ситуации, когда количество базисных клеток меньше чем m + n - 1. В этом случае распределительная задача называется вырожденной. И следует в одной из свободных клеток поставить количество перевозок равное нулю. Так, например, в таблице № 3:
m + n - 1 = 4 + 5 - 1 = 8,
а базисных клеток 7, поэтому нужно в одну из клеток строки 3 или столбца 2 поставить значение “0”. Например в клетку (3,5).
Составляя план по способам минимальных стоимостей в отличии от плана по способу северо-западного угла мы учитываем стоимости перевозок Cij , но все же не можем утверждать, что составленный нами план является оптимальным.
4. Распределительный метод достижения оптимального плана.
Теперь попробуем улучшить план, составленный способом северо-западного угла. Перенесем, например, 18 единиц из клетки (1,1) в клетку (2,1) и чтобы не нарушить баланса перенесём те же 18 единиц из клетки (2,3) в клетку (1,3). Получим новый план. Подсчитав стоимость опорного плана (она ровняется 1039) и стоимость нового плана (она ровняется 913) нетрудно убедиться, что стоимость нового плана на 126 единиц меньше. Таким образом, за счёт циклической перестановки 18 единиц груза из одних клеток в другие нам удалось понизить стоимость плана:
Таблица №4
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
Запасы а i |
А1 |
10 |
8 27 |
5 21 |
6 |
9 |
48 |
А2 |
6 18 |
7 |
8 12 |
6 |
5 |
30 |
А3 |
8 |
7 |
10 9 |
8 12 |
7 6 |
27 |
А4 |
7 |
5 |
4 |
6 |
8 20 |
20 |
Заявки bj |
18 |
27 |
42 |
12 |
26 |
125 |
На этом способе уменьшения стоимости в дальнейшем и будет основан алгоритм оптимизации плана перевозок. Циклом в транспортной задаче мы будем называть несколько занятых клеток, соединённых замкнутой, ломанной линией, которая в каждой клетке совершает поворот на 90°.
Существует несколько вариантов цикла:
1.) 2.) 3.)
Нетрудно убедиться, что каждый цикл имеет чётное число вершин и значит, чётное число звеньев (стрелок). Условимся отмечать знаком + те вершины цикла, в которых перевозки необходимо увеличить, а знаком - , те вершины , в которых перевозки необходимо уменьшить. Цикл с отмеченными вершинами будем называть означенным. Перенести какое-то количество единиц груза по означенному циклу, это значит увеличить перевозки, стоящие в положительных вершинах цикла, на это количество единиц, а перевозки, стоящие в отрицательных вершинах уменьшить на то же количество. Очевидно, при переносе любого числа единиц по циклу равновесие между запасами и заявками не меняется: по прежнему сумма перевозок в каждой строке равна запасам этой строки, а сумма перевозок в каждом столбце - заявке этого столбца. Таким образом, при любом циклическом переносе, оставляющем перевозки неотрицательными допустимый план остаётся допустимым. Стоимость же плана при этом может меняться: увеличиваться или уменьшатся. Назовём ценой цикла увеличение стоимости перевозок при перемещении одной единицы груза по означенному циклу. Очевидно, цена цикла ровна алгебраической сумме стоимостей, стоящих в вершинах цикла, причём стоящие в положительных вершинах берутся со знаком + , а в отрицательных со знаком - . Обозначим цену цикла через g . При перемещении одной единицы груза по циклу стоимость перевозок увеличивается на величину g . При перемещении по нему k единиц груза стоимость перевозок увеличиться на k g . Очевидно, для улучшения плана имеет смысл перемещать перевозки только по тем циклам, цена которых отрицательна. Каждый раз, когда нам удаётся совершить такое перемещение, стоимость плана уменьшается на соответствующую величину k g . Так как перевозки не могут быть отрицательными, мы будем пользоваться только такими циклами, отрицательные вершины которых лежат в базисных клетках таблицы, где стоят положительные перевозки. Если циклов с отрицательной ценой в таблице больше не осталось, это означает, что дальнейшее улучшение плана невозможно, то есть оптимальный план достигнут.
Метод последовательного улучшения плана перевозок и состоит в том, что в таблице отыскиваются циклы с отрицательной ценой, по ним перемещаются перевозки, и план улучшается до тех пор, пока циклов с отрицательной ценой уже не останется. При улучшении плана циклическими переносами, как правило, пользуются приёмом, заимствованным из симплекс-метода: при каждом шаге (цикле) заменяют одну свободную переменную на базисную, то есть заполняют одну свободную клетку и взамен того освобождают одну из базисных клеток. При этом общее число базисных клеток остаётся неизменным и равным m + n - 1 . Этот метод удобен тем, что для него легче находить подходящие циклы.
Можно доказать, что для любой свободной клетке транспортной таблице всегда существует цикл и притом единственный, одна из вершин которого лежит в этой свободной клетке, а все остальные в базисных клетках. Если цена такого цикла, с плюсом в свободной клетке, отрицательна, то план можно улучшить перемещением перевозок по данному циклу. Количество единиц груза k , которое можно переместить, определяется минимальным значением перевозок, стоящих в отрицательных вершинах цикла (если переместить большее число единиц груза, возникнут отрицательные перевозки).
Применённый выше метод отыскания оптимального решения транспортной задачи называется распределённым; он состоит в непосредственном отыскании свободных клеток с отрицательной ценой цикла и в перемещении перевозок по этому циклу.
Распределительный метод решения транспортной задачи, с которым мы познакомились, обладает одним недостатком: нужно отыскивать циклы для всех свободных клеток и находить их цены. От этой трудоёмкой работы нас избавляет специальный метод решения транспортной задачи, который называется методом потенциалов.
5. Решение транспортной задачи методом потенциалов.
Этот метод позволяет автоматически выделять циклы с отрицательной ценой и определять их цены.
Пусть имеется транспортная задача с балансовыми условиями
Стоимость перевозки единицы груза из Ai в Bj равна C ij ; таблица стоимостей задана. Требуется найти план перевозок xij , который удовлетворял бы балансовым условиям и при этом стоимость всех перевозок бала минимальна.
Идея метода потенциалов для решения транспортной задачи сводиться к следующему. Представим себе что каждый из пунктов отправления Ai вносит за перевозку единицы груза (всё равно куда) какую-то сумму a i ; в свою очередь каждый из пунктов назначения Bj также вносит за перевозку груза (куда угодно) сумму b j . Эти платежи передаются некоторому третьему лицу (“перевозчику“). Обозначим a i + b j = č ij ( i =1.. m ; j =1.. n ) и будем называть величину č ij “псевдостоимостью” перевозки единицы груза из Ai в Bj . Заметим, что платежи a i и b j не обязательно должны быть положительными; не исключено, что “перевозчик” сам платит тому или другому пункту какую-то премию за перевозку. Также надо отметить, что суммарная псевдостоимость любого допустимого плана перевозок при заданных платежах (a i и b j ) одна и та же и от плана к плану не меняется.
До сих пор мы никак не связывали платежи (a i и b j ) и псевдостоимости č ij с истинными стоимостями перевозок C ij . Теперь мы установим между ними связь. Предположим, что план xij невырожденный (число базисных клеток в таблице перевозок ровно m + n -1). Для всех этих клеток xij >0 . Определим платежи (a i и b j ) так, чтобы во всех базисных клетках псевдостоимости были ровны стоимостям:
č ij = a i + b j = с ij , при xij >0.
Что касается свободных клеток (где xij = 0), то в них соотношение между псевдостоимостями и стоимостями может быть, какое угодно.
Оказывается соотношение между псевдостоимостями и стоимостями в свободных клетках показывает, является ли план оптимальным или же он может быть улучшен. Существует специальная теорема: Если для всех базисных клеток плана xij > 0,
a i + b j = č ij = с ij ,
а для всех свободных клеток xij =0 ,
a i + b j = č ij ≤ с ij ,
то план является оптимальным и никакими способами улучшен быть не может. Нетрудно показать, что это теорема справедлива также для вырожденного плана, и некоторые из базисных переменных равны нулю. План обладающий свойством :
č ij = с ij (для всех базисных клеток ) (1)
č ij ≤ с ij ( для всех свободных клеток ) (2)
называется потенциальным планом, а соответствующие ему платежи (a i и b j ) — потенциалами пунктов Ai и Bj ( i =1,..., m ; j =1,..., n ). Пользуясь этой терминологией вышеупомянутую теорему можно сформулировать так:
Всякий потенциальный план является оптимальным.
Итак, для решения транспортной задачи нам нужно одно - построить потенциальный план. Оказывается его можно построить методом последовательных приближений, задаваясь сначала какой-то произвольной системой платежей, удовлетворяющей условию (1). При этом в каждой базисной клетке получиться сумма платежей, равная стоимости перевозок в данной клетке; затем, улучшая план следует одновременно менять систему платежей. Так, что они приближаются к потенциалам. При улучшении плана нам помогает следующее свойство платежей и псевдостоимостей: какова бы ни была система платежей (a i и b j ) удовлетворяющая условию (1), для каждой свободной клетки цена цикла пересчёта равна разности между стоимостью и псевдостоимостью в данной клетке : g i , j = с i , j - č i , j .
Таким образом, при пользовании методом потенциалов для решения транспортной задачи отпадает наиболее трудоёмкий элемент распределительного метода: поиски циклов с отрицательной ценой.
Процедура построения потенциального (оптимального) плана состоит в следующем.
В качестве первого приближения к оптимальному плану берётся любой допустимый план (например, построенный способом минимальной стоимости по строке). В этом плане m + n - 1 базисных клеток, где m - число строк, n - число столбцов транспортной таблицы. Для этого плана можно определить платежи (a i и b j ), так, чтобы в каждой базисной клетке выполнялось условие :
a i + b j = с ij (3)
Уравнений (3) всего m + n - 1 , а число неизвестных равно m + n . Следовательно, одну из этих неизвестных можно задать произвольно (например, равной нулю). После этого из m + n - 1 уравнений (3) можно найти остальные платежи a i , b j , а по ним вычислить псевдостоимости, č i , j = a i + b j для каждой свободной клетки.
Таблица №5
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
a i |
А 1
|
10 č = 7 |
8 č = 6 |
5 42 |
6 6 |
9 č = 6 |
a 1 = 0 |
А2
|
6 4 |
7 č = 5 |
8 č = 4 |
6 č = 5 |
5 26 |
a 2 = -1 |
А3
|
8 č = 8 |
7 27 |
10 č = 6 |
8 č = 7 |
7 0 |
a 3 = 1 |
А4
|
7 14 |
5 č = 6 |
4 č = 5 |
6 6 |
8 č = 6 |
a 4 = 0 |
b j
|
b 1 = 7 |
b 2 = 6 |
b 3 = 5 |
b 4 = 6 |
b 5 = 6 |
a 4 = 0, ®
b 4 = 6, так как a 4 + b 4 = С44 = 6, ®
a 1 = 0, так как a 1 + b 4 = С14 = 6, ®
b 3 = 5, так как a 1 + b 3 = С13 = 5, ®
b 1 = 7, так как a 4 + b 1 = С41 = 7, ®
a 2 = -1, так как a 2 + b 1 = С21 = 6, ®
b 5 = 6, так как a 2 + b 5 = С25 = 5, ®
a 3 = 1, так как a 3 + b 5 = С35 = 7, ®
b 2 = 6, так как a 3 + b 2 = С25 = 7.
Если оказалось, что все эти псевдостоимости не превосходят стоимостей
č ij £ с ij , £ ³
то план потенциален и, значит, оптимален. Если же хотя бы в одной свободной клетке псевдостоимость больше стоимости (как в нашем примере), то план не является оптимальным и может быть улучшен переносом перевозок по циклу, соответствующему данной свободной клетке. Цена этого цикла ровна разности между стоимостью и псевдостоимостью в этой свободной клетке.
В таблице № 5 мы получили в двух клетках č ij ³ с ij , теперь можно построить цикл в любой из этих двух клеток. Выгоднее всего строить цикл в той клетке, в которой разность č ij - с ij максимальна. В нашем случае в обоих клетках разность одинакова (равна 1), поэтому, для построения цикла выберем, например, клетку (4,2):
Таблица №6
ПН ПО |
В1 |
В2 |
В3 |
В4 |
В5 |
a i |
А1
|
10 |
8 |
5 42 |
6 6 |
9 |
0 |
А2
|
6 + 4 |
7 |
8 |
6 |
5 - 26 |
-1 |
А3
|
8 |
7 - 27 |
10 |
8 |
7 + 0 |
1 |
А4
|
7 - 14 |
5 + - |
4 |
6 6 |
8 |
0 |
b j
|
7 |
6 |
5 |
6 |
6 |
Теперь будем перемещать по циклу число 14, так как оно является минимальным из чисел, стоящих в клетках, помеченных знаком - . При перемещении мы будем вычитать 14 из клеток со знаком - и прибавлять к клеткам со знаком + .
После этого необходимо подсчитать потенциалы a i и b j и цикл расчетов повторяется.
Итак, мы приходим к следующему алгоритму решения транспортной задачи методом потенциалов.
1. Взять любой опорный план перевозок, в котором отмечены m + n - 1 базисных клеток (остальные клетки свободные).
2. Определить для этого плана платежи (a i и b j ) исходя из условия, чтобы в любой базисной клетке псевдостоимости были равны стоимостям. Один из платежей можно назначить произвольно, например, положить равным нулю.
3. Подсчитать псевдостоимости č i , j = a i + b j для всех свободных клеток. Если окажется, что все они не превышают стоимостей, то план оптимален.
4. Если хотя бы в одной свободной клетке псевдостоимость превышает стоимость, следует приступить к улучшению плана путём переброски перевозок по циклу, соответствующему любой свободной клетке с отрицательной ценой (для которой псевдостоимость больше стоимости).
5. После этого заново подсчитываются платежи и псевдостоимости, и, если план ещё не оптимален, процедура улучшения продолжается до тех пор, пока не будет найден оптимальный план.
Так в нашем примере после 2 циклов расчетов получим оптимальный план. При этом стоимость всей перевозки изменялась следующим образом: F0 = 723, F1 = 709, F2 = Fmin = 703.
Следует отметить так же, что оптимальный план может иметь и другой вид, но его стоимость останется такой же Fmin = 703.
Список использованной литературы
1. Еремин И.И., Астафьев Н.Н. Введение в теорию линейного и выпуклого программирования М.; Наука, 1976г.
2. Карманов В.Г. Математическое программирование. – М.; Наука, 1986г.
3. Моисеев Н.Н., Иванов Ю.П., Столярова Е.М. Методы оптимизации. – М.; Наука, 1978г.
4. Иванов Ю.П., Лотов А.В. Математические модели в экономике. – М.; Наука, 1979г.
5. Бронштейн И.Н., Семендяев К.А. Справочник по математике. – М.; Наука, 1986г