Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
168 changes: 148 additions & 20 deletions 17-LinProgSimplex/examples.tex
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

\begin{document}
\maketitle
Здесь использованы материалы из книги~\cite{intro2lin}.
Здесь использованы материалы из книги~\cite{intro2lin}.
\section{Задача 1}
Решить задачу табличным симплекс методом:
\begin{equation*}
Expand All @@ -31,7 +31,7 @@ \section{Задача 1}
& x_{1,2,3} \geq 0
\end{split}
\end{equation*}
\textbf{Решение:} по виду задачи ясно, что она не в канонической форме.
\textbf{Решение:} по виду задачи ясно, что она не в канонической форме.
Введём дополнительные переменные и запишем её в канонической форме:
\begin{equation*}
\begin{split}
Expand All @@ -45,11 +45,11 @@ \section{Задача 1}
Заметим, что матрица $\bA \in \mathbb{R}^{m \times n}$, где $m=3$ и $n=6$.
Теперь нужно найти угловую точку допустимого множества, то есть такую точку, чтобы она лежала в множестве и существовало множество индексов $\mathcal{B} \subset \{1, \dots, n\}$ мощностью $|\mathcal{B}| = m = 3$, что матрица из столбцов матрицы $\bA$ с индексами из множества $\mathcal{B}$ была невырождена, и координаты угловой точки с индексами не из множества $\mathcal{B}$ были нулевыми.
В данном случае достаточно очевидно, что $\bx_0 = (0, 0, 0, 20, 20, 20)$, $\mathcal{B}_0 = \{4, 5, 6 \}$ и матрица базиса $\mathbf{B}_0 = \mathbf{I}_m$~--- невырождена.
Если начальная угловая точка не так очевидна, необходимо выполнить двухфазный симплекс-метод или M-метод.
Если начальная угловая точка не так очевидна, необходимо выполнить двухфазный симплекс-метод или M-метод.
Такой пример будет приведён ниже.

Теперь составим таблицу~\ref{tab::simplex0} симплекс-метода, модифицируя которую получим решение поставленной задачи.
Столбцы этой таблицы соответствуют столбцам матрицы $\bA$.
Столбцы этой таблицы соответствуют столбцам матрицы $\bA$.
Последние $m=3$ строк соответствуют базисным переменным с индексами из множества~$\mathcal{B}_0$.
В $m+1$ строке с конца расположены оценки замещения для каждой переменной $x_i$, а в первом столбце отрицательное значение целевой функции.

Expand All @@ -76,7 +76,7 @@ \section{Задача 1}
В соответствии с правилом Бланда выберем $\ell = 5$.
Таким образом, выбран ведущий элемент равный 2, он выделен жирным в таблице~\ref{tab::simplex0}.

Далее с помощью элементарных преобразований получим базисную матрицу для новой угловой точки с базисом $\mathcal{B}_1 = \{4, 1, 6\}$.
Далее с помощью элементарных преобразований получим базисную матрицу для новой угловой точки с базисом $\mathcal{B}_1 = \{4, 1, 6\}$.
Прежде всего покажем, как изменится значение целевой функции.
Для этого элементарным преобразованием занулим оценку замещения, соответствующую $x_1$.

Expand All @@ -98,11 +98,11 @@ \section{Задача 1}
\end{table}

Далее выбираем столбец $x_2$, поскольку оценка замещения отрицательная и индекс минимален $(2 < 3)$.
Аналогично предыдущей итерации $u = \mathbf{a}_2$ и $\theta^* = 0$ при $\ell = 6$.
Таким образом, заменяем $x_6$ на $x_2$ и ведущий элемент равен 1 (выделен жирным).
Заметим, что текущее решение является вырожденным, так как $x_6 = 0$.
Поэтому значение целевой функции не меняется при смене базиса.
Зануляем оценку замещения для $x_2$ и строки в столбце $x_2$ кроме строки с ведущим элементом.
Аналогично предыдущей итерации $u = \mathbf{a}_2$ и $\theta^* = 0$ при $\ell = 6$.
Таким образом, заменяем $x_6$ на $x_2$ и ведущий элемент равен 1 (выделен жирным).
Заметим, что текущее решение является вырожденным, так как $x_6 = 0$.
Поэтому значение целевой функции не меняется при смене базиса.
Зануляем оценку замещения для $x_2$ и строки в столбце $x_2$ кроме строки с ведущим элементом.
Получили таблицу~\ref{tab::simplex2}.

