3. Применение теоремы Куна – Таккера для задачи выпуклого программирования
Выше была рассмотрена задача НП в виде (1.1), (1.2),
когда на переменные xj не накладывались
условия неотрицательности. Тем не менее часто в задачах
исследования операций приходится решать задачи, в которых
переменные xj по физическим условиям
должны удовлетворять условию
для всех
.
Покажем, как основные положения изложенной теории можно
распространить и на этот случай. Действительно, пусть задача НП
имеет вид:
![\text{минимизировать} \; f(x)](/sites/default/files/tex_cache/2590fcc5a4e6be4e6988a728eec7bc38.png) |
(
3.1)
|
при ограничениях
![g_i(x) \le 0, \quad i=\overline{1,m} ;](/sites/default/files/tex_cache/071654391236bf95e2eb483d17619a16.png) |
(
3.2)
|
![x_j \ge 0, \quad j=\overline{1,n}](/sites/default/files/tex_cache/c38146206fc50dde7f70f4b141970f0b.png) |
(
3.3)
|
Введем обозначения
. Тогда ограничения (3.3) можно
записать в общем виде:
![h_j(x) \le 0, \quad j=\overline{1,n}](/sites/default/files/tex_cache/0bb825f7f85df177eca045b9a5ae5699.png) |
(
3.4)
|
Теперь задача задана в каноническом виде (1.1), (1.2).
Применим к ней теорему Куна-Таккера, для чего составим функцию
Лагранжа:
![L(x, \Lambda, u) = f(x) + \sum_{i=1}^m \lambda_i g_i(x) + \sum_{j=1}^n u_j h_j (x),](/sites/default/files/tex_cache/2a656fe1fa00d106f3f9eafef86800d3.png) |
(
3.5)
|
где
![u_j \ge 0](/sites/default/files/tex_cache/9e4134dc2cb0b371de85af1527285333.png)
- множители, связанные с ограничениями
![h_j(x) \le 0](/sites/default/files/tex_cache/a3596e3c3a782c1bc90c1a9e2f32c469.png)
. Условия теоремы Куна-Таккера для (3.5)
выглядят так:
или
![\frac{\partial L(x, \Lambda, u)}{\partial x_j} =
\frac{\partial f(x)}{\partial x_j} +
\sum_{i=1}^m \lambda_i \frac{\partial g_i(x)}{\partial x_j}
-u_j = 0; \quad j=\overline{1,n}](/sites/default/files/tex_cache/10f1bd702a86ee8a3aebf5959923b721.png) |
(
3.6)
|
![u_j x_j = 0, \; u_j \ge 0 ,](/sites/default/files/tex_cache/9b8012695b9ffbf533687d2067d1c8b1.png) |
(
3.7)
|
![\lambda_i g_i(x)=0, \; \lambda_i \ge 0.](/sites/default/files/tex_cache/8fd1cb6eccf5eba6fd765e2bd64dbb5f.png) |
(
3.8)
|
Условия (3.5), (3.6), (3.7) можно записать в следующей
эквивалентной форме:
![\frac{\partial L(x, \Lambda)}{\partial x_j} =
\frac{\partial f(x)}{\partial x_j} +
\sum_{i=1}^m \lambda_i \frac{\partial g_i(x)}{\partial x_j} = u_j \ge 0,](/sites/default/files/tex_cache/9371c67be67c3a865ed3d063380e28f5.png) |
(
3.9)
|
![\frac{\partial L(x, \Lambda)}{\partial x_j} \cdot x_j =0, \quad j=\overline{1,n}](/sites/default/files/tex_cache/3d20e5b967d40078b78db2d1f2eee82b.png) |
(
3.10)
|
Нетрудно увидеть, что условия (3.10) представляют собой условия дополняющей нежесткости
для ограничений неотрицательности.
Таким образом, найдены необходимые условия для оптимального
решения задачи НП вида (3.1) - (3.3), которые можно сформулировать
в следующей теореме.
Теорема 3.1. Пусть задача НП задана в виде
(3.1) - (3.3), а функции f(x) и g1(x), g2(x), ..., gm(x) дифференцируемы и выпуклы (по x ).
Вектор
является оптимальным решением задачи НП тогда
и только тогда, когда существует такой вектор
, что пара
является седловой точкой функции Лагранжа, то есть выполняются такие условия:
![\frac{\partial L(x^0, \Lambda^0)}{\partial x_j} \ge 0, \; j=\overline{1,n} ;](/sites/default/files/tex_cache/d825ca57115871adf2d596f0cc44be06.png) |
(
3.11)
|
![\frac{\partial L(x^0, \Lambda^0)}{\partial x_j} \cdot x_j^0 = 0, \; j=\overline{1,n} ;](/sites/default/files/tex_cache/70c29e49c2f27fa4c146fa9f2b6845cb.png) |
(
3.12)
|
![\frac{\partial L(x^0, \Lambda^0)}{\partial \lambda_i} = g_i(x^0) \le 0, \; i=\overline{1,m} ;](/sites/default/files/tex_cache/6673cd26e1ed4c6300990a21538eb206.png) |
(
3.13)
|
![\frac{\partial L(x^0, \Lambda^0)}{\partial \lambda_i} \cdot \lambda_i^0 = g_i(x^0)\lambda_i^0 = 0, \; i=\overline{1,m} .](/sites/default/files/tex_cache/09ca9766fe4fa1a61093abb07f613c1f.png) |
(
3.14)
|
Задача (3.1) - (3.3) при условиях, что все f()x, gi(x) - выпуклые функции, является задачей выпуклого программирования.
Ограничения
, определяют выпуклое
множество, и требуется найти минимум выпуклой функции f(x) на выпуклом множестве решений
.
Рассмотрим задачу вогнутого программирования.
![\text{максимизировать} f(x)](/sites/default/files/tex_cache/4d30c5057f4141e676c7e2215288eca3.png) |
(
3.15)
|
при ограничениях
![\left.
\begin{aligned}
g_1(x) \ge 0, \\
g_2(x) \ge 0, \\
.\;.\;.\;.\;.\;.\;.\;.\; \\
g_m(x) \ge 0,
\end{aligned}
\right\}](/sites/default/files/tex_cache/3d9ae918e3f348e51c900376070b4758.png) |
(
3.16)
|
![x \ge 0.](/sites/default/files/tex_cache/16e4271368fb9590f0856cac28fe9910.png) |
(
3.17)
|
где
f(x) и все функции
gi(x)
вогнуты по
x.
Покажем ее эквивалентность задаче выпуклого программирования
(3.1) - (3.3). Для этого обозначим
,
и так как
, то приходим к задаче:
![\text{минимизировать} f(x)](/sites/default/files/tex_cache/6f0a141751376e81be12e4551c736867.png) |
(
3.18)
|
при ограничениях
![g'_i(x) \le 0, \; i=\overline{1,m} ;](/sites/default/files/tex_cache/643dbc655439b693bec31f6bd2cb398b.png) |
(
3.19)
|
![x \ge 0 .](/sites/default/files/tex_cache/5fc7a9e7ee7bf8bcc7f1596a584e05e0.png) |
(
3.20)
|
Легко увидеть, что все функции
будут выпуклы по x,
а поэтому задача (3.18) - (3.20) - это задача выпуклого
программирования. Итак, эквивалентность задач (3.15) - (3.17)
и (3.1) - (3.3) установлена.
Нетрудно получить соответствующие признаки оптимальности для
задачи (3.15) - (3.17), аналогичные условиям (3.11) - (3.14).
Теорема 3.2. Пусть задача НП задана в виде
(3.15) - (3.17), а функции
, - дифференцируемы . Для того чтобы вектор x0 являлся оптимальным
решением этой задачи, необходимо, чтобы существовал такой вектор
, для которого
выполнялись бы такие условия:
![\text{а)} \qquad \frac{\partial L (x^0, \Lambda^0)}{\partial x_j}
\le 0, \; j=\overline{1,n}](/sites/default/files/tex_cache/6751529c4738f551d337482eab0998d1.png) |
(
3.21)
|
![\text{б)} \qquad \frac{\partial L (x^0, \Lambda^0)}{\partial x_j}
\cdot x_j^0 = 0, \; j=\overline{1,n}](/sites/default/files/tex_cache/72e3de31e5e9584beffde5cf8c317472.png) |
(
3.22)
|
![\text{в)} \qquad \frac{\partial L (x^0, \Lambda^0)}{\partial \lambda_i}
= g_i(x^0) \ge 0, \; i=\overline{1,m}](/sites/default/files/tex_cache/850baf6bd568bfc4a4b5a40e27b9219a.png) |
(
3.23)
|
![\text{г)} \qquad \frac{\partial L (x^0, \Lambda^0)}{\partial \lambda_i}
\cdot \lambda_i^0 = g_i(x^0) \lambda_i^0 = 0, \; i=\overline{1,m}](/sites/default/files/tex_cache/d814b87877ab965c01218cde8b9d96f1.png) |
(
3.24)
|
Если функции
вогнуты, то условия (3.21) - (3.24) оказываются и достаточными.