Лекция 5: Параллельные методы расчета транспортной сети
Транспортная задача с ограниченными пропускными способностями коммуникаций
Постановка задачи и планы решения
Пусть dij — пропускная способность коммуникации (i, j), что порождает ограничение
xij <= dij (5.18)
для всех i, j.
Тогда важная в практическом отношении задача заключается в минимизации (5.1) — целевой функции Z при ограничениях (5.2), (5.3), (5.4) и (5.18). Очевидно, что для разрешимости T -задачи должны выполняться условия
( 5.19) |
( 5.20) |
Как видим, данную задачу тоже можно решать прямым перебором вершин R с учетом резко увеличившегося числа уравнений его границ: их число, с учетом линейной зависимости, составляет теперь n+m-1+2(mx n). С учетом границ на основе условий неотрицательности решения, общее число испытываемых систем линейных уравнений составит C2(m x n)m x n - (m + n - 1).
Однако при этом переборе мы будем исследовать явно несовместимые варианты компоновки систем — а именно, варианты, включающие пары уравнений вида xij=0 и xij=dij. Тогда поступим иначе.
Сначала будем выбирать комбинации переменных, участвующих в формировании указанных систем линейных уравнений. Всех таких комбинаций будет Cm x nm x n - (m + n - 1). После выбора очередной комбинации переменных определим комбинацию их значений — 0 или значение пропускной способности. Таких комбинаций для выбранного набора m x n - (m + n) - 1 переменных будет 2m x n - (m + n - 1) .
Таким образом, общее число испытываемых систем линейных уравнений составит Cm x nm x n - (m + n - 1) x 2m x n - (m + n - 1) .
Воспользуемся и здесь параллельным аналогом симплекс-метода, найдя первоначально некоторую вершину многогранника решений, а затем пытаясь "переместиться" в смежную вершину с меньшим значением целевой функции.
Сделаем важное замечание. Будем считать, что если вдоль прямой, отрезком которой является исходящее из вершины L ребро, найдена смежная вершина M, то на этой же прямой, "в другую сторону" от L, нет смежных вершин. Т.е. одна прямая может связывать не более двух вершин многогранника решений. Предположим, что три вершины M, L, N лежат на одной прямой. Т.к. L — вершина, то существует хотя бы еще одно исходящее из нее ребро. Пусть оно соединяет L с вершиной K. Тогда построим плоскость, проходящую через три точки M, N, K, т.е. через точку K и прямую MN, которой принадлежит точка L. Плоскость поглотила как точку L, так и новое ребро, существование которого мы предположили.
Это означает, что если мы нашли смежную вершину "с одной стороны" по прямой, отрезком которой является исходящее ребро, то искать смежную вершину "с другой стороны" по этой же прямой не следует.
Этим предположением мы пользовались в предыдущем разделе, прекращая дальнейший поиск других смежных вершин вдоль прямой в случае, если одна такая вершина оказывается найденной. Здесь же это замечание, в частности, означает, что если мы нашли смежную данной вершину со значением xij = 0 ( xij = dk ), то испытывать значение xij = dk ( xij = 0 ) не следует. Т.е., как и ранее, мы вдоль каждого исходящего ребра будем искать единственную смежную вершину.
Пример
Введем, как и ранее, линейное множество переменных и сформулируем задачу:
Z = 2y1 + 3y2 + 3y3 + 2y4 + 2y5 + y6 -> min
при ограничениях
y1 + y2 + y3 = 12
y4 + y5 + y6 =10 (5.21)
y1+ y4 =7
y2 + y5 =7
y3 + y6 = 8
и при условии
0 <= y1 <= 4, 0 <= y2 <= 4, 0 <= y3 <= 5, 0 <= y4 <= 4, 0 <= y5 <= 4, 0 <= y6 <= 3. (5.22)
Сформируем ограничения каждой переменной: y1 = min{12, 7, 4} = 4, аналогично y2 = 4, y3 = 5, y4 = 4, y5 = 4, y6 = 3. Исключим из рассмотрения последнее уравнение (5.21) и запишем уравнения всех потенциальных граней на основе (5.22):
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10 (5.23)
y1 + y4 = 7
y2 + y5 = 7
y1 = 0; y1 = 4
y2 = 0; y2 = 4
y3= 0; y3 = 5 (5.24)
y4 = 0; y4 = 4
y5 = 0; y5 = 4
y6 = 0; y6 = 3
Начнем перебор систем по шесть граней в поисках координат одной из вершин многогранника решений. В каждой такой системе должны присутствовать все уравнения (5.23) и два уравнения с разными переменными из (5.24).
Для формирования первой системы уравнений пробуем добавить к (5.23) уравнение y1 = 0. В результате в третьем уравнении не выполняется ограничение по y4 (y4 = 4).
Пробуем вариант y1 = 4. Совершив подстановку, убеждаемся, что он не приводит к подобному противоречию.
Полагаем y2 = 0. В первом уравнении не выполняется ограничение по y3 (y3 = 5).
Полагаем y2 = 4. Получаем и решаем систему уравнений
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10
y1 + y4 = 7
y2 + y5 = 7
y1= 4
y2 = 4.
Находим Y = (4, 4, 4, 3, 3, 4). Однако данная точка не является вершиной многогранника решений, т.к. y6 = 4 противоречит условию (5.22).
Испытываем уравнение y3 = 0. В первом уравнении нарушается ограничение по y1 + y2 (y1 + y2 = 8 < 12).
Испытываем уравнение y3 = 5. Решаем систему уравнений
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10
y1 + y4 = 7
y2 + y5 = 7
y1 = 4
y3 = 5.
Находим Y0 = (4, 3, 5, 3, 4, 3). Решение удовлетворяет условиям задачи, следовательно, найденная точка — вершина многогранника решений. Находим значение целевой функции Z(Y0) = 49.
На основе (5.23) и (5.24) выпишем уравнения всех граней, которым удовлетворяет вершина Y0, т.е. все грани, образующие эту вершину:
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10 (5.25)
y1 + y4 = 7
y2 + y5 = 7
y1 = 4
y3 = 5
y5 = 4
y6 = 3.
Выбирая из (5.25) комбинации по пять уравнений (в каждую комбинацию обязательно входят все уравнения (5.23)), мы формируем прямые, которым принадлежат ребра (принадлежащие или не принадлежащие многограннику допустимых решений), исходящие из вершины Y0. Решая совместно поочередно с другими гранями из (5.24)
y1 = 0, y2 = 0, y2 = 4, y3 = 0, y4 = 0, y4 = 4, y5 = 0, y6 = 0,(5.26)
производим поиск смежной вершины. Нам необходима вершина с меньшим значением целевой функции Z.
Первая комбинация пяти уравнений составляет
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10 (5.27)
y1 + y4 = 7
y2 + y5 = 7
y1 & = 4.
Решая последовательно с уравнениями из (5.26), находим первый непротиворечивый вариант для y2 = 4. Находим точку Y1 = (4, 4, 4, 3, 3,4), которая ранее исследовалась и не является вершиной многогранника решений.
Использование значений y3 = 0 и y4 = 0 приводит к невыполнению ограничений.
Значение y4 = 4 приводит к противоречию в третьем уравнении, .
Значения y5 = 0 и y6 = 0 также приводят к невыполнению ограничений.
Таким образом, исследованное предполагаемое ребро не принадлежит многограннику решений.
Следующая комбинация пяти уравнений на основе (5.25) составляет
y1 + y2 + y3= 12
y4 + y5 + y6 = 10 (5.28)
y1 + y4 = 7
y2 + y5 = 7
y3 = 5.
Решая последовательно с уравнениями (значениями) из (5.26), получаем для y2 = 4 точку Y1 = (3, 4, 5, 4, 3, 3). Т.к. все ограничения выполняются, Y1 — вершина многогранника решений. Однако Z(Y1) = 50 > 49, — переходим к исследованию следующего ребра.
Оно определяется системой уравнений
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10 (5.29)
y1 + y4 = 7
y2 + y5 = 7
y5 = 4.
Данная система решается последовательно с уравнениями из (5.26).
Только при значении y4 = 4 получаем не противоречивую систему и находим точку Y = (3, 3, 6, 4, 4, 2), которая не является вершиной многогранника решений, т.к. не выполняется условие y3 <= 5. Т.е. исследованное предполагаемое ребро не принадлежит многограннику решений.
Последнее предполагаемое ребро определяется системой уравнений
y1 + y2 + y3 = 12
y4 + y5 + y6 = 10
y1 + y4 = 7
y2 + y5 = 7
y6 = 3.
Она решается последовательно с уравнениями из (5.26).
При y2 = 4 получаем непротиворечивую систему и находим Y1 = (3, 4, 5, 4, 3, 3), которая является смежной вершиной, т.к. удовлетворяет всем ограничениям и условиям. Однако Z(Y1) = 50 > 49.
Т.к. все ребра, исходящие из Y0, исследованы, и вершина с меньшим значением целевой функции не найдена, вершина Y0 определяет окончательное решение задачи.
В рассмотренном примере ограничения пропускной способности столь существенны, что не допустили "нулевых" перевозок по одним магистралям во избежание перегрузки других магистралей. Это характерно для исследования фрагмента транспортной сети, когда выделяются допустимые загрузки магистралей. В целом, ограничения могут быть менее жестки либо практически отсутствовать.
Предлагаемый алгоритм, как и ранее, обеспечивает параллельную структуру программы, воспроизводящую SPMD-технологию. Предполагается выполнение копий одной программы на разных процессорах ВС или рабочих станциях локальной сети. Обрабатываемая информация (здесь, например, — ребра многогранника решений) распределяется для обработки разными процессорами. Выбор обрабатываемой информации процессор производит самостоятельно, используя свой номер или имя в системе. Это предусмотрено в программе наряду с синхронизацией по общим данным, контролем выхода за пределы обрабатываемых массивов и др.