\begin{table}[!ht]
Expand Down Expand Up @@ -144,14 +144,14 @@ \section{Задача 1}
\label{tab::simplex3}
\end{table}

Поскольку все оценки замещения неотрицательны, то решение найдено и оно является оптимальным.
Поскольку все оценки замещения неотрицательны, то решение найдено и оно является оптимальным.
Найденное решение соответствует $(x_1, x_2, x_3) = (4,4,4)$ и находится в первом столбце и последних $m = 3$ строках.
В первом столбце и $m+1$ строке с конца находится отрицательное значение целевой функции, то есть оптимальное значение равно $-136$.
Знаки $-$ в ячейках таблицы означают, что значения в этих ячейках неважны и их можно не вычислять.

\section{Задача 2}
В этой задаче показано, что симплекс-метод может зациклиться, и как это зацикливание может быть преодолено с помощью правила Бланда.
Здесь описание переходов от таблицы к таблице не будет описано столь подробно как в предыдущем примере, поскольку они полностью аналогичны.
В этой задаче показано, что симплекс-метод может зациклиться, и как это зацикливание может быть преодолено с помощью правила Бланда.
Здесь описание переходов от таблицы к таблице не будет описано столь подробно как в предыдущем примере, поскольку они полностью аналогичны.
Ведущий элемент на каждой итерации будет выделен жирно.
\begin{equation*}
\begin{split}
Expand Down Expand Up @@ -302,7 +302,7 @@ \section{Задача 2}
\label{tab::simplex_26}
\end{table}

Получили таблицу~\ref{tab::simplex_26}, в точности совпадающую с изначальной таблицей~\ref{tab::simplex_20}.
Получили таблицу~\ref{tab::simplex_26}, в точности совпадающую с изначальной таблицей~\ref{tab::simplex_20}.
Таким образом, следуя указанным правилам выбора ведущего элемента симплекс-метод никогда не остановится.

\subsection{Правило Бланда}
Expand Down Expand Up @@ -381,9 +381,9 @@ \section{Задача 3}
\end{split}
\end{equation*}

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

\textbf{Фаза 1.} Составим вспомогательную задачу
\begin{equation*}
\begin{split}
Expand All @@ -395,7 +395,7 @@ \section{Задача 3}
& x_1, \dots,x_8 \geq 0
\end{split}
\end{equation*}
Поскольку изначально $b_i > 0$ для всех $i$, то преобразования строк матрицы $\bA$ не требуется.
Поскольку изначально $b_i > 0$ для всех $i$, то преобразования строк матрицы $\bA$ не требуется.
Иначе нужно было бы умножить соответствующую строку на $-1$.

Начальная угловая точка для вспомогательной задачи очевидна, $\bx_0 = (0,0,0,0, 3, 2, 5, 1)$ и соответствующий подвектор $\bc_{B} = (1,1,1,1)$.
Expand Down Expand Up @@ -520,12 +520,140 @@ \section{Задача 3}
Так как все оценки замещения положительные, получено решение исходной задачи.
Таким образом, решение исходной задачи $\bx^* = (1/2, 5/4, 0, 1)$ и $f^* = 7/4$.

\section{Задача 4}
В этой задаче рассматривается пример использования М-метода.
Рассмотрим решение на примере предыдущей задачи.
\begin{equation*}
\begin{split}
& \min x_1 + x_2 + x_3\\
\text{s.t. } & x_1 + 2x_2 + 3x_3 = 3\\
& -x_1 + 2x_2 + 6x_3 = 2\\
& 4x_2 + 9x_3 = 5\\
& 3x_3 + x_4 = 1\\
& x_{1,2,3,4} \geq 0
\end{split}
\end{equation*}

