Методы оптимизации. Учебное пособие-2
.pdf
Поскольку в строке целевой функции в столбцах базисных переменных все элементы меньше нуля, полученное решение является оптимальным. Оптимальное решение: x1=6, x2=1, y1=0, y2=9, y3=0, y4=0, f = –13. Возвращаясь к первоначальной формулировке задачи, получаем ответ.
Ответ: x1 = 6, x2 = 1, max F(x1, x2) = F(6, 1) = 13.
3.1.6. Двойственная задача линейного программирования
Рассмотрим задачу оптимального планирования работы некоторого предприятия во время одного цикла. В общем виде она описывается следующей задачей линейного программирования: максимизировать функцию
F(x) = c1x1 + c2x2 +… + cn xn
при условиях
a11 x1 + a12x2 + ... + a1n xn ≤ b1 a21 x1 + a22x2 + ... + a2n xn ≤ b2
……………………………..
am1 x1 + am2x2 + …+ amn xn ≤ bm x1 ≥ 0, x2 ≥ 0,… xn ≥ 0.
Предположим, что директору предприятия от некоторого покупателя поступило предложение продать часть имеющихся на предприятии ресурсов. При этом встает вопрос об оценке этих ресурсов с точки зрения эффективности их использования в течение рассматриваемого производственного цикла, то есть по какой цене выгодно продать имеющиеся ресурсы. За одну единицу j-ой продукции предприятие получает прибыль cj, при этом будет затрачено (a1j, a2j, … ,amj) единиц различных ресурсов. Обозначим предлагаемые цены имеющихся ресурсов через y1, y2,… ym (yi ≥ 0, i = 1 ,2,…, m). Для того чтобы эффективность использования ресурсов при их продаже была не ниже эффективности их
61
использования в производственном цикле предприятия необходимо, чтобы выполнялось неравенство
y1 a1j + y2a2j + … + ymamj ≥ cj .
Поскольку это верно для любого вида продукции предприятия, то приходим к следующей системе неравенств
y1a11 + y2a21 + … +ymam1 ≥ c1
y1a12 + y2a22 + … + ymamj ≥ c2
…………………………….
y1a1n + y2a2n + … + ymamn ≥ cn
С другой стороны, покупатель ресурсов стремится минимизировать свои расходы:
y1b1 +y2b2 + … +ymbm → min .
Таким образом, мы приходим к следующей задаче линейного программирования:
G(Y) = y1b1 +y2b2 + … +ymbm → min
y1a11 + y2a21 + … +ymam1 ≥ c1
y1a12 + y2a22 + … + ymamj ≥ c2
…………………………….
y1a1n + y2a2n + … + ymamn ≥ cn y1 ≥ 0, y2 ≥ 0,… ym ≥ 0.
Эта задача называется двойственной по отношению к исходной задаче. Исходная задача и двойственная задача описывают задачу торга.
Запишем обе задачи в матричной форме. Введем следующие обозначения: обозначим буквами A, B, C и X матрицу A, задающую ограничения исходной задачи (технологическую матрицу); векторстолбец B, задающий запасы ресурсов; вектор-строку C, задающую удельные прибыли от продукции и вектор-столбец X, задающий производственный план предприятия:
62
a |
a |
11 |
12 |
A a21 |
a22 |
... ... |
|
|
am2 |
am1 |
|
... |
a |
|
|
b |
|
|
x |
|
||
... |
1n |
|
|
1 |
|
|
|
1 |
|
|
a2n |
, |
b2 |
|
, C = (c1, c2,… cn), |
x2 |
|
||||
... |
... |
|
B |
|
|
X |
|
|
||
|
|
|
|
|
|
|
||||
... |
a |
|
|
b |
|
|
x |
|
||
|
mn |
|
|
m |
|
|
n |
|
||
Введем также вектор-строку Y = (y1, y2, … ym), задающую цены ресурсов.
В этих обозначениях задача линейного программирования принимает вид:
F(X) = CX → max
AX ≤ B
X ≥ 0
Двойственная ей задача имеет вид:
G(Y) = YB → min
ATYT ≥ CT (YA ≥ C)
Y ≥ 0,
где MT обозначает транспонированную матрицу матрицы M.
Определение 11. Задача линейного программирования называется двойственной по отношению к исходной задаче линейного программирования, если она удовлетворяет пяти условиям:
1)каждому ограничению исходной задачи ставится в соответствие переменная двойственной задачи;
2)коэффициентами целевой функции двойственной задачи являются компоненты вектора - правой части системы ограничений исходной задачи;
3)экстремум двойственной задачи противоположен экстремуму исходной задачи (минимум заменяется на максимум, а максимум на минимум);
63
4)матрица ограничений двойственной задачи равна транспонированной матрице исходной задачи;
5)в системе ограничений знаки неравенств меняются на противоположные.
Заметим, что исходная задача является двойственной к двойственной задаче. Таким образом, можно говорить о паре двойственных задач.
Пример 21. Рассмотрим исходную задачу линейного программирования
F = 10x1 + 2x2 + 3x3 → max
2x1 + x2 + x3 ≤ 23 3x1 + 4x2 + 3x3 ≤ 15 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 .
В матричной форме эту задачу можно записать следующим образом:
F(X) = CX → max
AX ≤ B
X ≥ 0 ,
где
2 |
1 |
1 |
|
23 |
|
|
x1 |
|
|||
C (10,2,3), |
X |
|
x |
|
|
||||||
A |
|
|
, |
B |
, |
|
2 |
. |
|||
|
3 |
4 |
|
|
|
|
|
|
|
||
|
3 |
|
15 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
x3 |
|
||
Двойственная задача имеет следующий вид:
G(Y) = 23y1 +15y2 → min
2y1 +3y2 ≥ 10 y1 +4y2 ≥ 2 y1 +3y2 ≥ 3 y1 ≥ 0, y2 ≥ 0
64
или в матричной форме:
G(Y) = YB → min,
ATYT ≥ CT (или YA ≥ C),
Y ≥ 0,
|
|
|
2 |
3 |
|
|
|
10 |
|
|
|
|
y1 |
|
||||
где |
T |
|
|
1 |
4 |
|
, C |
T |
|
|
2 |
|
, Y ( y , y |
|
) , Y |
T |
||
A |
|
|
|
|
|
2 |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|||||
|
|
|
|
1 |
3 |
|
|
|
|
|
3 |
|
|
|
|
|
y2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Рассмотрим пару двойственных задач:
F(X) = CX → max
AX ≤ B
X ≥ 0
и
G(Y) = YB → min,
YA ≥ C
Y ≥ 0.
Теорема 9 (основное неравенство теории двойственности). Для любых допустимых решений X и Y исходной и двойственной задач справедливо неравенство F(X) ≤ G(Y).
Доказательство. Поскольку X и Y являются допустимыми решениями, то X ≥ 0 и Y ≥ 0, и справедливы следующие неравенства
F(X) = CX ≤ (YA)X ≤ Y(AX) ≤ YB = G(Y). ◘.
Теорема 10 (первая теорема двойственности). Если исходная задача (или двойственная задача) имеет оптимальное решение, то и другая задача имеет оптимальное решение и значения целевых функций, отвечающие оптимальным решениям, совпадают.
Доказательство этой теоремы является довольно длинным, его можно найти, например, в [8].
65
Теорема 11 (критерий оптимальности допустимых решений).
Для того, чтобы допустимые решения X0 и Y0 исходной и двойственной задач были оптимальными необходимо и достаточно чтобы выполнялось равенство F(X0) = G(Y0).
Доказательство. 1. Необходимость. Следует из теоремы 10.
2. Достаточность. Пусть F(X0) = G(Y0), докажем, что X0 является точкой максимума функции F(X) (доказательство оптимальности решения Y0 проводится аналогично). Пусть X – допустимое решение и X ≠ X0, тогда по теореме 9 (основное неравенство теории двойственности) справедливо неравенство
F(X) ≤ G(Y0) = F(X0 ).
Следовательно, X0 является точкой максимума функции F(X) и является оптимальным решением. ◘.
66
3.1.7. Транспортная задача
Одной из типичных задач линейного программирования является транспортная задача, возникающая при составлении наиболее рационального плана перевозок грузов, т.е. плана, при котором стоимость перевозок будет минимальной.
Приведем формулировку классической транспортной задачи. Пусть в m пунктах A1, A2,… Am сосредоточены запасы однородного груза в количествах a1, a2,… am соответственно. Этот груз требуется перевезти в n пунктов B1, B2,… Bn, при этом в пункт Bj должно быть доставлено bj единиц груза. Цена доставки единицы груза из пункта Ai в пункт Bj известна и равна cij, i = 1, 2,… m, j = 1, 2,… n. Требуется составить такой план перевозок, общая стоимость которых будет минимальной.
Обозначим через xij количество единиц груза, перевезенного из пункта Ai в пункт Bj (xij ≥ 0), тогда допустимый план перевозок должен удовлетворять условиям:
n |
|
|
xij |
ai , |
i 1,2,...,m |
j 1 |
|
|
m |
|
|
xij |
bj , |
j 1,2,...,n. |
i 1 |
|
|
Первое равенство означает, что из каждого пункта A1, A2,… Am вывозится весь груз, второе равенство означает, что удовлетворяются все потребности пунктов назначения B1, B2,…, Bn.
Рассмотрим случай замкнутой транспортной задачи, в которой количество имеющегося груза равно количеству требуемого груза:
m |
n |
ai b j |
|
i 1 |
j 1 |
Общая стоимость перевозок (целевая функция) равна
67
m n
F cij xij i 1 j 1
Таким образом приходим к следующей формулировке транспортной задачи:
m n
F cij xij min i 1 j 1
n
xij ai j 1
m
xij bj i 1
xij ≥ 0, i = 1, 2,… m; j = 1, 2,… n
m
ai
i 1
n
bj .
j 1
Транспортная задача является задачей линейного программирования, поэтому она может быть решена симплекс-методом. Однако, более эффективным для решения транспортной задачи является метод потенциалов.
Запишем условия транспортной задачи в виде следующей таблицы:
пункты |
B1 |
B2 |
… |
Bn |
запасы |
A1 |
c11 |
c12 |
… |
c1n |
a1 |
A2 |
c21 |
c22 |
… |
c2n |
a2 |
… |
… |
… |
… |
… |
… |
|
|
|
|
|
|
Am |
cm1 |
cm2 |
… |
cmn |
am |
потребности |
b1 |
b2 |
… |
bn |
- |
|
|
|
|
|
|
Метод потенциалов, как и симплекс-метод, состоит из двух частей: первая часть – нахождение опорного решения, вторая часть – определение оптимального плана.
68
Первая часть метода – поиск опорного решения. Для нахождения опорного решения применим метод наименьшей стоимости, который состоит в последовательном выполнении следующих шагов:
Выбрать клетку транспортной таблицы с минимальной стоимостью перевозки
crs = min{ cij | 1 ≤ i ≤ m, 1 ≤ j ≤ n}
и положить xrs = min(ar; bs). Если xrs = ar, то следует исключить из дальнейшего рассмотрения пункт отправления Ar, а потребность в пункте назначения Bs уменьшить на ar, то есть нужно положить b's = bs – ar. Если xrs = bs, то следует исключить из дальнейшего рассмотрения пункт назначения Bs, а запасы в пункте отправления Ar уменьшить на bs, то есть положить a’r = ar – bs. Затем в s-ом столбце (или r-ой строке) определяем клетку с наименьшей стоимостью перевозки.
Таким образом, на каждом шаге будем вычеркивать из дальнейшего рассмотрения либо один столбец, либо одну строку. Продолжим последовательное исключение пунктов назначения или пунктов отправления груза до тех пор, пока не удовлетворим потребности всех пунктов назначения.
Поскольку транспортная задача является замкнутой и общее число пунктов отправления и назначения равно m + n, то число заполненных клеток равно m + n – 1. Заполненные клетки будем называть базисными, остальные клетки будем называть свободными (в базисных клетках могут быть и нулевые перевозки!).
Вторая часть метода – поиск оптимального решения. Для нахождения оптимального решения будем последовательно переходить от одного допустимого решения к другому. Переход от одного допустимого решения к другому основан на понятии цикла.
Циклом называется последовательность конечного числа элементов транспортной таблицы (ik, jk), k = 1, 2,… 2p + 1, i1 = i2p+1,
69
j1 = j2p+1, называемых вершинами цикла, в каждой из которых встречаются два звена (отрезка): одно звено расположено в строке (горизонтальный отрезок), а другое звено расположено в столбце (вертикальный отрезок). Первая вершина совпадает с последней вершиной (i1 = i2p+1, j1 = j2p+1). Вершины цикла последовательно отмечаются символами ”+” и ”–”.
Поиск оптимального плана перевозок (решения) состоит в последовательном циклическом выполнении следующих трех шагов:
1)каждому пункту отправления Ai сопоставим величину αi, которую назовем потенциалом пункта Ai, каждому пункту назначения Bj сопоставим величину βj, которую назовем потенциалом пункта Bj, i = 1, 2,…m, j = 1, 2,… n. Значения этих величин определим из условий:
αi + βj = сij
для всех базисных клеток транспортной таблицы.
2)если для всех свободных клеток транспортной таблицы выполняется условие:
αi + βj ≤ сij,
то план перевозок является оптимальным. Если хотя бы для одной свободной клетки неравенство нарушается необходимо перейти к пункту 3);
3)начиная со свободной клетки таблицы, для которой нарушено
условие αi + βj ≤ сij, составить цикл, остальные вершины которого находятся в базисных клетках. Обойти цикл, обозначая вершины символами ”+” и ”–” (свободная клетка обозначается символом ”+”). Найти вершину с минимальным значением θ среди ”–” вершин. Значения плана перевозок, стоящие в ”–” вершинах уменьшить на величину θ, значения плана перевозок, стоящие в ”+” вершинах увеличить на величину θ. Перейти к пункту 1).
70
