Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инж.творчество / Лекции / Лекция-ЛинПрог+Тзадача(исправлено).doc
Скачиваний:
57
Добавлен:
29.03.2015
Размер:
608.26 Кб
Скачать

Найти такие неотрицательные значения переменных хij , которые минимизировали бы функцию (2.48) и удовлетворяли бы ограничениям (2.49) и (2.50).

Данная задача носит название транспортной задачи. В общем виде транспортную задачу можно сформулировать в следующем виде:

Имеется m поставщиков и n потребителей. Каждый поставщик содержит товар в количестве ai (i=1, 2, . . . , m). Каждому потребителю необходимо bj (j=1, 2, . . . , n) товара. Известна стоимость Сij перевозки единицы товара от i-го поставщика к j-ому потребителю. Необходимо составить такой план перевозок, при котором суммарная стоимость была бы наименьшей.

Если хij — количество товара, перевезенного от i-гo поставщика к j-ому потребителю, то математическая формулировка выглядит так:

(2.60)

(i=1,2,…,m), (2.61)

(j=1,2,…,n), (2.62)

(i=1,2,…,m; j=1,2,…,n). (2.63)

Задача (2.60) — (2.63) является задачей ЛП, в которой m*n переменных и m + n ограничений, записанных в виде равенств.

Если общее количество товара у всех поставщиков равно общему количеству товара, требуемого потребителями, т. е.

(2.64)

то такая модель транспортной задачи называется закрытой. В противном случае, модель называется открытой. Если модель является открытой, то соответствующие ограничения принимают форму неравенств. Отметим, что задача (2 61) — (2 63), относится к закрытой модели.

Транспортную задачу обычно представляют в виде таблицы.

Таблица 2.7.1

Потребители

1

2

j

n

запас

1

С11

С12

.

С1j

.

С1n

a1

2

С21

С22

.

С2j

.

С2n

a2

:

.

.

.

.

.

i

Сi1

Сi2

.

Сij

.

Сin

ai

:

.

.

.

.

.

.

m

Сm1

Сm2

.

Сmj

….

Сmn

am

потребность

b1

b2

bj

bn


П

о

с

т

а

в

щ

и

к

и

В каждую клетку в верхний левый угол записывают соответствующее значение Сij.

Сделаем одно замечание. Мы видели, что число уравнений, составляющих ограничения транспортной задачи, равно m+n. Однако, на самом деле одно из уравнений этой системы (причем любое) является линейной комбинацией остальных уравнений, что можно проверить непосредственно.

Тот факт, что в транспортной задаче одно из уравнений является лишним, следует из равенства запасов и потребностей. Таким образом, число линейно-независимых уравнений, составляющих ограничения в транспортной задаче, равно m + n — 1. Этим важным фактом воспользуемся в дальнейшем. В соответствии с теоремойII. 1 это означает, что в оптимальном плане не может быть больше, чемm+n— 1 ненулевых перевозок.

Конечно, можно найти решение транспортной задачи с помощью известных методов решения задач ЛП (например, симплекс-метода). Но при этом нужно учитывать то, что в транспортных задачах число переменных достаточно велико. Поэтому в дальнейшем мы рассмотрим специфичные способы решения.

Построение первоначального опорного плана транспортной задачи

Идейно методы решения транспортных задач это те же алгоритмы симплекс-метода, представленные для транспортной задачи в удобной форме. Сначала находится первоначальный опорный план, затем осуществляется процесс улучшения решения до тех пор, пока найденный опорный план не станет оптимальным. Рассмотрим два способа получения первоначального опорного плана.

Метод северо-западного угла

Будем рассматривать задачу ( ) — ( ). Представим ее в виде таблицы:

Таблица 2.7.2

A

B

C

D

Запас

1

12

400

13

100

4

6

500

2

6

4

700

10

11

700

3

10

9

100

12

200

4

500

800

Потребность

400

900

200

500

