А.А Аль-хулайди, Ю.О.Чернышев «Разработка параллельного алгоритма нахождения оптимального решения
транспортной задачи на кластере»
Введение. Рассматриваемая задача может найти применение в различных областях: в экономике; в логистическом планировании; в учебном процессе; при разработке баз данных и в программировании.
Это позволяет говорить об актуальности данной задачи. Использование данного алгоритма вместе с параллельным алгоритмом нахождения опорного плана позволяет решать транспортную задачу в многопроцессорной или кластерной среде с большей эффективностью.
Подходы к решению транспортной задачи с помощью параллельных алгоритмов изложены, например, в работе [1]. В работе [2] приведены экспериментальные данные, полученные при выполнении параллельных алгоритмов нахождения оптимального решения транспортной задачи на кластере, однако отсутствует сколько-нибудь подробное описание применявшихся при этом методов. Монография [3] содержит подходы к распараллеливанию методов решения задачи целочисленной оптимизации, которые могут быть применены и при решении транспортной задачи.
В данной статье подробно описан параллельный алгоритм нахождения оптимального решения транспортной задачи, приводится блок-схема и данные
о его производительности, полученные экспериментальным путём.
1. Постановка задачи
Транспортная задача является специальным типом задач линейного программирования. Математическая постановка этой задачи имеет вид [4]:
m n min Z Z C--X--;
i=lj=1 iJ iJ;
m
Z X.. = b., j = 1,2,...,n;
i=1 ij j
n
Z X.. = a-, i = 1,2,...,m; (1)
j=1 ij i
Xj > 0,t = 1,2,...,ц,ф = 1,2,...,v.
Здесь X - объем, Cj - тариф поставки продукции от i-го поставщика к j-
му потребителю, b. - потребности потребителей в продукции, a - запасы
прдукции у поставщиков.
Видно, что задача (1) является задачей линейного программирования со специальной матрицей. В задаче (1) имеется (m • n) неизвестных Xij и (m + n) уравнений. Решение транспортной задачи называется оптимальным планом перевозок (поставок) продукции.
Метод распределения ресурсов состоит из двух этапов:
1) построение опорного плана;
2) поиск оптимального плана.
Для получения оптимального решения используются различные алгоритмы, такие как венгерский метод; метод потенциалов [5]. Наиболее удобным для распараллеливания является метод потенциалов. Метод потенциалов позволяет, отправляясь от некоторого опорного плана перевозок, построить решение
транспортной задачи за конечное число шагов (итераций).
Условные обозначения:
• Ui, Vj — симплексные множители (или потенциалы) для строк и столбцов соответственно (i = 1,2..m, j = 1,2..n);
• ci,j — план поставок;
• kij — коэффициенты для каждой ячейки, которые рассчитываются по формуле ki,j = ui + vj - ci,j;
• mine - переменная, в которой хранится минимальное значение ci,j для всех ячеек, входящих в цикл перерасчёта.
Последовательный алгоритм решения транспортной задачи методом потенциалов для получения оптимального решения выглядит следующим образом.
1. Полагаем уп = 0.
2. Находим и; (і = 1..т) , у ( і = 1..П-1).
3. Для каждой клетки (і, і) рассчитываем ку = и + у - Су.
4. Если для всех (і, і) в случае ку < 0, то план является оптимальным и метод завершается.
5. Выбираем ячейку (ітах, ітах) с наибольшим ку = ктах и строим цикл, попутно находя наименьшее тіпс из значений Су в ячейках, имеющих в цикле чётный номер.
6. Полагаем
цикле, i, j - координаты ячейки цикла.
7. Переходим к шагу 3.
Примечание. Переменная cell_odd устанавливается в состояние true для ячеек в цикле, находящихся на чётных местах, и в состояние false для ячеек на нечётных местах.
На рис. 1 представлена схема последовательного алгоритма нахождения оптимального решения транспортной задачи методом потенциалов.
С; j + mine, l - нечётное, С j - mine, l - ч ётное,
где l - порядковый номер ячейки в
Рисі. Схема последовательного алгоритма нахождения оптимального решения транспортной задачи на основе метода потенциалов.
2.Разработка модификации метода потенциалов для работы в параллельной среде
Распараллеливанию в приведённом последовательном алгоритме подлежат шаги 3-4 (расчёт и сравнение к) и шаг 6 (расчёт новой таблицы поставок).
Параллельный алгоритм для нахождения оптимального решения транспортной задачи выглядит следующим образом.
1. Полагаем у„ = 0.
2. Находим и;, і = 1..т, и у, ] = 1..П-1.
3. Разделяем множество клеток на части пропорционально количеству процессоров N. Передаём информацию вычислительным узлам.
4. Для каждой клетки (i, j) в группе рассчитываем ky = u; + Vj - су и находим max ky.
5. Получаем данные от вычислительных узлов и выбираем наибольший maxk (для ячейки maxi, maxj ) из max ki,j по группам.
6. Если maxk < 0, то план является оптимальным и метод завершается.
7. Строим цикл из ячейки (maxi, maxj), попутно находя наименьшее mine из значений с в ячейках, имеющие в цикле чётный номер.
8. Разбиваем цикл на части пропорционально количеству узлов N. Передаём координаты и положение ячеек цикла вычислительным узлам.
ic; j + mine, l - нечётное,
9. Для каждой ячейки полагаем с'; ■ = < ’
IС j - mine, l - ч ётное,
где l - порядковый номер ячейки в цикле, i, j - координаты ячейки цикла.
10. Переходим к шагу 3.
На рис. 2а и 2б представлена схема параллельного алгоритма нахождения оптимального решения транспортной задачи методом потенциалов.
Рис 2а. Начало схемы параллельного алгоритма нахождения оптимального решения транспортной задачи на основе метода потенциалов.
Рис 2б. Окончание схемы параллельного алгоритма нахождения оптимального решения транспортной задачи на основе метода потенциалов.
3. Экспериментальная проверка эффективности параллельного алгоритма
Эффективность приведённого параллельного алгоритма проверялась путём выполнения его на кластере следующей конфигурации:
• 4 вычислительных узла (1п1е1 РепШш 4 2,4 ГГ ц);
• управляющий узел (1п1е1 РепШш 4 2,4 ГГ ц);
• Узлы объединены между собой сетью 1пйшЬапё (пропускная способность 4 Гбит/с).Описанная программа реализована в среде С++. Время выполнения последовательного алгоритма - Тпос.
Время выполнения параллельного алгоритма - Т . Ускорение - У
Т Т - Т
определялось по формуле: У = пос .Выигрыш - В , В=—^-----— *100%.
Т пар. Т пос
Результаты вычислительных экспериментов по исследованию параллельного алгоритма представлены в таблице 1, которую иллюстрирует рис. 3.
Табл. 1. Результаты вычислительных экспериментов исследования последовательного и параллельного алгоритмов
Размер- ность задачи (ш*п) Время выполнения последовательного алгоритма, с Время выполнения параллельного алгоритма,с
1 процессор 2 процессора 4 процессора
Время, с Уско- рение Время, с Уско- рение Время, с Уско- рение
100 0,0339 1,383 5 0,0245 0,812 1 0,0417 0,197 9 0,1712
500 0,2021 1,859 1 0,1087 1,212 3 0,1667 0,593 3 0,3406
1000 0,3940 2,993 1 0,1316 1,912 9 0,2059 0,989 1 0,4382
10000 2,8134 7,222 1 0,3895 5,622 6 0,5003 1,939 2 1,4508
100000 5,8119 11,09 23 0,5239 6,557 8 0,8862 3,914 5 1,4847
Согласно полученным результатам, ускорение при небольших размерностях задачи значительно меньше 0,5. Это означает, что алгоритм неэффективно работает при небольших размерностях задачи. Однако для больших размерностей получается значительный выигрыш (до 150%). Таким образом, при увеличении размерности матриц соотношение операций пересылок и полезных операций существенно уменьшается. На рис. 3 представлены графически зависимости ускорения параллельного алгоритма от числа
используемых процессоров при различной размерности задачи.
количество процессоров
Рис. 3. Зависимость ускорения параллельного алгоритма нахожденья оптимального решения, транспортной задачи от числа используемых процессоров при различной размерности задач
На рис. 4 представлены графически зависимости ускорения параллельного алгоритма от размерности задач.
1,В
О -I------*" -,--------------,----------------,-----------
100 500 1000 10000 100000
размерность задачи
Рис. 4. Зависимость ускорения параллельного алгоритма нахожденья оптимального решения, транспортной задачи от размерности задач
Заключение
Был разработан параллельный алгоритм для нахождения оптимального решения транспортной задачи, который возможно использовать для работы на кластерной локальной сети, либо на многопроцессорной системе. Проведенное тестирование, позволяет сделать вывод, о том что данный алгоритм возможно использовать для эффективного нахождения оптимального решения транспортной задачи.
Данная работа выполнена при поддержке РФФИ (грант № 10-01-00481-а), г/б № 1.21.11.
Литература
1.Барский А. Б. Параллельное программирование. - СПб.: Бином, 2007.
2.Северин А. А. Исследование эффективности реализации численных методов на кластерах персональных ЭВМ. - Минск, 2005.
3.Хохлюк В. И. Параллельные алгоритмы целочисленной оптимизации. -
2007.
4.Каныгин Г.И., Месхи Б.Ч., Соболь Б.В. Методы оптимизации / Каныгин Г.И., Месхи Б.Ч., Соболь Б.В. — М.: Издательство: Феникс, 2009 г. — 384 с.
5.Рыков А.С. Системный анализ: модели и методы принятия решений и поисковой оптимизации. — М.: МИСиС, 119049.