Научная статья на тему 'Многошаговый алгоритм многомерной поисковой оптимизации'

Многошаговый алгоритм многомерной поисковой оптимизации Текст научной статьи по специальности «Математика»

CC BY
470
55
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Многошаговый алгоритм многомерной поисковой оптимизации»

Кузьмина А. А.

МНОГОШАГОВЫЙ АЛГОРИТМ МНОГОМЕРНОЙ ПОИСКОВОЙ ОПТИМИЗАЦИИ

Предлагается видоизмененный алгоритм регулярного поиска экстремума, имеющий преимущество в быстродействии по отношению к классическому алгоритму регулярного поиска.

В настоящее время для решения задач оптимизации активно используются распределенные вычислительные системы. Это позволяет существенно сократить временные затраты на вычисления и решать задачи такого уровня сложности, который ранее был недоступен.

В то же время использование распределенных вычислительных систем требует специальных мер по организации параллельных вычислений, и выбора таких методов оптимизации, которые удобны для распараллеливания. Поэтому, наиболее предпочтительными методами оптимизации функций являются методы полного перебора и пассивного случайного поиска - по причине их внутреннего параллелизма. Однако эти методы имеют существенный недостаток - большое количество вычислений в бесперспективных областях.

Чтобы избавиться от поиска в областях, которые не могут содержать оптимум, необходимо использовать какую-либо дополнительную информацию о характере функции - либо априорную, любо полученную уже в ходе поиска. В последнем случае алгоритм поиска будет уже не строго параллельным, а последовательно-параллельным.

Примером такого последовательно-параллельного алгоритма является многошаговый алгоритм многомерной поисковой оптимизации унимодальной функции, предложенный в настоящем докладе.

Приводится видоизмененный алгоритм регулярного поиска, в котором разбиение пространства поиска происходит сначала грубо, затем детализируется. Область поиска покрывается равномерной сеткой с большим интервалом, и таким образом разбивается на подобласти. В середине каждой подобласти берется итерация (вычисляется значение функции). Затем подобласть, для которой получено рекордное (то есть минимальное на данном этапе вычислений) значение функции, снова разбивается на подобласти, и так далее. Такой подход дает преимущество в быстродействии при сохранении точности за счет снижения объема вычислений в областях, где оптимум находиться не может.

Важно заметить, что такой принцип поиска работает только для унимодальных функций, поэтому применять предложенный алгоритм можно лишь для решения задач, в которых есть основания предполагать наличие только одного экстремума.

1. Постановка задачи

Пусть исследуемая целевая функция имеет один минимум и зависит от n независимых параметров -

v v v тг - ^ Г min max 1

Х^Х2---ХП. Каждый параметр Xj изменяется в диапазоне х;- •

Необходимо найти минимум целевой функции с некоторой точностью £ за время Т.

В строгом смысле точность - это разница между истинным значением экстремума и найденным. Однако поскольку истинное значение экстремума функции нам неизвестно, мы не можем использовать это определение точности в качестве заданного априори критерия остановки. Тем не менее, очевидно, что косвенным критерием точности может являться расстояние между соседними точками, в которых берется итерация. В самом деле, каким бы ни был характер функции - чем ближе друг к другу мы берем итерации, тем точнее будет найденное значение экстремума.

Из этих соображений в качестве критерия точности £ примем расстояние вдоль одной оси между двумя соседними точками, в которых производится итерация, выраженное в процентах от длины диапазона изменения соответствующей переменной.

2. Алгоритм поиска экстремума

2.1. Определяем число циклов вычислений

Пусть n - число переменных (координатных осей пространства переменных), /jj - время выполне-

ния одним процессором одной итерации.

2.1.1. Задаем точность разбиения £ - расстояние между соседними точками, в которых берется

итерация, в процентах от всей длины интервала изменения переменной. Принимаем £ одинаковой для всех переменных.

2.1.2. Вычисляем число узлов сетки - это такое количество точек, которое мы имели бы при заданной точности, если бы не разбивали процесс вычислений на этапы.

