%% updating.latex %%

\documentclass[a4paper,11pt,draft]{article}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}

\begin{document}

\title{Формулы пересчета симплекс-таблицы при переходе к смежному
базису}

\author{А. О. Махорин\footnote{Кафедра прикладной информатики,
Московский авиационный институт, Москва, Россия. E-mail:
{\tt <mao@mai2.rcnet.ru>}, {\tt <mao@gnu.org>}.}}

\date{Май 2008 г.}

\maketitle

{\it Симплекс-таблица} (или {\it преобразованная задача}) --- это
ЛП-задача, записанная в преобразованном виде, где целевая функция и
базисные переменные явно выражены через небазисные переменные.

\def\arraystretch{1.2}

В пакете GLPK используется следующее представление симплекс-таблицы:
$$
\begin{array}{r@{\ }c@{\ }l}
z&=&d^Tx_N+c_0,\\
x_B&=&\Xi x_N,\\
\end{array}\eqno(1)
$$
где $z$ --- целевая функция, $x_B$ --- вектор базисных переменных,
$x_N$ --- вектор небазисных переменных, $d$ --- вектор относительных
оценок небазисных переменных, $c_0$ --- постоянный член целевой
функции, $\Xi$ --- матрица коэффициентов влияния небазисных переменных
на базисные переменные (часто эту матрицу также называют
симплекс-таблицей).

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

Для вывода этих формул запишем симплекс-таблицу в развернутом виде
(постоянный член целевой функции опущен):
$$
\begin{array}{r@{\ }c@{\ }r@{\ }c@{\ }r@{\ }c@{\ }r}
z&=&d_1(x_N)_1&+\ \dots\ +&d_q(x_N)_q&+\ \dots\ +&d_n(x_N)_n\\
(x_B)_1&=&\xi_{11}(x_N)_1&+\ \dots\ +&\xi_{1q}(x_N)_q&+\ \dots\ +&
\xi_{1n}(x_N)_n\\
\multicolumn{7}{c}
{.\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .}\\
(x_B)_p&=&\xi_{p1}(x_N)_1&+\ \dots\ +&\xi_{pq}(x_N)_q&+\ \dots\ +&
\xi_{pn}(x_N)_n\\
\multicolumn{7}{c}
{.\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .\ \ .}\\
(x_B)_m&=&\xi_{m1}(x_N)_1&+\ \dots\ +&\xi_{mq}(x_N)_q&+\ \dots\ +&
\xi_{mn}(x_N)_n\\
\end{array}\eqno(2)
$$

Допустим, что в смежном базисе базисная переменная $(x_B)_p$ становится
небазисной, а небазисная переменная $(x_N)_q$ --- базисной.

Чтобы выразить новую базисную переменную $(x_N)_q$ через новый набор
небазисных переменных, включающий $(x_B)_p$, преобразуем $p$-ю (ведущую)
строку симплекс-таблицы (2):
$$(x_B)_p=\xi_{pq}(x_N)_q+\sum_{j\neq q}\xi_{pj}(x_N)_j,$$
откуда
$$(x_N)_q=\frac{1}{\xi_{pq}}(x_B)_p-\sum_{j\neq q}\frac{\xi_{pj}}
{\xi_{pq}}(x_N)_j.\eqno(3)$$

\def\arraystretch{2}

Исключим теперь $(x_N)_q$ из остальных строк симплекс-таблицы (2), для
чего подставим $(x_N)_q$ из (3) в каждую $i$-ю строку ($i\neq p)$:
$$
\begin{array}{r@{\ }c@{\ }l}
(x_B)_i&=&\displaystyle\xi_{iq}(x_N)_q+\sum_{j\neq q}\xi_{ij}(x_N)_j=\\
&=&\displaystyle\xi_{iq}\left[\frac{1}{\xi_{pq}}(x_B)_p-\sum_{j\neq q}
\frac{\xi_{pj}}{\xi_{pq}}(x_N)_j\right]+\sum_{j\neq q}\xi_{ij}(x_N)_j=\\
&=&\displaystyle\frac{\xi_{iq}}{\xi_{pq}}(x_B)_p-\sum_{j\neq q}\frac
{\xi_{iq}\xi_{pj}}{\xi_{pq}}(x_N)_j+\sum_{j\neq q}\xi_{ij}(x_N)_j=\\
&=&\displaystyle\frac{\xi_{iq}}{\xi_{pq}}(x_B)_p+\sum_{j\neq q}\left(
\xi_{ij}-\frac{\xi_{iq}\xi_{pj}}{\xi_{pq}}\right)(x_N)_j,
\end{array}\eqno(4)
$$
а также в строку целевой функции:
$$
\begin{array}{r@{\ }c@{\ }l}
z&=&\displaystyle d_q(x_N)_q+\sum_{j\neq q}d_j(x_N)_j=\\
&=&\displaystyle d_q\left[\frac{1}{\xi_{pq}}(x_B)_p-\sum_{j\neq q}
\frac{\xi_{pj}}{\xi_{pq}}(x_N)_j\right]+\sum_{j\neq q}d_j(x_N)_j=\\
&=&\displaystyle\frac{d_q}{\xi_{pq}}(x_B)_p-\sum_{j\neq q}\frac
{d_q\xi_{pj}}{\xi_{pq}}(x_N)_j+\sum_{j\neq q}d_j(x_N)_j=\\
&=&\displaystyle\frac{d_q}{\xi_{pq}}(x_B)_p+\sum_{j\neq q}\left(
d_j-\frac{d_q\xi_{pj}}{\xi_{pq}}\right)(x_N)_j.
\end{array}\eqno(5)
$$

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

Используя соотношения (3), (4) и (5), а также полагая, что в новой
симплекс-таблице для смежного базиса $p$-я строка соответствует новой
базисной переменной $(x_N)_q$, а $q$-й столбец --- новой небазисной
переменной $(x_B)_p$, можно получить необходимые формулы пересчета
для вычисления элементов новой симплекс-таблицы по известным элементам
текущей симплекс-таблицы:

\bigskip

\def\arraystretch{1}

1) для ведущей строки:
$$\overline{\xi}_{pq}=\frac{1}{\xi_{pq}},\eqno(6)$$
$$\overline{\xi}_{pj}=-\frac{\xi_{pj}}{\xi_{pq}}=-\overline{\xi}_{pq}
\xi_{pj},\ \ j\neq q.\eqno(7)$$

2) для остальных строк ($i\neq p$):
$$\overline{\xi}_{iq}=\frac{\xi_{iq}}{\xi_{pq}}=\overline{\xi}_{pq}
\xi_{iq},\eqno(8)$$
$$\overline{\xi}_{ij}=\xi_{ij}-\frac{\xi_{iq}\xi_{pj}}{\xi_{pq}}=
\xi_{ij}-\overline{\xi}_{iq}\xi_{pj}=\xi_{ij}+\xi_{iq}\overline{\xi}
_{pj},\ \ j\neq q.\eqno(9)$$

3) для строки целевой функции:
$$\overline{d}_q=\frac{d_q}{\xi_{pq}}=\overline{\xi}_{pq}d_q,\eqno(10)$$
$$\overline{d}_j=d_j-\frac{d_q\xi_{pj}}{\xi_{pq}}=d_j-\overline{d}_q
\xi_{pj}=d_j+d_q\overline{\xi}_pj,\ \ j\neq q.\eqno(11)$$

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

\vspace{15mm}

\begin{center}
\rule{40mm}{.5pt}
\end{center}

\end{document}
