Донецкий национальный технический университет
Опубликован: 09.07.2007 | Доступ: свободный | Студентов: 3114 / 709 | Оценка: 4.34 / 4.12 | Длительность: 13:54:00
Специальности: Программист

Лекция 4: Метод полного исключения. Табличный симплекс – метод. Геометрическая интерпретация задач линейного программирования

< Лекция 3 || Лекция 4: 123 || Лекция 5 >

2. Табличный симплекс - метод

Основная идея симплекс-метода состоит в переходе от одного допустимого базисного решения к другому таким образом, что значения целевой функции при этом непрерывно возрастают (для задач максимизации).

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

A1x1+...+Anxn+e1xn+e1xn+1+...+emxn+m=A0=[ai0],

где

e_1 = \left[ \begin{gathered} 1 \\ 0 \\ \ldots \\ 0 \end{gathered} \right] , . ,
e_m = \left[ \begin{gathered} 0 \\ 0 \\ \ldots \\ 1 \end{gathered} \right]
- \text{единичный базис}, \; a_{i0} \geq 0
для всех i = 1, 2,., n.

Применим одну итерацию метода полного исключения к расширенной матрице ограничений Ap=[A1, ..., An, e1, ..., em, A0].

Пусть aij - направляющий элемент преобразования на данной итерации. Тогда в результате преобразований в соответствии с (1.10) получим новые значения свободных членов:

\begin{align*}
& a_{i0}^{(k+1)} = a_{i0}^{(k)} - 
\frac{a_{i0}^{(k)} a_{lj}^{(k)}}{a_{ij}^{(k)}}, l \neq i, \; l=1,2,\ldots,m, \\
& a_{i0}^{(k+1)} = \frac{a_{i0}^{(k)}}{a_{ij}^{(k)}}.
\end{align*} ( 2.1)

Исследуем выражения (2.1) и выясним условия, при которых a_{l0}^{(k+1)} > 0 для всех l, то есть новое базисное решение будет также допустимым.

По предположению a_{l0}^{(k)} > 0; l=1,.,m, a_{ij}^{(k)} > 0, тогда

a_{i0}^{(k+1)} = \frac{a_{i0}^{(k)}}{a_{ij}^{(k)}} \geq 0 .

Если a_{lj}^{(k)} < 0, тогда a_{l0}^{(k+1)} > 0, поскольку a_{i0}^{(k)} > 0, \; a_{ij}^{(k)} > 0.

Если a_{lj}^{(k)} > 0, то

a_{i0}^{(k+1)} = a_{lj}^{(k)} 
\left( 
\frac{a_{l0}^{(k)}}{a_{lj}^{(k)}} -
\frac{a_{i0}^{(k)}}{a_{ij}^{(k)}}
\right),
будет больше нуля при всех l=1, 2, ..., m тогда и только тогда, когда
\frac{a_{i0}^{(k)}}{a_{ij}^{(k)}} = \min_l 
\left. \left\{
\frac{a_{l0}^{(k)}}{a_{lj}^{(k)}} 
\right| 
a_{ij}^{(k)} > 0
\right\} . ( 2.2)

Преобразование Гаусса называют симплексным преобразованием, когда направляющий элемент определяют по следующим правилам:

a) направляющий столбец j выбирают из условия, что в нем имеется хотя бы один положительный элемент;

б) направляющую строку i выбирают так, чтобы отношение \frac{a_{i0}^{(k)}}{a_{ij}^{(k)}} было минимально при условии, что aij>0.

При таком преобразовании в базис вводится вектор Aj и выводится вектор Аi. Теперь надо определить, как выбрать вектор, вводимый в базис, чтобы при этом значение целевой функции увеличилось.

Для этого используют так называемые оценки векторов \Delta_j:

\Delta_j = \sum_{i \in I_{\delta}} c_i x_{ij} - c_j = a_{0j}, \;  j \notin I_{\delta} ( 2.3)
где I-{\delta} - множество индексов базисных векторов; xij - определяют из условия
\sum_{i \in I_{\delta}} A_i x_{ij} = A_j , ( 2.4)

Величины \{ \Delta_j \} равны симплекс-разницам для переменных {xj} с противоположным знаком. Следовательно, для того чтобы значение целевой функции увеличилось, необходимо выбрать направляющий столбец Аj с наибольшей по модулю отрицательной оценкой, то есть

\Delta_j = a_{0j} = \min_k \{ a_{0k} | a_{0k} < 0 \} .