2.1.3. Задаем приемлемое время всего процесса вычислений - Т. Это время чистых вычислений, за вычетом времени на коммуникации.

2.1.4. Определяем, сколько итераций процессор успеет произвести за время Т.

Т

^ед =— (2)

Ч г

2.1.5. Определяем число циклов.

Пусть С - это число циклов (которое нам предстоит найти). Зависимость числа итераций от С выражается следующим соотношением:

1

2.1.5. Поскольку уравнение (4) не решается относительно С аналитически, построим график функций:

Введение

(1)

Що = N ■(N6s) (3)

Подставив (1) и (2) в (3), получаем соотношение между С, £ и ton: n

є ' (5)

Ч I

2.1.6. Найдем точку пересечения этих графиков в положительном квадранте и примем С как ближайшее большее целое к точке пересечения по оси С.

2.2. Построим равномерную сетку на пространстве поиска

При заданной точности разбиения г и заданном числе циклов С число точек на каждом цикле будет п_

ЛГ (100%^с

*-Ы (б)

В дальнейшем, в целях лучшего визуального представления будем рассматривать функцию двух переменных, однако предложенный алгоритм можно распространить на случай п независимых переменных, поскольку если функция выпукла (например, книзу), то в любой точке, которая ближе к минимуму, значение функции меньше, чем в любой точке, которая дальше от минимума.

Разбив пространство переменных на N точек, присвоим каждой точке координаты I, ] - по осям

Х^, Х^ соответственно.

2.3. Распределяем точки по процессорам

Пусть однородная вычислительная среда содержит Р процессоров. Каждый процессор должен произ-N

вести — итераций. Пусть на один процессор приходится z точек по оси х1 и к точек по оси х2, так Р

что

z • к - *

Р

2 — оаёг а к — оаёг а

Присваиваем каждому процессору номер рЕ\...Р .

Диспетчер рассылает каждому процессору с ярлыком р пакеты точек с координатами

{и} ' р\, у е[к-(р-\\...,к- р\ .

і*1),-_1 +(Х1 )Л (Х2)у-1 +(*2)^

2.4. Введем обозначение фф ,•= Р ( ; ) - значение целевой функции в середу 2-2

дине прямоугольника с координатами {г,у} . Каждый процессор вычисляет ф— для присвоенных ему то-

чек. Каждый процессор находит ф

Ш1П

для своих точек.

2.5. Каждый процессор отсылает диспетчеру свое значение Фтп и координаты {/, у} области, которой оно соответствует. Диспетчер находит область с минимальным значением Ф\тп .

2.6. Область с минимальным рекордом Фтп вновь разбиваем на N подобластей.

Пусть ]’} - координаты минимальной области.

Присваиваем

(ХД -(Х1)г-—1 ( х1 )г-=( х1)1+(1)г' 21);,—1 -(г'—1)

I е 1..2

(Х2 )1 -(Х2)/—1

(Х2)у-(■Х2), + ^^ (У — О

У е1.. Р

Повторяем шаги 2.3 - 2.5 до тех пор, пока расстояние между двумя соседними итерационными точками не станет равным 8 , то есть пока не будет удовлетворен критерий точности.

3. Пример применения метода

Рассмотрим на примере, какое преимущество в быстродействии дает вышеописанный метод по сравнению с классическим методом регулярного поиска. Критерий точности примем как расстояние между итерационными точками, критерий быстродействия - как количество итерационных точек.

Для этого рассмотрим задачу на оптимизацию заданной алгоритмически функции двух переменных

/ (Х|, Х^) на области изменения параметров

Х е(0..25)

*2 є (0..250).

3.1. Решение методом классического регулярного поиска

Разбиваем диапазон изменения каждой переменной на интервалы длиной 4% от длины диапазона. Получаем по 25 точек вдоль каждой оси и 625 точек с координатами (х1, х2). Вычисляем значение функции для каждого вектора (х1, х2). Таблица с результатами итераций в докладе не приведена в силу громоздкости.

В результате поиска найден минимум / Ц, х2) = О в точке (9,40). Сделано 252 = 625 итераций, достигнутая при этом точность - 4% для каждой переменной.

