Опубликован: 22.12.2006 | Доступ: свободный | Студентов: 1216 / 120 | Оценка: 4.73 / 4.45 | Длительность: 18:17:00
ISBN: 978-5-94774-546-7
Специальности: Программист

Лекция 4: Параллельные и сетевые технологии решения задач линейного программирования

Параллельный аналог "симплекс-метода"

Пример

Рассмотрим задачу линейного программирования

Z = 26x + 20y + 21z -> max (4.6)

при ограничениях

q1 = 2x + 7y - 76z + 222 >= 0

q2 = - 8x +9y - 8z + 64 >= 0

q3 = - 8x + 13y -24z + 96 >= 0 (4.7)

q4 = - x - 6y - z + 70 >= 0

q5 = - 2x - 7y - 2z + 90 >= 0

q6 = 33x + 3y +22z - 165 >= 0

и при условии x>= 0, y >= 0, z >= 0.

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

Многогранник допустимых решений

Рис. 4.4. Многогранник допустимых решений

Формально мы не знаем R, и множество граней — действительных и возможных — этого многогранника представлено системой уравнений:

q1 = 2x + 7y - 76z + 222 = 0

q2 = - 8x +9y - 8z + 64 = 0

q3 = - 8x + 13y -24z + 96 = 0

q4 = - x - 6y - z + 70 = 0

q5 = - 2x - 7y - 2z + 90 = 0 (4.8)

q6 = 33x + 3y +22z - 165 = 0

q7 = x = 0

q8 = y = 0

q9 = z = 0

В результате решения первой же подсистемы трех уравнений (n = 3) системы (4.8) получаем координаты вершины E многогранника R

\begin{equation}
\left\{ \begin{gathered}
 q_1  = 0 \hfill \\
 q_2  = 0 \to E(13,8,4),\quad Z(E) = 592 \\
 q_3  = 0 \hfill \\
\end{gathered}  \right.
\end{equation} ( 4.9)

Постараемся "сместиться" в ту вершину, смежную вершине E, т.е. соединенную с ней ребром (в одну из вершин A, D, L, F ), в которой целевая функция Z имеет максимальное значение, превышающее Z(E).

Ребра, исходящие из вершины, определяются подсистемами n-1 плоскостей, пересекающихся в этой вершине, т.е. образующими ее.

В данном случае подсистема \left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_2  = 0\quad  \hfill \\
\end{gathered}  \right. определяет несуществующее ребро. Пока мы знаем это только по рисунку. Подсистема

\left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_3  = 0 \hfill \\
\end{gathered}  \right.
определяет ребро EA, подсистема
\left\{ \begin{gathered}
  q_2  = 0 \hfill \\
  q_3  = 0 \hfill \\
\end{gathered}  \right.
определяет ребро ED. А вот ребра EL и EF мы пока не знаем, т.к. не знаем (формально, а не по рисунку!) все плоскости (плоскость q5 ), пересекающиеся в E. Это значит, что из каждой вершины в общем случае исходят не менее n ребер, а сколько в действительности — предстоит уточнить. (Представьте себе R — бриллиант классической огранки.)

Значит, q1, q2, q3 — это лишь наше начальное представление о множестве плоскостей — граней, пересекающихся в вершине E. Нам необходимо развить это представление до полного.

Тогда выясним все множество граней, образующих вершину E, подстановкой ее координат во все другие уравнения (9.8) и испытанием на получение тождества. Находим q_{5}(13, 8, 4) \equiv  0. Добавляем q5 в (4.9), полагаем полностью известным число p = 4 ребер, образующих вершину E. Т.е. вместо (4.9) получаем

\begin{equation}
\left\{ \begin{gathered}
 q_1  = 0 \hfill \\
 q_2  = 0 \hfill \\
 q_3  = 0 \hfill \\
 q_5  = 0 \hfill \\
\end{gathered}  \right.
\end{equation} ( 4.10)
Каждую возможную грань, определяемую двумя (n-1) уравнениями плоскостей из (4.10), будем решать совместно со всеми плоскостями из (4.8), не вошедшими в (4.10), — с гранями q4, q6, q7, q8, q9.

Первая такая система имеет вид

\begin{equation}
\left\{ \begin{gathered}
 q_1  = 0 \hfill \\
 q_2  = 0 \hfill \\
 q_4  = 0 \hfill \\
\end{gathered}  \right.
\end{equation} ( 4.11)
Ее решение (535, 8,7, -517,2) содержит отрицательную составляющую. Т.е. эта точка не принадлежит R. Если бы решение было не отрицательным, мы должны были бы проверить выполнение всех ограничений (4.7), не представленных в (4.11).

Можно показать, что в выпуклом многограннике несуществующее ребро не вызовет появления "ложной" вершины, и достаточно проверить (4.7).

Системы

\left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_2  = 0 \hfill \\
  q_6  = 0 \hfill \\
\end{gathered}  \right.
,\quad  \left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_2  = 0 \hfill \\
  q_7  = 0 \hfill \\
\end{gathered}  \right.,\quad \left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_2  = 0 \hfill \\
  q_8  = 0 \hfill \\
\end{gathered}  \right.,\quad \left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_2  = 0 \hfill \\
  q_9  = 0 \hfill \\
\end{gathered}  \right.
имеют не положительное решение.

Следующая испытываемая система линейных уравнений на основе двух уравнений из (4.10) и не входящих в (4.10) уравнений из (4.8), имеет вид

\left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_3  = 0 \hfill \\
  q_4  = 0 \hfill \\
\end{gathered}  \right..
Ее решение — приблизительно точка (5,2, 9,4, 4) не является вершиной R, т.к. не удовлетворяет всем ограничениям (9.7), q5(5,2, 9,4, 4) < 0.

Следующая испытываемая система имеет вид

\left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_3  = 0 \hfill \\
  q_6  = 0 \hfill \\
\end{gathered}  \right..
Ее решением является вершина A (3, 0, 3), Z(A) = 141 < 592.

Т.к. мы нашли вершину на "другом конце" ребра, анализ данного ребра прекращаем.

Следующее исследуемое ребро, исходящее из вершины E, определяется подсистемой

\begin{gathered}
q_1 = 0\\
q_5 = 0,
\end{gathered}
которая должна решаться совместно с уравнениями q4 = 0, q6 = 0, q7 = 0, q8 = 0, q9 = 0.

Первая же система \left\{ \begin{gathered}
  q_1  = 0 \hfill \\
  q_5  = 0 \hfill \\
  q_4  = 0 \hfill \\
\end{gathered}  \right. определяет вершину L (6, 10, 4). Однако Z(L) = 440 < 592.

Следующее возможное ребро, исходящее из вершины E, определяется комбинацией

\begin{gathered}
q_2 = 0\\
q_3 = 0.
\end{gathered}
Решая ее совместно с другими гранями R, - q4 = 0, q6 = 0, q7 = 0, q8 = 0, q9 = 0, пытаемся найти другую вершину в R, смежную E.