Двойственные задачи в линейном программировании

3.1. Понятие двойственности. Построение пары
взаимно двойственных задач

Каждой задаче линейного программирования можно сопоставить определенным образом связанную с ней другую задачу, которая называется двойственной.

Первоначальная задача называется прямой или исходной. Многие задачи линейного программирования первоначально ставятся в виде исходных или двойственных задач, поэтому говорят о паре взаимно двойственных задач линейного программирования.

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

В табл. 10показана пара симметричных двойственных задач линейного программирования.

Таблица 10

Прямая задача Двойственная задача
Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru

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

1. если прямая задача решается на максимум, то двойственная – на минимум, и наоборот.

2. в задаче на максимум ограничения-неравенства имеют смысл £, а в задаче минимизации – смысл ³.

3. коэффициенты cj целевой функции прямой задачи являются свободными членами ограничений двойственной задачи.

4. свободные члены bi ограничений прямой задачи являются коэффициентами при соответствующих переменных целевой функции двойственной задачи.

5. матрица системы ограничений двойственной задачи получается из матрицы системы ограничений исходной задачи транспонированием.

6. если на переменную прямой задачи наложено условие неотрицательности, то соответствующее ограничение двойственной задачи записывается как ограничение-неравенство, если же нет, то как ограничение-равенство.

7. если какое-либо ограничение прямой задачи записано как равенство, то на соответствующую переменную двойственной задачи условие неотрицательности не налагается.

8. число ограничений прямой задачи равно числу переменных двойственной, а число ограничений двойственной – числу переменных прямой задачи.

Пример 6. Построить двойственную задачу к каждой из исходных:

1. Двойственные задачи в линейном программировании - student2.ru

Двойственные задачи в линейном программировании - student2.ru

2. Двойственные задачи в линейном программировании - student2.ru

Двойственные задачи в линейном программировании - student2.ru

Решение

1. для данной задачи в симметричной форме получим двойственную, пользуясь приведенными правилами:

f = 15y1 + 9y2 ® max;

Двойственные задачи в линейном программировании - student2.ru

2. данная задача записана в произвольной несимметричной форме. Прежде всего, ограничения типа ³ умножением на –1 сведем к ограничениям типа £. Получим

z = –4x1 + 2x2 – 7x3 + 5x4 ® max;

Двойственные задачи в линейном программировании - student2.ru

В результате применения указанных правил получим следующую модель двойственной задачи:

f = –3y1 + 7y2 + 4y3 – 5y4 – 2y5 ® min;

Двойственные задачи в линейном программировании - student2.ru

3.2. Теоремы двойственности. Критерий оптимальности
Канторовича (достаточный признак оптимальности)

Если для некоторых допустимых планов х* и у* пары двойственных задач выполняется равенство z(x*) = f (y*), то х* и у* являются оптимальными планами соответствующих задач.

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

Согласно теории линейного программирования каждой задаче линейного программирования соответствует двойственная ей. Основные утверждения о взаимно двойственных задачах содержатся в нижеприведенных теоремах.

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

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

Двойственные задачи в линейном программировании - student2.ru .

2. В прямой задаче допустимое множество не пусто, а целевая функция на этом множестве не ограничена сверху. При этом у двойственной задачи будет пустое допустимое множество.

3. В двойственной задаче допустимое множество не пусто, а целевая функция на этом множестве не ограничена снизу. При этом у прямой задачи допустимое множество оказывается пустым.

4. Обе из рассматриваемых задач имеют пустые допустимые множества.

Вторая теорема двойственности (теорема о дополняющей нежесткости). Для того, чтобы планы Двойственные задачи в линейном программировании - student2.ru и Двойственные задачи в линейном программировании - student2.ru пары двойственных задач были оптимальными, необходимо и достаточно выполнение следующих условий:

Двойственные задачи в линейном программировании - student2.ru (13)
Двойственные задачи в линейном программировании - student2.ru (14)

Условия (13), (14) называются условиями дополняющей нежесткости. Из них следует, что если какое-либо неравенство системы ограничений одной из задач не обращается в строгое равенство оптимальным планом этой задачи, то соответствующая компонента оптимального плана двойственной задачи должна равняться нулю; если же какая-либо компонента оптимального плана одной из задач положительна, то соответствующее ограничение в двойственной задаче ее оптимальным планом должно обращаться в строгое равенство.

Таким образом, если Двойственные задачи в линейном программировании - student2.ru , то Двойственные задачи в линейном программировании - student2.ru

если Двойственные задачи в линейном программировании - student2.ru , то Двойственные задачи в линейном программировании - student2.ru

Точно так же, если Двойственные задачи в линейном программировании - student2.ru , то Двойственные задачи в линейном программировании - student2.ru

если Двойственные задачи в линейном программировании - student2.ru , то Двойственные задачи в линейном программировании - student2.ru

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

Для этого достаточно воспользоваться соответствием переменных прямой и двойственной задач и оценок в последней симплексной таблице:

х1 х2 хj хn xn+1 хn+2 хn+i хn+m
Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru
ym+1 ym+2 ym+j ym+n y1 y2 yi ym
Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru

Отсюда имеем оптимальный план двойственной задачи. Если прямая задача решается на максимум, то Двойственные задачи в линейном программировании - student2.ru , Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru .

Если прямая задача решается на минимум, тогда Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru .

Пример 7. Для исходной задачи

Двойственные задачи в линейном программировании - student2.ru

Двойственные задачи в линейном программировании - student2.ru

построить двойственную и решить ее симплексным методом. Записать решение исходной и двойственной задач.

Решение

Двойственная задача будет иметь две переменные y1 и y2, так как исходная задача содержит два ограничения. Используя общее правило записи двойственной задачи, получим