Идея заключается в том, представить целевую функцию в виде
$$
\sum_{j=1}^{n} c_j x_j + M \sum_{i=1}^m y_i
$$
где $M$ - некоторая большая положительная константа, а $y_i$ - искусственные переменные. Если изначальная задача имеет конечный оптимум, то при достаточно больших значениях $M$ все $y_i$ обратятся в ноль. Нет необходимости задавать $M$ явно - можно представить его в виде некоторого неопределенного параметра и записывать оценки замещения как некоторые функции от $M$. Когда же возникнет необходимость определить их знак, то будем считать $M$ всегда больше любого другого положительного числа.


Составим вспомогательную задачу
\begin{equation*}
\begin{split}
& \min x_1 + x_2 + x_3 + Mx_5 + Mx_6 + Mx_7 + Mx_8\\
\text{s.t. } & x_1 + 2x_2 + 3x_3 + x_5= 3\\
& -x_1 + 2x_2 + 6x_3 + x_6 = 2\\
& 4x_2 + 9x_3 + x_7 = 5\\
& 3x_3 + x_4 + x_8= 1\\
& x_{1,2,3,4,5,6,7,8} \geq 0
\end{split}
\end{equation*}

Начальная угловая точка для вспомогательной задачи $\bx_0 = (0,0,0,0, 3, 2, 5, 1)$ и соответствующий подвектор $\bc_{B} = (M,M,M,M)$.
Заполнение изначальной таблицы симплекс-метода показано в таблице~\ref{tab::simplex_34}.

\begin{table}[!ht]
\centering
\caption{Изначальная таблица $М$-метода}
\begin{tabular}{|c|cccccccc|}
\hline
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & $x_8$&\\
\hline
$-\mathbf{c}_{\mathcal{B}}^{\top}\bx_{\mathcal{B}} = -11M$ & $1$ & $-8M + 1$ & $-21M +1$ & $-M$ & $0$ & $0$ & $0$ & $0$ \\
\hline
$x_5 = 3$ & $1$ & $2$ & $3$ & $0$ & $1$ & $0$ & $0$ & $0$ \\
$x_6 = 2$ & $-1$ & $\mathbf{2}$ & $6$ & $0$ & $0$ & $1$ & $0$ & $0$\\
$x_7 = 5$ & $0$ & $4$ & $9$ & $0$ & $0$ & $0$ & $1$ & $0$ \\
$x_8 = 1$ & $0$ & $0$ & $3$ & $1$ & $0$ & $0$ & $0$ & $1$ \\
\hline
\end{tabular}
\label{tab::simplex_34}
\end{table}

\begin{table}[!ht]
\centering
\caption{Таблица $М$-метода после первой итерации}
\begin{tabular}{|c|cccccccc|}
\hline
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & $x_8$\\
\hline
$-\mathbf{c}_{\mathcal{B}}^{\top}\bx_{\mathcal{B}} = -3M - 1$ & $-4M +3/2$ & $0$ & $3M-2$ & $-M$ & $0$ & $4M-1/2$ & $0$ & $0$\\
\hline
$x_5 = 1$ & $\mathbf{2}$ & $0$ & $-3$ & $0$ & $1$ & $-1$ & $0$ & $0$\\
$x_2 = 1$ & $-1/2$ & $1$ & $3$ & $0$ & $0$ & $1/2$ & $0$ & $0$ \\
$x_7 = 1$ & $2$ & $0$ & $-3$ & $0$ & $0$ & $-2$ & $1$ & $0$ \\
$x_8 = 1$ & $0$ & $0$ & $3$ & $1$ & $0$ & $0$ & $0$ & $1$\\
\hline
\end{tabular}
\label{tab::simplex_35}
\end{table}

