Рассматривается задача минимизации скалярной функции многих переменных:
f(x1, x2, ... xn) → min. |
В качестве основы для параллельного алгоритма был взят метод Хука-Дживса [1]. Метод состоит из последовательности шагов исследующего поиска по базовой точке и шагов поиска по образцу. Алгоритм метода является существенно последовательным: координаты каждой последующей точки становятся известными только после получения значения текущей точки. Для распараллеливания был изменен алгоритм поиска вокруг базовой точки. Разработано три варианта алгоритма различающиеся степенью перебора.
Алгоритм 1 ближе остальных к
исходному алгоритму Хука-Дживса: в нем варьируются координаты
базовой точки по координатным осям,
число вычисляемых точек при однократном
поиске вокруг базовой точки равно
Алгоритм 2 отличается большей степенью перебора: перебираются вершины
гиперкуба с центром в базовой точке, число точек при однократном поиске равно
Алгоритм 3 реализует огромный перебор: перебираются вершины гиперкуба и середины
всех его граней меньших размерностей, число точек равно
Подробно алгоритм распараллеливания и результаты изложены в [2].
В конце поиска вокруг базовой точки существует момент, когда задача-мастер простаивает в ожидании прихода результатов от рабочих. В этот момент удобно ввести в алгоритм элементы метода Монте-Карло: вычисление случайной точки и обработка результатов счета наравне с другими точками (см. [2]).
Рассматривались различные варианты вычисления случайной точки. В результате численных экспериментов был выбран следующий вариант: случайная точка генерируется на границе гиперкуба, окружающего базовую точку, вычисление случайных точек прекращается, когда большинство рабочих уже вернули результаты.
Результаты сравнения времени счета тестовой задачи на десяти процессорах для исходного алгоритма (норма) и для алгоритма с элементами метода Монте-Карло (MMK12) приведены в таблице
параметр | N | Tср | Tmin | Tmax | σ |
норма | 15 | 808.3 | 781.8 | 839.0 | 16.8 |
ММК12 | 21 | 725.9 | 677.0 | 753.2 | 15.3 |
Параметры: N - число запусков,
Литература
[1] | Банди Б., Методы оптимизации. Вводный курс.\ М.: Радио и связь, \ 1988. |
[2] | Иванов А. Г., Параллельный алгоритм прямого поиска минимума функции многих переменных // Алгоритмы и программные средства параллельных вычислений: [Сб. науч. тр.]. Екатеринбург: УрО РАН, 1998, Вып. 2, С. 110-122. |