diff --git a/17-LinProgSimplex/examples.tex b/17-LinProgSimplex/examples.tex index 5a4408b..cdae2ac 100644 --- a/17-LinProgSimplex/examples.tex +++ b/17-LinProgSimplex/examples.tex @@ -19,7 +19,7 @@ \begin{document} \maketitle -Здесь использованы материалы из книги~\cite{intro2lin}. +Здесь использованы материалы из книги~\cite{intro2lin}. \section{Задача 1} Решить задачу табличным симплекс методом: \begin{equation*} @@ -31,7 +31,7 @@ \section{Задача 1} & x_{1,2,3} \geq 0 \end{split} \end{equation*} -\textbf{Решение:} по виду задачи ясно, что она не в канонической форме. +\textbf{Решение:} по виду задачи ясно, что она не в канонической форме. Введём дополнительные переменные и запишем её в канонической форме: \begin{equation*} \begin{split} @@ -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$, а в первом столбце отрицательное значение целевой функции. @@ -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$. @@ -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] @@ -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} @@ -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{Правило Бланда} @@ -381,9 +381,9 @@ \section{Задача 3} \end{split} \end{equation*} -Для этой задачи начальная угловая точка не так очевидна, как для предыдущих задач. +Для этой задачи начальная угловая точка не так очевидна, как для предыдущих задач. Поэтому необходимо провести двухфазный симплекс-метод. - + \textbf{Фаза 1.} Составим вспомогательную задачу \begin{equation*} \begin{split} @@ -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)$. @@ -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} \ No newline at end of file