\begin{table}[!ht]
\centering
\caption{Таблица $М$-метода после второй итерации}
\begin{tabular}{|c|cccccccc|}
\hline
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & $x_8$\\
\hline
$-\mathbf{c}_{\mathcal{B}}^{\top}\bx_{\mathcal{B}} = -M -7/4$ & $0$ & $0$ & $-3M + 1/4$ & $-M$ & $2M-3/4$ & $2M+1/4$ & $0$ & $0$\\
\hline
$x_1 = 1/2$ & $1$ & $0$ & $-3/2$ & $0$ & $1/2$ & $-1/2$ & $0$ & $0$\\
$x_2 = 5/4$ & $0$ & $1$ & $9/4$ & $0$ & $1/4$ & $1/4$ & $0$ & $0$\\
$x_7 = 0$ & $0$ & $0$ & $0$ & $0$ & $-1$ & $-1$ & $1$ & $0$ \\
$x_8= 1$ & $0$ & $0$ & $\mathbf{3}$ & $1$ & $0$ & $0$ & $0$ & $1$\\
\hline
\end{tabular}
\label{tab::simplex_36}
\end{table}

\begin{table}[!ht]
\centering
\caption{Таблица $М$-метода после третьей итерации}
\begin{tabular}{|c|cccccccc|}
\hline
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & $x_8$\\
\hline
$-\mathbf{c}_{\mathcal{B}}^{\top}\bx_{\mathcal{B}} = -22/12$ & $0$ & $0$ & $0$ & $-1/12$ & $2M-3/4$ & $2M+1/4$ & $0$ & $0$\\
\hline
$x_1 = 1$ & $1$ & $0$ & $0$ & $1/2$ & $1/2$ & $-1/2$ & $0$ & $1/2$\\
$x_2 = 1/2$ & $0$ & $1$ & $0$ & $-3/4$ & $1/4$ & $1/4$ & $0$ & $-3/4$\\
$x_7 = 0$ & $0$ & $0$ & $0$ & $0$ & $-1$ & $-1$ & $1$ & $0$ \\
$x_3= 1/3$ & $0$ & $0$ & $1$ & $\mathbf{1/3}$ & $0$ & $0$ & $0$ & $1/3$\\
\hline
\end{tabular}
\label{tab::simplex_37}
\end{table}

\begin{table}[!ht]
\centering
\caption{Таблица $М$-метода после четвертой итерации}
\begin{tabular}{|c|cccccccc|}
\hline
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & $x_8$\\
\hline
$-\mathbf{c}_{\mathcal{B}}^{\top}\bx_{\mathcal{B}} = -7/4$ & $0$ & $0$ & $1/4$ & $0$ & $2M-3/4$ & $2M+1/4$ & $0$ & $1/12$\\
\hline
$x_1 = 1/2$ & $1$ & $0$ & $-3/2$ & $0$ & $1/2$ & $-1/2$ & $0$ & $0$\\
$x_2 = 5/4$ & $0$ & $1$ & $9/4$ & $0$ & $1/4$ & $1/4$ & $0$ & $0$\\
$x_7 = 0$ & $0$ & $0$ & $0$ & $0$ & $-1$ & $-1$ & $1$ & $0$ \\
$x_4= 1$ & $0$ & $0$ & $3$ & $1$ & $0$ & $0$ & $0$ & $1$\\
\hline
\label{tab::simplex_38}
\end{table}

\newpage
Так как при достаточно больших $М$ все оценки замещения положительные, получено решение исходной задачи.
Решение исходной задачи $\bx^* = (1/2, 5/4, 0, 1)$ и $f^* = 7/4$.
Заметим, что вводить дополнительную переменную для решения этой задачи было необязательно. Вместо того, чтобы положить $x_8 = 1$ мы могли взять $x_4 = 1$, таким образом упростив получившуюся схему. Вообще говоря, в случае если переменная встречается только в одном ограничении и имеет положительный коэффициент, то соответствующий ей столбец всегда можно ввести в матрицу базиса и вводить дополнительную переменную, свзанную с этим ограничением не нужно.

\begin{thebibliography}{9}

\bibitem{intro2lin}
\bibitem{intro2lin}
Dimitris Bertsimas and John N. Tsitsiklis. \emph{Introduction to linear optimization}, Belmont, MA: Athena Scientific, 1997, 5th edition

\end{thebibliography}
\end{document}

\end{document}