Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teoria_igr_i_issled_operatsy.doc
Скачиваний:
170
Добавлен:
07.06.2015
Размер:
5.21 Mб
Скачать

6.Транспортные задачи линейного программирования

Транспортная задача линейного рограммирования является одной из самых распространенных специальных задач линейного программирования. Первая строгая постановка задачи принадлежит Хичкоку, и поэтому в зарубежной литературе иногда её называют проблемой Хичкока. Первый точный метод решения транспортной задачи был разработан российскими учеными Л.В. Канторовичем и М.К. Гавуриным. В настоящей работе рассмотрены два варианта постановок транспортной задачи: сетевая и матричная.

6.1. Транспортная задача в сетевой постановке

Пусть G=E,V,H cвязный ориентированный граф, гдеЕ– множество вершин, V– множество ориентированных дуг,H – отображениеH:VEE, H(v)=(h1(v),h2(v)). Вершинуh1(v) будем называть началом дугиv, h2(v) – ее концом.V+i– множество дуг, входящих в вершинуi, Vi– множество дуг, выходящих из вершиныi.Все вершины графа делятся на пункты производства (источники) и пункты потребления (стоки) потока. Для каждой вершиныiЕизвестна величина, задающая объем производства или потребленияi–ой вершины, причем, еслиbi<0, то вершинаi– пункт производства (источник),еслиbi>0, тоi–я вершина – пункт потребления (сток) потока, еслиbi=0, то вершинаiпромежуточная вершина.

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

Приведем формализованную постановку данной задачи:

(6. 1)

при ограничениях

,

(6. 2)

xv 0, vV,

(6.3)

где (6.1) – минимизируемый функционал (суммарная стоимость перевоза потока), (6.2) – уравнение материального баланса, т.е. суммарный поток, входящий в вершину, минус суммарный поток, выходящий из вершины, должен быть равен объему потока, производимому (потребляемому) в i–ом пункте, соотношение (6.3) означает, что транспортируемый поток движется только в направлении дуг графаG.

Если задача (6.1)–(6.3) разрешима, то .Легко видеть, что она является задачей линейного программирования и может быть решена алгоритмом симплекс-метода. Однако сетевая структура задачи позволяет разработать более эффективные методы ее решения. Таковым является метод потенциалов для решения транспортных задач.

Метод потенциалов решения данной задачи предполагает, что на исходном графе некоторым способом определено начальное исходное базисное дерево G=E,V',H, (его дуги будем называть базисными), по которому осуществляется перевозка груза таким образом,

Для определения величин xvV'можно воспользоваться следующим алгоритмом:

Алгоритм 1.

0 – шаг. E:=E.