. Решение методом пошагового регулярного поиска

Разобьем процесс вычислений на два этапа, так как для данного простого примера этого достаточно, и покажем, какое преимущество дает такая организация вычисления по сравнению с одношаговой.

Первый цикл. Разбиваем диапазон изменения каждой переменной на интервалы длиной 20% от длины диапазона. Получаем по 5 интервалов вдоль каждой оси. В середине каждого интервала вычисляем значения функции. Результаты итераций приведены в таблице 1.

Таблица 1

\ х2 х1 0- 50 50- 100 100- 150 150- 200 200- 250

0-5 267 1289 7289 18289 34289

5-10 227 1274 7274 18274 34274

5 1 1 0 1 237 1261 7261 18261 34261

15-2 297 1250 7250 18250 34250

20-25 407 1241 7241 18241 34241

На первом цикле устанавливаем промежуточный минимум / (х^, х^) = 227 в точке (7,5,25). Поскольку функция унимодальная, ее минимум находится в области, для которой получили промежуточный минимум:

Х| е(0..5),Х2 е(0..50).

Второй цикл. Разбиваем область Х| е(0..5), х^ е(0..50) на 5 интервалов вдоль каждой оси. Получаем

по 5 точек вдоль каждой оси и 25 точек с координатами (х1, х2). На этом шаге достигается заданная точность разбиения - 4% от первоначального диапазона. Поэтому итерации берем не в середине интервала между соседними точками, а в самих точках.

Вычисляем значение функции для каждого вектора (х1, х2). Результаты итераций приведены в таблице 2.

Таблица 2.

0 10 20 30 40

5 1616 916 416 116 16

6 1609 909 409 109 9

7 1604 904 404 104 4

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

8 1601 901 401 101 1

9 1600 900 400 100 0

2

Получаем минимум / (хР х2)=0 в точке (9,40). Сделано 2 • 5 = 50 итераций, достигнутая при этом

точность - 4% для каждой переменной.

Сравним теперь два метода нахождения оптимума для общего случая.

Пусть п - число переменных,

г -заданная точность разбиения в процентах длины диапазона (примем равной для каждой переменной).

С - число циклов в алгоритме пошагового регулярного поиска.

Для достижения заданной точности г методом классического регулярного поиска необходимо произ-

100%

зести /П итераций, где / -

Є

Для достижения той же точности є методом пошагового регулярного поиска необходимо произвести п

п гГ г 100%

С • итераций, где ] —-----------, С - число циклов.

Є

В таблице 4 показано, как зависит число итераций от точности для классического алгоритма регулярного поиска, и для пошагового с числом циклов 2, 3, 4, 5. В рассмотренном примере число неза-

висимых переменных равно 5.

Таблица 4.

Точность є Классический Регулярный поиск Пошаговый регулярный поиск

2 цикла 3 цикла 4 цикла 5 циклов

0,001 О 1 6,32х1012 646330407 7113118 500000

0,01 О 1 2х1010 13924767 400000 50000

0,1 1 О 63245554 300000 224 94 5000

1 1 о 200 000 64 64 1265 500

2 312500000 35356 2036 532 250

4 9765625 6250 642 224 125

5 3200000 3578 442 170 100

10 100000 633 140 72 50

Таким образом, алгоритм пошагового регулярного поиска дает существенное сокращение числа итераций по сравнению с алгоритмом классического регулярного поиска. Это сокращение выражено тем больше, чем больше в задаче число независимых переменных, и чем больше число циклов, на которые мы разбиваем процесс вычислений.

Метод пошагового регулярного поиска распараллеливается так же успешно, как и метод классического регулярного поиска, но при этом лишен главного его недостатка - большого числа вычислений в бесперспективных областях.

Недостаток метода пошагового регулярного поиска заключается в том, что он применим только для унимодальных функций.

i Надоели баннеры? Вы всегда можете отключить рекламу.