Для решения задачи симплекс-методом на каждой итерации заполняют симплекс-таблицу 2.1.

Таблица 2.1.
c c1 c2 c3 . cj . cn
Bx a00 A1 A2 A3 . A_j \downarrow . An
c1 x1 a10 a11 a12 a13 . a1j . a1n
c2 x2 a20 a21 a22 a23 . a2j . a2n
. . . . . . . . . .
\begin{align*}
\leftarrow \\
c_i
\end{align*}
xi ai0 ai1 ai2 ai3 . aij . ain
. . . . . . . . . .
cm xm am0 am1 am2 am3 . amj . amn
\Delta \Delta_1 \Delta_2 \Delta_3 . \Delta_j . \Delta_n

Последняя строка таблицы - индексная - служит для определения направляющего столбца. Ее элементы \Delta_j определяют по формуле (2.3). Очевидно, для всех базисных векторов {Ai} i=1,.,m оценки \Delta_u = a_{u0} = 0.

Значение целевой функции a00 определяется из соотношения

a_00 = \sum_{i=1}^m c_i x_i^{(k)} .

В столбце Bx записываем базисные переменные {xi} i= 1, ..., m. Их значения определяются столбиком свободных членов ai0, то есть

Xi=ai0, i=1,2,.,m.

Направляющие строка Ai и столбец Aj указываются стрелками. Если в качестве направляющего элемента выбран aij, то переход от данной симплекс-таблицы к следующей определяется соотношениями (1.8) - (1.10).

Итак, алгоритм решения задачи ЛП табличным симплекс-методом состоит из этапов.

1. Рассчитывают и заполняют начальную симплекс-таблицу с допустимым единичным базисом, включая индексную строку.

2. В качестве направляющего столбца выбирают Aj, для которого

\Delta_j = a_{0k} = \min_k \{ a_{0k} | a_{0k} < 0 \}

3. Направляющая строка Aі выбирают из условия

\frac{a_{i0}^{(k)}}{a_{ij}^{(k)}} =
\min_{l \leq r \leq m} 
\left. \left\{
\frac{a_{r0}^{(k)}}{a_{rj}^{(k)}} 
\right| 
a_{rj}^{(k)} > 0
\right\} .

4. Делают один шаг (итерацию) метода полного исключения Гаусса с направляющим элементом aij, для чего используют соотношения (1.8) - (1.10). В частности, элементы индексной строки новой таблицы вычисляют в соответствии с формулой

a_{00}^{(k+1)} = a_{00}^{(k)} - \frac{a_{i0}^{(k)} a_{0j}^{(k)}}{a_{ij}^{(k)}} , \;
a_{0l}^{(k+1)} = a_{0l}^{(k)} - \frac{a_{il}^{(k)} a_{0j}^{(k)}}{a_{ij}^{(k)}} , \;
l = 1, 2, \ldots, n .
Правильность вычислений контролируют по формулам непосредственного счета:
a_{00}^{(k+1)} = \sum_{i \in I_{\delta}^{(k+1)}} c_i a_{i0}^{(k+1)} ; ( 2.5)
a_{0l}^{(k+1)} = \sum_{i \in I_{\delta}^{(k+1)}} c_i a_{il}^{(k+1)} -c_l . ( 2.5)
В столбце Bx новой таблицы заменяют xi на xj, а в столбце С ci на cj.

5. Если все a_{0l}^{(k+1)} \geq 0, \quad l=1,.,n, то новое базисное решение x_i= a_{i0}^{(k+1)}, \quad i \in I_{\delta}^{(k+1)} - оптимально. В противном случае переходят к этапу 2 и выполняют очередную итерацию.

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

а) все a_{0l} \geq 0. Это признак (критерий) оптимальности базисного решения последней симплекс-таблицы ;

б) найдется такой a_{0j}=\Delta_j < 0, что все элементы этого столбца a_{rj} \leq 0 , \quad r = 1, ., m. Это признак неограниченности целевой функции z=\sum_i c_j x_j на множестве допустимых решений задачи.

Назовем некоторые особенности применения табличного симплекс-метода.

Если в качестве начального базиса выбирают базис из свободных переменных, для которых ci=0, то оценки для всех небазисных переменных равны \Delta_j = a_{0j} = -c_j, а соответствующее значение целевой функции

a_{00} = \sum_i c_i x_i = 0, \quad i \in I_{\delta}.

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

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

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

< Лекция 3 || Лекция 4: 123 || Лекция 5 >