Двойственные задачи в линейном программировании - student2.ru

Двойственные задачи в линейном программировании - student2.ru

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

Рассмотрим второй случай построения начального опорного плана. Сведем задачу к каноническому виду. Для этого добавим к левым частям неравенств дополнительные переменные y3, y4, y5, которые в целевую функцию вводятся с коэффициентами, равными нулю.

Итак, задача примет следующий вид:

Двойственные задачи в линейном программировании - student2.ru

Двойственные задачи в линейном программировании - student2.ru

Система имеет предпочтительный вид. Предпочтительные переменные y3, y4, y5 – базисные, а y1, y2 – свободные. Свободные переменные приравниваются к нулю, а базисные – к свободным членам.

Следовательно, начальный опорный план примет следующий вид:

Двойственные задачи в линейном программировании - student2.ru

При этом f(x0) = 0.

Составим симплексную табл. 11.

Таблица 11

БП сБ А0 y1 y2 y3 y4 y5  
 
y3 (3) Двойственные задачи в линейном программировании - student2.ru
y4  
y5  
fi – ci –2 –5  
        Двойственные задачи в линейном программировании - student2.ru        

Так как в индексной строке (f-строке) существуют отрицательные оценки, то план x0 неоптимален.

От табл. 11 нужно перейти к следующей. Переход осуществляем следующим образом: разрешающий столбец находим по max{|–2|; |–5|} = 5, разрешающая строка определяется по Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru

На пересечении разрешающего столбца и разрешающей строки находится разрешающий элемент 3.

Теперь составим табл. 12. Вместо y3 в базис вводим y2. На месте разрешающего элемента пишем 1, все остальные элементы разрешающего столбца равны нулю. Элементы разрешающей строки делятся на разрешающий элемент. Все остальные элементы табл. 12 вычисляются по правилу прямоугольника.

Таблица 12

БП сБ А0 y1 y2 y3 y4 y5
y2 Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru
y4 –1
y5
fi – ci Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru

В индексной строке нет отрицательных оценок. Следовательно, получен оптимальный план

y* = yотп = (0; 5; 0; 15; 5), fmax(y*) = 25.

Итак, двойственная задача решена. По первой теореме двойственности воспользуемся соответствием переменных прямой и двойственной задач и оценок в симплексной таблице:

y1 y2 y3 y4 y5
Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru
x4 x5 x1 x2 x3

Имеем Двойственные задачи в линейном программировании - student2.ru , Двойственные задачи в линейном программировании - student2.ru

Итак, решение исходной задачи найдено.

Ответ: Двойственные задачи в линейном программировании - student2.ru , Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru , Двойственные задачи в линейном программировании - student2.ru

Вопросы для самоконтроля

1. Определение двойственной задачи в линейном программировании.

2. Модели двойственных задач.

3. Правила для построения двойственной задачи.

4. Основные теоремы теории двойственности и достаточный признак оптимальности.

5. Экономический смысл теорем двойственности, экономическая интерпретация свойств двойственных оценок.

Транспортная задача

4.1. Постановка транспортной задачи по критерию
стоимости в матричной форме

В m пунктах отправления A1, A2, …, Am, которые в дальнейшем будем называть поставщиками, сосредоточено определенное количество единиц некоторого однородного продукта, которое обозначим a1, a2,…, am. Данный продукт потребляется в n пунктах B1, B2,…, Bn, которые будем называть потребителями; объем потребления обозначим b1, b2, …, bn. Известны расходы (транспортные издержки) на перевозку единицы продукта из пункта Ai (i = 1, 2, …, m) в пункт Bj (j = 1, 2, …, n), которые равны cij и приведены в матрице транспортных расходов (издержек) C = (cij).

Требуется составить план перевозок, при котором весь продукт вывозится из пунктов Ai в пункты Bj в соответствии с потребностью и общая величина транспортных расходов (издержек) будет минимальной.

Обозначим количество продукта, перевозимого из пункта Ai в пункт Bj, через xij. Предполагается, что все xij ³ 0. Совокупность всех переменных xij для краткости обозначим X.

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

Двойственные задачи в линейном программировании - student2.ru (15)
Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru (16)
Двойственные задачи в линейном программировании - student2.ru
Двойственные задачи в линейном программировании - student2.ru (17)

при этом (15) – целевая функция, (16) – ограничения по потребностям и запасам, (17) – условие неотрицательности.

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

Для наглядности условие транспортной задачи (ТЗ) можно представить таблицей, которую будем называть распределительной. Распределительную таблицу называют иногда табличной или матричной моделью ТЗ (матрицей планирования).

Матрицу X = (xij)m´n будем называть матрицей перевозок,матрицу C = (cij)m´n – матрицей тарифов, а число cij – тарифом клетки (i; j).

Будем называть план перевозок X = (xij)m´n допустимым, если он удовлетворяет ограничениям (16).

Допустимый план перевозок, доставляющий минимум целевой функции (15), называется оптимальным.

Таблица 13

Двойственные задачи в линейном программировании - student2.ru Потребители, Вj В1 В2 Вп Запасы, аi
Поставщики, Аi
  c11 c12   c1n  
A1 x11 x12 x1n a1
  c21 c22   c2n  
A2 x21 x22 x2n a2
Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru Двойственные задачи в линейном программировании - student2.ru
  cm1 cm2   cmn  
Am xm1 xm2 xmn am
Потребности, bj b1 b2 bn  

Теорема 8 (о существовании допустимого плана). Для того, чтобы ТЗ имела допустимые планы, необходимо и достаточно выполнение равенства

Двойственные задачи в линейном программировании - student2.ru (18)

(сумма запасов продукта равна сумме спроса на него).

Условие (18) является условием баланса.

Наши рекомендации