электронное научно-техническое издание
НАУКА и ОБРАЗОВАНИЕ
Эя №ФС 77 - 30569. Государственная регистрация №0421100025.155Н 1994-0408_
Разработка параллельного алгоритма построения опорного плана транспортной задачи
• 05, май 2011
автор: Аль-хулайди А. А.
УДК 004.032.24
ДГТУ - г. Ростов-на-Дону [email protected] лПчИнЫс^ [email protected]
Введение
Рассматриваемая задача может найти применение в различных областях:
• при решении задачи распределения ресурсов между вычислительными задачами или устройствами;
• в экономике, при планировании транспортного комплекса;
• в учебном процессе.
Таким образом, можно говорить об актуальности данной задачи. Использование параллельного алгоритма, оптимизированного для работы в многопроцессорной среде, позволяет более оптимально использовать вычислительные мощности кластера.
Подходы к решению транспортной задачи с помощью параллельных алгоритмов изложены, например, в работе [1]. В работе [2] приведены экспериментальные данные, полученные при выполнении параллельных алгоритмов нахождения опорного плана транспортной задачи на кластере, однако отсутствует сколько-нибудь подробное описание применявшихся при этом методов. Монография [3] содержит подходы к распараллеливанию методов решения задачи целочисленной оптимизации, которые могут быть применены и при решении транспортной задачи.
В данной статье подробно описан параллельный алгоритм нахождения опорного плана транспортной задачи, приводится блок-схема и данные о его производительности, полученные экспериментальным путём.
1. Постановка задачи
Транспортная задача является специальным типом задач линейного программирования. Математическая постановка этой задачи имеет вид [4]:
т п
'■=1 у=1
т
= ^ У = (1)
7=1
77
УХ =а , 7 = 1,2,..., да;
1] 7 ' 5 5 5 5
У=1
Ху > 0, / = 1, 2, ..., да, j = 1, 2, ..., п.
Здесь Ху - объем, ву - тариф поставки продукции от /-го поставщика ку'-му потребителю, Ъц - потребности потребителей в продукции, а - запасы продукции у поставщиков.
Видно, что задача (1) является задачей линейного программирования со специальной матрицей. В задаче (1) имеется (да • п) неизвестных Ху и (да + п) уравнений.
Решение транспортной задачи называется оптимальным планом перевозок (поставок) продукции.
Метод распределения ресурсов состоит из двух этапов:
1) построение опорного плана;
2) поиск оптимального плана.
Для получения опорного плана используются различные алгоритмы, такие как метод минимального элемента; метод северо-западного угла; метод штрафов [5]. Наиболее удобным для распараллеливания является метод штрафов, который позволяет независимо выбрать план для каждого столбца и строки. Причём основная часть операций может быть выполнена параллельно.
Последовательный алгоритм решения транспортной задачи методом Фогеля (штрафов) для получения опорного плана выглядит следующим образом.
1) Штрафы для строки или столбца представляют положительную разницу между минимальным элементом строки (столбца) и следующим за ним по величине минимальным элементом строки или столбца.
2) Расчет штрафов для всех строк и столбцов матрицы.
3) Формирование опорного плана начинается с минимального элемента строки или столбца с максимальным штрафом.
4) Выбор элементов плана Х и коррекция векторов потребления и постановок осуществляется, как рассмотрено выше (шаги 1, 2).
5) Строка или столбец матрицы С, которым соответствует нулевое значение потребности или поставки, в дальнейшем не участвуют в формировании штрафов. Процесс продолжается до тех пор, пока не обнулятся все вектора.
На рис. 1 представлена схема последовательного алгоритма нахождения опорного плана методом штрафов.
начало
Ввод ограничений
/ = 1.. т
Выбираем штху, и пехШту
I
пех1ху-штху
] = 1 .. п
Выбираем штху, и пехШту для столбца
I
& := пех1ху-штху
Выбираем наибольшее ё
нет
1 '
О
да
Выбираем строку или столбец для которой штху минимальное
О
Рис. 1. Схема последовательный алгоритм нахождения опорного плана методом
штрафов.
Решение транспортной задачи большой размерности при помощи последовательной модели вычислений требует значительных временных затрат. В связи с этим актуальной является разработка соответствующих параллельных алгоритмов, позволяющих сократить время поиска решения.
Так как транспортная задача имеет экономический подтекст, она является актуальной для различного масштаба производственных и торговых предприятий. Наиболее доступным видом параллельных вычислительных систем для таких предприятий представляется вычислительный кластер, представляющий собой систему с распределённой памятью.
Ставится следующая задача. Модифицировать приведенный выше последовательный алгоритм метода Фогеля для выполнения на вычислительном кластере с использованием в качестве коммуникационной библиотеки - MPI (Message Passing Interface).
2. Разработка модификации метода Фогеля для параллельных систем
Пусть u — вектор потребностей потребителей, v — вектор мощностей поставщиков, z — матрица стоимости перевозок, х — матрица решения (поставок).
Параллельный алгоритм для нахождения опорного решения транспортной задачи выглядит следующим образом.
1) Для каждой строки и столбца матрицы стоимости перевозок определяем разницу между наименьшим значением стоимости и ближайшим к нему (т. н. штраф). Поиск штрафа по каждой строке и столбцу оформляется в виде отдельной задачи и назначается свободному процессору.
2) Во всех строках и столбцах с наибольшим штрафом находим ячейки с наименьшим минимальным значением стоимости (не зачеркнутые ранее). Выполнение этого шага также распределяется между свободными процессами.
3) Максимизируем поставку в ячейку x[i,j], выбрав минимальное значение из потребности потребителя u[i] и мощности поставщика v j].
4) Если мощность поставщика полностью реализована или потребность потребителя полностью удовлетворена, вычеркиваем соответствующую строку или столбец.
5) Если не все потребности (мощности) задействованы, то повторяем алгоритм.
Параллельная модификация алгоритма использует тот факт, что подсчет штрафов
и поиск минимального элемента в пунктах 1, 2 поддаются параллелизации за счёт разделения задач по поиску в разных строках и столбцах по различным процессорам кластера. На рис. 2 представлена схема параллельного алгоритма нахождения опорного плана методом Фогеля.
3. Оценка времени выполнения параллельного алгоритма
Метод штрафов заключается в том, что для каждого столбца и каждой строки матрицы отыскивается минимальный и следующий за ним по значению элемент. Разница между ними называется штрафом строки или столбца. Среди всех штрафов выбирается тот, который имеет максимальное значение. Минимальный элемент строки или столбца включается в опорный план, а соответствующая строка или столбец исключается из дальнейшего рассмотрения. Эти действия повторяется до тех пор, пока не будут исключены все строки и столбцы. Совокупность помеченных на каждой итерации элементов образуют опорный план. Последовательность работ на одной итерации приведена на рис. 3.
Для определённости будем считать, что задана квадратная матрица ресурсов (да*да), а число обрабатывающих процессорных узлов (процессоров) в параллельной системе равно q, причём ц < 2т . Все данные задачи и программа управлением решения находятся управляющем узле (сервере) С.
Рис. 2. Схема параллельного алгоритма нахождения опорного плана методом Фогеля
Рис. 3. Схема одного этапа выполнения работ для получения опорного плана
методом штрафов
^ —^^ Пересылка штрафов для
Р4 (П30 (П32у ГпО V/ сравнения
Уровень ^М) Сравнение штрафов
5 V/ Ф ® в \У
Уровень Г/П4 ) Пересылка результата
6 V У • • • АП 4У
На уровне 1 сервер пересылает строки (столбцы) на процессоры. Число строк на каждом процессоре зависит от числа узлов. На уровне 2 процессор обрабатывает полученные строки, осуществляя поиск максимального штрафа среди всех строк, переданных ему сервером. На уровне 3 процессоры пересылают максимальный штраф и координаты строки (столбца), в которой он был получен, на сервер. На уровне 4 сервер распределяет полученные штрафы по процессорам для определения среди них максимального. На уровне 5 происходит передача результата поиска максимального штрафа на сервер. Сервер вычёркивает ту строку (столбец) в которой определён максимальный штраф и организует следующую итерацию.
Для расчёта числа операций при получении опорного плана методом штрафов обозначим - время пересылки матрицы по строкам (столбцам) с сервера на каж-
дый из процессоров; у = 1, (т — 1) - номер итерации метода штрафов.
Время пересылки матрицы можно выразить через время пересылки одного элемента (элементарная пересылка). Легко видеть, что справедливы следующие выражения:
tV = t
эл.пер
X
\2 -mx(j-1)
если вычёркиваются только строки (или только столбцы); tэлпер - время на пересылку одного элемента;
j-iv
fn = t
эл. пер.
m -U-1)х
m --
V
2
если вычёркиваются попеременно строка затем столбец.
Отсюда следует, что среднее значение величины равно
г1- J = i
Т ПСр I эл.пер.
f
m -0'-1)х
m--
4
Время Т]jJ обработки строки (столбца) на одном процессоре можно выразить через элементарные операции сравнения и представить в виде
TlöJ = [im -j-\) + (m-j-2) + Цэлобр = 2(m - у -1 )t3Jlo6p ,
где tэл обр - время выполнения одной операции сравнения при поиске минимального и
следующего за ним элемента.
Время, затрачиваемое на одном шаге для поиска штрафа в каждой строке (столбце) по всей матрице ресурсов для q узлов обработки, можно записать в виде
2m —j + 1
q
+ 1
Tq J, если q < {2т - у +1),
Tq J ? если q > (2m — j +1)
Данная функция является дискретной. График этой функции представлен на
рис. 4 (принято, что д = 1, 20, 171 = 10, у = 1, 2171 и Т0] =1). Для упрощения расчётов аппроксимируем эту функцию как функцию двух переменных q и (2да-у + 1):
- 45 • 10"6 д2 (2т - у +1)2 + 9 • 10"4 д(2т - у +1)2 -15 • 10"4 (2т - у +1)2 + + (4 • 10"3 д2 - ОД 163д + 0,768)(2/и - у +1) - 36 • 10"4 д2 + 0,12д + 87 • 10"4.
Рис. 4. График зависимости времени поиска штрафа от числа строк и узлов обработки
Аппроксимирующая функция имеет вид, представленный на рис. 5.
Рис. 5. График аппроксимирующей зависимости времени поиска
Введем следующие обозначения:
Т\7 = 3 * tэл.пер. " время пересылки результата обработки одной строки (столбца) на сервер с обрабатывающего процессора;
Тп - время пересылки величины штрафа и индексов минимума строки (столбца) с сервера на процессор.
Время Т п зависит от стратегии поиска максимального штрафа среди всех найденных. Обычно все полученные штрафы распределяются равномерно на q имеющихся процессоров. Поэтому это время через элементарные операции можно записать в виде
[log9 (2m-j+1)]-1 1
т п =
3t эммер. -(2m-j + 1) £ — , есЛИ 2m - j + 1 > q,
i=о q
logq(2m j 1) 1
3t эммер. -(2m-j + 1) £ — , если 2m-j + 1 < q.
i=о 2
Для упрощения расчётов аппроксимируем данную формулу как функцию от переменной
7^7« Кл,ер.' (2т - у +1)(-0,023^2 +2,2843^-2,8412).
-5
Время То сравнения двух штрафов на одном процессоре через время выполнения элементарной операции имеет вид
\о°д(2т-]+\) ^
То = Т30 = ил.пер. ■ - ] +1) ' I
г=1 q
Аппроксимировав эту функцию по переменной q, получим
ТЬ*■(2ш-7+1)(-0,3\д2 + 1,2843^-3,8412)
Тогда время, затрачиваемое на выполнения у-й итерации метода штрафов, можно оценить величиной
тш ~тп] + (-45-10чУ + 9• 10 -15• 10 4)(2ш-7 +1)2 +(4-1(Г3д2 -0,1163^ + 0,768): х(2ш-7 + 1)-36-10"4-д2 +0,12-д + 87-10"4]-Го-' +(2ш-7 + 1)7^ +То■
Таким образом, общее время, затраченное на получение опорного плана, составит величину
2 т
Тщ-Ц {Т1П} + (-45-10~(у +9-10"4д-15-10"4)(2ш-7 + 1)/ + (4-10~^/ -0,1163д +
./=1
+ 0,768)(2ш - 7 +1) - 36 • 10"4 • д2 + 0,12 • д + 87 • 10"4] • } + (2ш - у +1)7^ + Гд + 7^}.
Подставив в полученное выражение значение величин, выраженное через элементарные операции, получим
•»-6 „2
-1—4
•»-3 „2
2 т
тш = 1.{
7=1
т
0-1) 8
-4
эл.пер
+ (4-10~3д2 -0,1163^ + 0,768)(2да-7 + 1)-36-10"4+ 0,12-д + 87-10~4] 2(да-7'-1)х
4 „2
х + 3(2ш - 7 + \К.пер. + 31эл ■ (2т - 7 +1)(-23 ■ 10"3 д2 + 2,2843</ - 2,8412) +
' эл.обр.
эл.пер. эл.пер
■3 „2
+ * • (2да -7 +1)(-31-10" V +1,2843</ - 3,8412)}.
4. Экспериментальная проверка эффективности параллельного алгоритма
Эффективность приведённого в разделе 3 алгоритма проверялась путём выполнения его на кластере следующей конфигурации:
• 4 вычислительных узла (Intel Pentium 4 2,4 ГГц);
• управляющий узел (Intel Pentium 4 2,4 ГГц).
Узлы объединены между собой сетью Infiniband (пропускная способность 4 Гбит/с).
Результаты вычислительных экспериментов по исследованию параллельного алгоритма представлены в таблице 1, которую иллюстрирует рис. 3.
Согласно полученным результатам, ускорение при небольших размерностях задачи значительно меньше 0,5. Это значит, что алгоритм неэффективно работает при небольших размерностях задачи. Однако, для больших размерностей мы получаем значительный выигрыш (до 130%). Таким образом, при увеличении размерности матриц соотношение операций пересылок и полезных операций уменьшается.
Табл. 1. Результаты вычислительных экспериментов по исследованию
параллельного алгоритма
Размерность задачи (m*n) Время выполнения последовательного алгоритма, с Параллельный алгоритм
1 процессор 2 процессора 4 процессора
Время, с Ускорение Время, с Ускорение Время, с Ускорение
100 0,0435 1,5735 0,0277 0,9320 0,0467 0,2476 0,1757
500 0,2079 2,1591 0,0963 1,7999 0,1155 0,6837 0,3041
1000 0,4849 3,1953 0,1518 2,2136 0,2191 1,4034 0,3455
10000 3,0424 8,8255 0,3447 6,3273 0,4808 3,2364 1,0491
100000 7,5116 14,0951 0,5329 8,5968 0,8738 6,9902 1,2875
На рис. 6 представлены графически зависимости ускорения параллельного алгоритма от число используемых процессоров при различной размерности задачи.
количество процессоров
-•- 100
-Ш- 500
1000
-*- 10000
-*- 100000
Рис. 6. Зависимость ускорения параллельного алгоритма поиска опорного плана
от числа используемых процессоров при различной размерности задач
*
Сравнение времени выполнения параллельного алгоритма Tp полученного экспериментальным путем (табл.1) и полученной теоретически оценки времени Tp приведено в табл. 2
Табл. 2. Сравнение экспериментального и теоретического времени работы параллельного алгоритма.
Размерность задачи (ш • п) Время выполнения параллельного алгоритма
1 процессор 2 процессора 4 процессора
с * Tu с T2, с * T2, с с * T 4, с
100 1,7834 1,5735 0,6710 0,9320 0,2844 0,2476
500 1,8950 2,1591 1,8926 1,7999 0,7561 0,6837
1000 3,0978 3,1953 2,9697 2,2136 1,5135 1,4034
10000 8,9363 8,8255 5,6577 6,3273 3,4711 3,2364
100000 10,1757 14,0951 9,9349 8,5968 7,3644 6,9902
На рис. 7 представлены графики зависимости времени работы разработанного параллельного алгоритма от размерности решаемой задачи, полученные теоретически и экспериментальным путем при использований 4 процессоров
Рис. 7. Графики зависимости времени работы параллельного алгоритма от размерности решаемой задачи.
Из табл. 2 и рис. 7 видно, что полученные теоретические оценки погрешности параллельного алгоритма поиска опорного плана не превышают 15%.
Заключение
Разработан параллельный алгоритм для нахождения опорного плана транспортной задачи, который возможно использовать для работы на кластерной локальной сети, либо на многопроцессорной системе. Проведенное тестирование, позволяет сделать вывод, о том что данный алгоритм возможно использовать для эффективного нахождения опорного плана транспортной задачи.
Опорный план, который получается в результате работы описанного параллельного алгоритма, может быть использован при поиске оптимального решения транспортной задачи. В дальнейшем, возможно разработать параллельный алгоритм для поиска оптимального решения.
Библиографический список
1.Барский А. Б. Параллельное программирование. - СПб.: Бином, 2007.
2.Северин А. А. Исследование эффективности реализации численных методов на кластерах персональных ЭВМ. - Минск, 2005.
3.Хохлюк В. И. Параллельные алгоритмы целочисленной оптимизации. - 2007.
4.Каныгин Г.И., Месхи Б.Ч., Соболь Б.В. Методы оптимизации / Каныгин Г.И., Месхи Б.Ч., Соболь Б.В. — М.: Издательство: Феникс, 2009 г. — 384 с.
5.Рыков А.С. Системный анализ: модели и методы принятия решений и поисковой оптимизации. — М.: МИСиС, 119049.