Название данного метода свидетельствует о том, что мы стартуем с клетки, расположенной в верхнем левом углу и движемся по направлению "юго-восток". В клетки вносится количество перевозимого груза. При этом клетки, в которых имеется ненулевое количество груза, называются занятыми, а остальные — свободными. Вы, наверное, уже догадались, что количество, записанное в занятую клетку, есть не что иное, как значение соответствующего х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. Можно подсчитать общую стоимость перевозок при данном плане:

Конечно, очень проблематично считать, что найденный план яв­ляется оптимальным. Достоинством метода северо-западного угла, (по­жалуй, единственным) является его простота.

Метод Фогеля

Метод, предложенный американским ученым У. Фогелем, являет­ся более сложным, но, в то же время, первоначальный опорный план этого метода наиболее близок к оптимальному. Идея метода основана на так называемом понятии штрафных затрат. Давайте выясним, что это такое. Обратим опять свое внимание к задаче ( ) — ( ), которую представим в виде таблицы:

Таблица 2.7.3

А

В

С

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

Штраф

4 = 10 – 6

5=9-4

6 = 10 – 4

2 = 6 – 4

Рассмотрим ряд 1. Наименьшая цена доставки со склада 1 — это до завода С, и цена равна 4. Следующая наименьшая цена — до завода D. Она равна 6. Поэтому, если мы не будем посылать со склада 1 товар заводу С, то мы дополнительно понесем издержки, которые будут никак не меньше, чем 6 — 4 = 2. Это и будут штрафные затраты, которые записываются в дополнительный столбец таблицы 2.7.3 Ана­логично определяются величины штрафных затрат всех остальных рядов, а также для всех колонок. Как видно из таблицы 2.7.3 наи­большая величина штрафа соответствует колонке С. Уделим этой ко­лонке больше внимания, т. к. именно в этом случае понесутся наи­большие потери, если не будет использоваться клетка с наименьшей стоимостью. В этой колонке выбирается клетка с наименьшей ценой — клетка 1С и заполняется максимально возможным грузом. Возмож­но поместить только 200 т груза, в результате потребности завода С будут удовлетворены, но на складе 1 останется 500 — 200 = 300 т груза. В дальнейшем колонка С не рассматривается. Построим следую­щую таблицу:

Таблица 2.7.4

А

В

С

D

Запас

Штраф

1

12

13

4

200

6

500-200 =300

6

2

6

4

10

11

700

2

3

10

9

12

4

800

5

Спрос

400

900

0

500

Штраф

4

5

0

2



Опять ищется ряд или колонка (без С), где штраф наибольший. Это 1 ряд. В этом ряду находится клетка с наименьшей ценой — клет­ка 1D и заполняется максимально возможным количеством товара. Из таблицы ясно, что в клетку помещается 300 т, т. к. такое количе­ство товара осталось на складе 1. В результате запас склада 1 будет исчерпан, но заводу D необходимо еще 500 — 300 = 200 т. На следу­ющих этапах ряд 1 и колонка С уже не будут учитываться. Следующая таблица будет иметь вид:

Таблица 2.7.5

А

В

С

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

Штраф

4

5

0

7



Вам уже ясно, что делать дальше? Да, мы опять находим наиболь­шее значение штрафа (колонка D); в клетку 3D заносим 200 (поче­му?) и в дальнейшем исключаем из рассмотрения колонку D, т. к. спрос завода D удовлетворен.

Продолжая этот процесс, окончательно получаем таблицу (проде­лайте самостоятельно):

Таблица 2.7.6

А

В

С

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

В результате получился первоначальный опорный план данной за­дачи:

всеoстальные

Подсчитаем суммарные затраты:

Опять же нет уверенности в том, что найденный план оптимален, хотя он, безусловно, лучше плана, полученного методом северо-за­падного угла.

Прежде чем мы перейдем к ответу на вопрос: а как определить, является ли данный опорный план оптимальным? — мы еще раз сфор­мулируем основные этапы обоих алгоритмов.

