Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Исследование алгоритмов оптимизации.doc
Скачиваний:
15
Добавлен:
01.05.2014
Размер:
331 Кб
Скачать

Постановка задачи

Пусть заданы m пунктов снабжения, из которых продукт может транспортироваться в каждый из n пунктов потребления.

Производительность i -го источника равна αi, а потребление j-го стока равно Bj; стоимость транспортировки единицы продукта из пункта i в пункт j равна Сij.

Требуется найти такую схему транспортировки продукта, при ко­торой общие транспортные затраты минимальны.

Предполагая, что выполнено условие баланса

(5.1)

выпишем математическую постановку задачи.

Минимизировать

(5.2)

при условии, что

i = 1, ..., m,

j = 1, ..., n,

Xij ≥ 0, i = 1, ..., m, j = 1, ..., n.

Здесь Xij - количество продукта, транспортируемого из i -го ис­точника в j -й сток.

Исходные данные при решении задачи вручную удобно зафиксиро­вать в таблице вида табл. 5.1:

Таблица 5.1

αi

Bj

B1

...

Bn

α1

C11

...

C1n

...

...

...

...

αm

Cm1

...

Cmn

- 20 -

Краткие общие сведения

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

1. Поиск начального решения, т.е. набора { Xij }, удовлет-воряющего ограничениям (5.3).

2. Если {Xij} - оптимальное решение, то конец.

3. Модификация решения, не увеличивающая его стоимости, и пе­реход на 2.

Задача (5.2), (5.3) является частным случаем задачи линейного программирования, а вышеприведенный алгоритм укладывается в общую схему решения этой задачи.

Выделим специфические черты, отличающие метод потенциалов.

1. В силу (5.1) условие (5.3) содержит ровно m+n-1 незави­симых ограничений, и, следовательно, любое базисное решение транс­портной задачи имеет не более m+n-1 ненулевых компонент.

2. Транспортная задача допускает несколько простых способов поиска начального базисного решения. Один из возможных алгоритмов реализован в лабораторной работе:

а) выбрать: в табл.5.1 незаполненную и непомеченную клетку с минимальной стоимостью (пусть, для определенности, это клетка с индексами (k, l));

б) заполнить выбранную клетку числом

Xkl = min { αk, Bl },

т.е. максимально загрузить соответствующий путь;

в) модифицировать величины спроса и предложения:

1) αk = αk - Xkl

Bl = BlXkl.

2) если αk = 0,

то пометить все незаполненные и непомеченные клетки k-й строки,

иначе пометить все незаполненные и непомеченные клетки l -го столбца;

д) если остались незаполненные или непомеченные клетки,

идти на а).

Заполненные клетки будем называть базисными (некоторые из них могут содержать нули).

- 21 -

Заполненные клетки будем называть базисными (некоторые из них могут содержать нули).

3. Проверку оптимальности полученного решения удобно осущест­влять, переходя к двойственным переменным. Не входя в подробности обоснования, приведем соответствующий алгоритм:

а) найти "потенциалы" и , такие, что

Ui + Vj = Cij (5.5)

для всех пар (i, j), выделяющих базисные клетки. Легко видеть, что одну из переменных Ui или Vj (по нашему выбору) можно поло-жить равной чему угодно, после чего система (5.5) решается одно­значно;

б) для всех небазисных клеток вычислить так называемые "ха­рактеристические разности"

Xij = Ui + Vj - Cij

в) если все Xij неотрицательны,

то решение оптимально,

иначе см. следующий пункт.

При решении задачи вручную проверку оптимальности удобно произво­дить с использованием табл.5.2.

Таблица 5.2

C11

...

C1n

Ui

X11

X1n

...

...

...

...

Cm1

...

Cmn

Um

Xm1

Xmn

V1

...

Vn

4. В случае, если полученное решение неоптимально, можно от-носительно просто улучшить его:

а) выбрать какую-либо клетку, для которой Xij < 0;

б) найти последовательность клеток (цикл)

(i1=i, j1=j), (i2,j1), (i2,j2), ..., (ip,jp-1), (ip,jp), (ip+1=i1,jp), в которой все клетки, кроме клеток (i1,j1), являются базисными;

в) перераспределить грузопоток по найденному циклу:

пропустить дополнительно X единиц груза по каждому из пу- тей (ik, jk),

уменьшить на X количество груза, перевозимого по путям

(ik+1, jk).

- 22 -

Здесь

(5.6)

г) включить в базис клетку (i, j) и исключить из базиса одну из клеток, поток в которой после модификации, проведенной в п. в), оказывается равным 0.

Вообще говоря, п. в) вышеприведенного алгоритма следует сводить к задаче поиска цикла в ориентированном графе (связанном с модифици­руемым решением), однако при небольших размерах задач, решаемых в ходе лабораторной работы, цикл можно найти путем простого направ- ленного перебора в глубину. Следует запомнить, что величина Х, вычисляемая в (5.6), может оказаться равной 0. При использовании такого цикла меняется не грузопоток, а лишь набор базисных пере­менных.