kй шаг. ЕслиE, то найти вершину, для которой (|V'+i|+|Vi|=1) {т.е. вершинаiконцевая наG=E',V',H}.

Если |V'+i|=1, то для дугиvV'+i выполнить:

 xv:=bi, .

Если |Vi|=1, то для дугиvVi выполнить:

 xv:=–bi, .

Перейти к следующему шагу.

Замечание. В результате работы алгоритма может получиться недопустимое решение: т.е. для некоторыхvV xv<0.В этом случае следует сменить исходное базисное дерево. Однако это не гарантирует, что на нем будет получено допустимое решение. Далее будет описан алгоритм, позволяющий либо определить базисное решение, либо доказать, что его не существует.

Будем считать, что исходное базисное дерево G’ найдено и дляvV' определеныxv>0.Для того, чтобы определить, является ли полученное решение оптимальным, воспользуемся следующим критерием оптимальности:

Критерий оптимальности:

Пусть xv,vV, – такое решение задачи (6.1)(6.3), что дляvV\V' xv=0 и дляvV' xv0.Это решение оптимально тогда и только тогда, когда существуют числаui, iE, называемые потенциалами, такие, что

(6.4)

(6.5)

Если переменные ui, iE, интерпретировать как цены перевозимой продукции, то выписанные зависимости интерпретируются так. По дуге, по которой перевозится продукция цена в конце равна цене в начале плюс стоимость перевозки. В оптимальном решении по дуге не везется продукция, когда цена в конце дуги меньше цены в начале плюс стоимость перевозки. (В оптимальном решении по дуге не везется продукция, если цена в конце дуги меньше суммы: цена в начале плюс стоимость перевозки). Для расчета потенциалов применяется следующий алгоритм:

Алгоритм 2.

0–шаг. Для произвольной (только одной) вершины iEполагаемui:= 0;

kшаг. Найти дугуvV', для которой известен потенциал, только одной из ее вершин. Если такой дуги нет, то конец работы, в противном случае используя зависимость ,определяем потенциал в вершине, в которой он неизвестен, и переходим к (k+1) шагу.

Алгоритм 3.

1. Среди всех дуг vV\V'ищем дугуv0 такую, что ;

2. Если такой дуги нет, то исходная задача (6.1)–(6.3) решена, иначе следует выполнить алгоритм 4 перехода к новому базисному дереву.

Алгоритм 4.

V':=V'{v0}, гдеv0дуга, найденная в Алгоритме 3. Теперь графG'=E,V',H содержит ровно один циклG''=E'',V'',H, причемv0V'. На подграфеG''задаем направление обхода, совпадающее с направлением дугиv0, и пропускаем по подграфуG''в направлении обхода дополнительный поток, величиной. Каждой дугеvV''приписываем символ «+», если направление дугиvсовпадает с направлением обхода, и символ «–» в противном случае. Полагаем=min xvсредиvV”, которым приписан символ «–».

Полагаем ;

Для всех v V"\{v0} :

xv:= xv+ , если дугеvприписан знак +;

xv:= xv, если дугеv приписан знак –.

Из множества V’\{v0} исключаем дугу, для которойxv=0. Если таких дуг несколько (вырожденный случай), то удаляем только одну так, чтобы не нарушилась связность графаG'=E,V’,H.

Для полученного решения заново вычисляем Алгоритмом 2 потенциалы и анализируем его на оптимальность Aлгоритмом 3, и т.д. до тех пор, пока не будет найдено оптимальное решение.

Алгоритм поиска исходного базисного дерева.

При поиске исходного базисного дерева применяют описанный выше метод для следующей «искусственной» задачи.

Строим граф G=E,V,H, в которомE=E{i0},гдеi0– дополнительная вершина,V=VV1V2, где

V1 множество дополнительных дуг, направленных от вершин – пунктов производства к дополнительной вершине i0,

V2– множество дополнительных дуг, направляемых отi0к промежуточным вершинам и вершинам–пунктам потребления.

Для vV полагаем cv=0;

для vV1 полагаемcv=1;

для vV2полагаем cv=1.

Полагаем .

В качестве исходного базисного дерева берется подграф G=E,V1V2H.Если в результате решения этой задачи оказалось, что оптимальное значение функционала строго больше нуля, то исходная задача (6.1) –(6.3) решения не имеет, в противном случае будет получено базисное дерево исходной задачи.

Пример.Решим задачу, представленную графом, изображенным на рис. 6. 1

Рис. 6.1.

Вершины графа обозначены цифрами от 1 до 9, обведенными кругом. Около дуг написаны их имена. Рядом с каждой вершиной проставлены мощности вершин:

b1=3; b2=1; b3=7; b4=0; b5=0; b6=5; b7=2; b8=4; b9=0.

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

Дуга v

v3

v2

v1

v11

v10

v4

v5

v7

v6

cv

1

2

1

6

1

1

1

2

2

Дуга v

v9

v8

v13

v12

v15

v14

v17

v16

v18

cv

4

1

3

1

7

6

1

3

2

Примем за исходный базис дерево, дуги которого выделены жирной линией (см. Рис. 6.1).

Шаг 1.

Определим объем перевозок для исходного базисного дерева.

Общая стоимость перевозок составит

Определим потенциалы вершин:

u9:= 0;

u7u93;

u8u7+2;

u4u77;

u5u4+6;

u6u5+5;

u3u48;

u1u49;

u2u48;

Проверим полученное решение на оптимальность:

На дуге v10u7 > u2 +, следовательно, дугуv10вводим в базис. Возникший цикл (см. Рис. 6.2) обходим в направлении дугиv10.

Рис. 6.2

 ; 1 ; 6 ;

 = min (1,6)=1 ; =0, дугуv4выводим из базиса.

Шаг 2.

Пересчитаем объем перевозок для нового базиса:

3 ; 1 ;7 ; 4 ; 5 ; 5 ; 61 = 5 ; 0; f=48.

Определим потенциалы вершин.

u1=9 ; u2=8 ; u3=8 ; u4=7 ;u5=6 ; u6=5 ; u7=3 ; u8=2 ;u9:=0 ;

Проверим полученное решение на оптимальность. На дуге v6u6>u3+, следовательно, решение не оптимально и дугуv6вводим в базис. Возникший цикл обходим в направлении дугиv6,

= ; =7 ; = 5 ; = 5 ;

 = min (7,5,5)=5 . =0 дугуv12выводим из базиса.

Шаг 3.

Пересчитаем объемы перевозок для нового базиса:

.

Определим потенциалы вершин u1=9 ; u2=8 ; u3=8 ; u4=7 ;u5=6 ; u6=6 ; u7=3 ; u8=2 ; u9:=0 . Полученное решение оптимально. Дерево перевозок изображено на рис. 6.3. Стоимость перевозок составит:

Рис. 6.3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]