Метод северо-западного угла:

  1. Начинаем с клетки, находящейся в верхнем левом углу. Напол­няем эту клетку максимально возможным грузом. Это коли­чество определяется величинами спроса и запаса ряда 1 и пер­вой колонки. Помещаемое количество груза равно меньшему значению спроса или запаса.

  2. В зависимости от того, что использовано полностью (спрос или запас), переходим к соседней клетке. Это будет клетка, на­ходящаяся в первом ряду и во втором столбце (если удовлетворен спрос), или клетка второго ряда и первого столбца (если использован запас).

  3. Так же, как и в пункте 1 максимально заполняем следующую клетку.

  4. Делаем аналогичные операции, как и в пунктах 2 и 3. Процесс продолжим до тех пор, пока все потребности полностью не удовлетворены и не исчерпаны все запасы.

Метод Фогеля:

  1. Для каждого ряда и каждого столбца находим штрафные затра­ты путем вычитания наименьшей цены из следующей наименьшей цены.

  2. Определяем ряд или столбец, где штрафные затраты наибольшие.

  3. В выбранном в пункте 2 ряду или столбце заполняем макси­мально клетку с наименьшей стоимостью.

  4. Возвращаемся к пункту 1, при этом ряд или столбец, выбран­ный в пункте 2, не учитывается.

  5. Процесс повторяется до тех пор, пока все потребности не будут удовлетворены и все запасы не будут использованы.

Методы улучшения решения транспортной задачи. Критерий оптимальности

Мы научились строить первоначальный опорный план транспорт­ной задачи. Следующим этапом исследования будет рассмотрение воз­можностей улучшения первоначального решения. Естественно, что улучшить решение, т. е. уменьшить значение целевой функции, воз­можно только путем перераспределения груза из занятых клеток в какие-то незанятые. Возьмем первоначальное решение, полученное методом северо-западного угла.

Таблица 2.7.7

А

В

С

D

Запас

1

12

400

13

100

4

+

6

500

2

6

4

700

10

11

700

3

10

9

100

+

12

200

4

500

800

Спрос

400

900

200

500



Рассмотрим первый ряд. Видно, что клетка с наименьшей стои­мостью в этом ряду 1С не занята. Естественно, возникает желание занять эту клетку. Поэтому мы:

  1. Увеличим число единиц клетки 1С на 1. Пометим эту клетку значком "+", который поместим в нижний левый угол клетки.

  2. Увеличение на 1 в клетке 1С необходимо компенсировать умень­шением в занятой клетке на 1 в первом ряду (или колонке С). Выберем клетку 1В. Пометим ее значком "—".

  3. Нужно компенсировать уменьшение груза на 1 в клетке 1В. Это возможно сделать в клетках 2В или ЗВ. Предположим, выбира­ется клетка 2В. Но тогда в строке 2 станет больше количества груза, чем имеется в запасе в этой строке. Поэтому мы выбираем клетку ЗВ, т. е. в эту клетку добавляется единица груза и она помечается значком "+".

  1. Чтобы не изменился баланс в третьем ряду (увеличили груз в клетке ЗВ), нужно уменьшить на 1 количество груза в остав­шихся занятых клетках этого ряда. Выберем клетку ЗС и пометим "—". Понятно, что выбрать таким образом клетку 3D мы не можем, т.к. при этом у нас нарушился бы баланс в столбце D, а компенсировать его нечем.

  2. Уменьшение на 1 в клетке ЗС компенсируется увеличением на 1 в клетке 1С (шаг 1). Таким образом, баланс сохраняется везде.

Заметим, что клетки, помеченные знаком "+" и знаком "—", об­разуют замкнутую цепь. Это важный момент, который всегда нужно иметь в виду. В дальнейшем такую замкнутую цепь (или цикл) будем обозначать координатами помеченных клеток. В нашем случае — это 1С-1В + ЗВ-ЗС.

Чего же мы добились таким перераспределением? Давайте про­анализируем этапы нашей работы. Наглядно это можно представить в виде следующей схемы:

Действие Клетка Изменение целевой

функции

  1. Увеличить на 1 1С +4

  2. Уменьшить на 1 1В —13

  3. Увеличить на 1 ЗВ +9

  4. Уменьшить на 1 ЗС —12 Общее изменение —12

Вывод, к которому мы приходим: перераспределение на единицу груза, проведенное нами, приводит к уменьшению значения целевой функции на 12 единиц, т. е. улучшает ее значение. Становится ясным, что наше первоначальное решение не оптимально, раз оно может быть улучшено.

Вообще, цепи в транспортных задачах должны удовлетворять сле­дующим особенностям:

  1. Цепь является замкнутым многоугольником. Если бы она была незамкнутой, то мы не могли бы перераспределить потоки груза с сохранением баланса по строкам или столбцам.

  2. Все линии цепи — прямые, принадлежащие одной строке (или столбцу) матрицы транспортной задачи.

  1. В цепи четное число вершин.

  1. Для каждой начальной клетки цепи можно построить только одну цепь.

Мы начали перераспределение с клетки 1С. А если мы начнем с какой-либо другой клетки? Что будет при этом? Возьмем, например, цепь 1D —1В + ЗВ — 4D. Подсчитаем, какое изменение целевой функции произойдет:

Значение уменьшится, но на меньшую величину, чем в первом случае.

Для примера еще рассмотрим какую-нибудь цепь: 2А — 2В + 1В — 1А.

В этом случае целевая функция изменится на:

т. е. увеличится. Аналогично можно сделать для любой незанятой клет­ки. Ясно, что перераспределения могут как увеличивать значение це­левой функции (что нам не надо), так и уменьшать (к чему нужно стремиться). Но неужели мы должны рассматривать все цепи? А как легче определить возможность улучшения найденного решения? Ины­ми словами, есть ли критерий оптимальности транспортной задачи? Ответ на этот вопрос дает следующая теорема:

Теорема III. 1.

Если план транспортной задачи является оптимальным, то ему соответствует система из т + п чисел

для (2.65)

для (2.66)

(i = 1,2,..., т;j =1,2,..., п).

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

Числа и. называются потенциалами строк и столбцов соот­ветственно. Условия (2.65) есть не что иное, как система линейных уравнений для определения потенциалов, т. к. неравенства > 0 ха­рактерны только для занятых клеток. Условия (2.66) — условия оптимальности транспортной задачи. Согласно этим условиям вели­чины =()должны быть неотрицательными для незанятых клеток в случае оптимального плана. Вспомним, как мы определяли величину, на которую изменится значение целевой функции при построении цепи. Например, для клетки 1С это значение будет равно:

(2.67)

Покажем, что Е* = Е Действительно,

В силу (III 3.1)

Подставим последние равенства в (III 3.3)

Таким образом, если меньше алгебраической суммы потен­циалов своих строки и столбца, то перераспределение поставок поцепи к этой клетке уменьшает значение целевой функции. Наоборот, если большето перераспределений к этой клетке увеличиваетцелевую функцию. Если= , то перераспределение к этой клетке не приведет к изменению целевой функции. Вам не напоми­нает это разности?

Теперь становятся ясными этапы алгоритма получения опти­мального решения транспортной задачи.

  1. этап. Находится первоначальный опорный план.

  2. этап. Вычисляются потенциалы. Здесь надо иметь в виду, что

количество потенциалов т+п, а уравнений для их опре­деления п+т-1 (число занятых клеток). Поэтому од­ному из потенциалов (любому) придают какое-либо зна­чение, например, нулевое.

этап. Подсчитываются все для незанятыхклеток. Если все, то найденный опорный план опти­мален, если есть,то строится цикл.

Пример решения транспортной задачи в Internet: Необходимо ежедневно с первого склада перевозить в два магазина 50 телевизоров , а со второго склада – 70. При этом первый магазин продает в день 40 телевизоров, а второй – 80 (50+70-40). В транспортной задаче неравенства в ограничениях заменены равенствами. Получается система линейных алгебраических уравнений с множеством решений, одно из которых оптимизирует целевую функцию. Известны затраты на перевозку одного телевизора со складов в магазины (четыре константы: 1200 у.е. при перевозке одного телевизора с первого склада в первый магазин, 1600 – с первого склада во второй магазин, 800 – со второго склада в первый магазин и 1000 – со второго склада во второй магазин).

Рис.2.24

Решите задачу о перевозке с 3 складов на 4 завода

1