Анализ и оптимизация / Блоки |
| Векторизован | | ||
в палитре | на схеме |
Блок оптимизатор предназначен для подбора таких параметров оптимизации, которые бы удовлетворяли необходимым значениям критериев оптимизации.
Таким образом, задачу оптимизации можно сформулировать, как нахождение вектора параметров оптимизации, при которых критерии качества удовлетворяют своим ограничениям.
Задача оптимизации плохо поддается формализации, поэтому для получения сколь-нибудь эффективных ее результатов, множество критериев и параметров оптимизации, имеющих разную физическую природу и диапазоны изменения, должны быть масштабированы и переведены к нормированным величинам.
При наличии множества критериев, для формализации условия задачи оптимизации, обычно переходят от нескольких частных критериев q1, …, qm к одному общему критерию, который формируется в виде функции частных критериев. Такую процедуру называют свертыванием критериев. В результате получается общий критерий (целевая функция):
Получив обобщенный критерий, можно приступать к решению задачи оптимизации.
Алгоритмы оптимизации
В SimInTech реализованы 5 наиболее подходящих для программной реализации алгоритма оптимизации, в которых решение о переходе в новую точку поиска принимается на основании сравнения значений критерия в двух точках.
Реализуется алгоритм деления шага пополам при одном оптимизируемом параметре (n = 1) и алгоритм преобразований матрицы направлений при n > 1.
Далее рассматривается алгоритм многомерного поиска.
Направления поиска на k-том этапе задаются матрицей Sk. На очередном этапе производится серия спусков в направлениях векторов s1, …, sn, представляющих собой столбцы матрицы Sk . Векторы перемещений на каждом из спусков равны соответственно g1s1, …, gnsn. После выполнения спусков матрица направлений преобразуется по формуле:
где Λk - диагональная матрица, элементы которой равны λk = γi, если γi ≠ 0, и λk = 0.5, если γi = 0; Pk - ортогональная матрица.
Умножение на ортогональную матрицу необходимо для изменения набора направлений поиска. Если на всех этапах Pk = i , то направления поиска не изменяются от этапа к этапу и алгоритм представляет собой алгоритм покоординатного спуска. Очевидно, что выбор матриц Pk существенно влияет на эффективность поиска.
Было испытано несколько различных способов выбора ортогональных матриц Pk, в том числе и случайный выбор. Лучшим оказался способ, при котором все матрицы Pk равны между собой и определяются в виде:
Если этот шаг удачный ( f(y) < f(x) ), переход к пункту c.
Если оба пробных шага оказались неудачными, принимается λ = 0.5 и выполняется переход к пункту d.
Реализуется алгоритм квадратичной интерполяции при одном оптимизируемом параметре (n = 1) и алгоритм преобразований вращения и растяжения-сжатия (n > 1).
Алгоритм при n > 1. Алгоритм основан на выполнении преобразований растяжения - сжатия и преобразований вращения для такого преобразования системы координат, при котором матрица вторых производных (матрица Гессе) приближается к единичной, а направления поиска становятся сопряженными. Этот алгоритм использует квадратичную интерполяцию.
Пусть H - симметричная положительно-определенная матрица. Формируется последовательность матриц:
каждая из которых получается из предыдущей путем выполнения следующего преобразования:где Λk - диагональная матрица с элементами λi = hii−1/2 (hii - диагональные элементы Hk-1); Pk - ортогональная матрица.
После умножения матрицы Hk−1 слева и справа на Λk получается матрица с единичными диагональными элементами. При подходящем выборе ортогональных матриц Pk матрица Hk будет стремиться к единичной. На этом, в частности, основан метод вращений для расчета собственных значений симметричных матриц.
В задаче поиска минимума функции нескольких переменных на k-м этапе поиска поочередно минимизируется функция в направлениях векторов s1 ,…, sn, представляющих собой столбцы матрицы Sk. Для нахождения точки минимума в направлении si используется квадратичная интерполяция по трем равноотстоящим точкам z = x − asi , x , y = x + asi .
Одновременно для каждого направления вычисляется
После выполнения серии спусков матрица S преобразуется по формуле:
где Λk - диагональная матрица, элементы которой определяются по выражению; Pk - некоторая ортогональная матрица.
Для квадратичной целевой функции матрица SkT H Sk , где H - матрица Гессе, совпадает с матрицей Hk . Таким образом, при надлежащем выборе матриц Pk для квадратичной функции SkT H Sk → i и направления поиска приближаются к сопряженным. В рассматриваемом алгоритме матрицы Pk одинаковы на всех этапах и определяются по формуле формуле.
Этапы работы алгоритма Поиск-4 аналогичны рассмотренным выше этапам алгоритма Поиск-2.
Используется метод «деформируемого многогранника» Нелдера и Мида.
В методе Нелдера-Мида минимизируется функция n независимых переменных с использованием n+1 вершин деформируемого многогранника. Каждая вершина может быть идентифицирована вектором x . Вершина (точка), в которой значение f(x) максимально, проектируется через центр тяжести (центроид) оставшихся вершин. Улучшенные (меньшие) значения целевой функции находятся последовательной заменой точки с максимальным значением f(x) на более “хорошие” точки, пока не будет найден минимум f(x).
Далее кратко излагается суть алгоритма.
Пусть xi(k) = [xi1(k), …, xij(k), …, xin(k)]T, i = 1, …, n+1, является i-й вершиной (точкой) на k-том этапе поиска, k = 0, 1, …, и пусть значение целевой функции в xi(k) равно f(xi(k)). Также отмечаются векторы многогранника, которые дают максимальное и минимальное значения.
Пусть f(xh(k)) = max{f(x1(k)), …, f(xn+1(k))},
где xh(k) = xi(k) , и
f(xl(k)) = min{f(x1(k)), …, f(xn+1(k)),
где xl(k) = xi(k).
Поскольку многогранник в En состоит из (n+1) вершин x1, …, xn+1, пусть xn+2 будет центром тяжести всех вершин, исключая xh.
Тогда координаты этого центра определяются формулой:
где индекс j обозначает координатное направление.
Отражение - проектирование xh(k) через центр тяжести в соответствии с выражением:
где a является коэффициентом отражения; xn+2(k) - центр тяжести, вычисляемый по формуле; xh(k) - вершина, в которой функция f(x) принимает наибольшее из n+1 ее значений на k - том этапе.
Растяжение. Эта операция состоит в следующем: если f(xn+3(k)) <= f(xl(k)), то вектор (xn+3(k) − xn+2(k)) растягивается в соответствии с соотношением:
где g >1 представляет собой коэффициент растяжения.
Если f(xn+4(k)) < f(xl(k)) , то xh(k) заменяется на xn+4(k) и процедура продолжается снова с операции 1 при k = k+1. В противном случае xh(k) заменяется на xn+3(k) и также осуществляется переход к операции 1 при k = k+1.
Затем xh(k) осуществляется замена на xn+5(k) и возврат к операции 1 для продолжения поиска на (k+1) шаге.
Критерий окончания поиска - проверка условия:
где e - произвольное малое число, а f(xn+2(k)) - значение целевой функции в центре тяжести xn+2(k).
Таким образом, с помощью операций растяжения или сжатия размеры и форма деформируемого многогранника масштабируются так, чтобы они удовлетворяли топологии решаемой задачи.
После того, как деформируемый многогранник подходящим образом масштабируется, его размеры должны поддерживаться неизменными, пока изменения в топологии задачи не потребуют применения многогранника другой формы. Анализ, проведенный Нелдером и Мидом, показал, что компромиссное значение a = 1. Ими также рекомендованы значения b = 0.5, g = 2. Более поздние исследования показали, что рекомендуются диапазоны 0.4 ≤ b ≤ 0.6, 2.8 ≤g ≤ 3.0, причем при 0 < b < 0.4 существует вероятность того, что из-за уплощения многогранника будет иметь место преждевременное окончание процесса, а при b›0.6 может потребоваться большее число шагов для достижения окончательного решения.
Градиент функции в любой точке показывает направление наибольшего локального увеличения f(x̅). Поэтому при поиске минимума f(x̅), следует двигаться в направлении противоположном направлению градиента ∇f(x̅) в данной точке, то есть в направлении наискорейшего спуска. Итерационная формула процесса наискорейшего спуска имеет вид:
или
Очевидно, что в зависимости от выбора параметра λ траектории спуска будут существенно различаться. При большом значении λ траектория спуска будет представлять собой колебательный процесс, а при слишком больших λ процесс может расходиться. При выборе малых λ траектория спуска будет плавной, но и процесс будет сходиться очень медленно. Обычно λ выбирают из условия:
решая одномерную задачу минимизации с использованием некоторого метода. В этом случае алгоритм представляет собой алгоритм наискорейшего спуска. Если λ определяется в результате одномерной минимизации, то градиент в точке очередного приближения будет ортогонален направлению предыдущего спуска ∇f(x̅)⟂S̅k.
В алгоритме наискорейшего спуска на каждом этапе поиска используется только текущая информация о функции f(x̅k) и градиенте ∇f(x̅k). В алгоритмах сопряженных градиентов используется информация о поиске на предыдущих этапах спуска.
Направление поиска S̅k на текущем шаге k строится как линейная комбинация наискорейшего спуска −∇f(x̅k) на данном шаге и направлений спуска S̅0, S̅1, …, S̅k−1 на предыдущих шагах. Веса в линейной комбинации выбираются таким образом, чтобы сделать эти направления сопряженными. В этом случае квадратичная функция будет минимизироваться за n шагов алгоритма.
При выборе весов используется только текущий градиент и градиент в предыдущей точке.
В начальной точке x̅0 направление спуска S̅0 = −∇f(x̅0) :
где λ0 выбирается из соображений минимальности целевой функции в данном направлении:
Новое направление поиска:
где ω1 выбирается так, чтобы сделать направления S̅1 и S̅0 сопряженными по отношению к матрице H :
Для квадратичной функции справедливы соотношения:
где Δx̅ = x̅ − x̅0,
Если положить x̅= x̅1, тогда x̅1 − x̅0 = λ0 S̅0 и
Используя выражение выше, можно исключить (S̅0)T из уравнения. Для квадратичной функции H = HT , поэтому после транспонирования выражения и умножения справа на H−1, получается следующее выражение:
и далее
Следовательно, для сопряженности S̅0 и S̅1:
Вследствие изложенных ранее свойств сопряженности все перекрестные члены исчезают. С учетом, что S̅0 = −∇f(x̅0) и, следовательно,
получено для ω1 следующее соотношение:
Направление поиска S̅2 строится в виде линейной комбинации векторов −∇f(x̅2), S̅0, S̅1, причем так, чтобы оно было сопряженным с S̅1.
Если распространить сделанные выкладки на S̅2, S̅3, …, опуская их содержание и учитывая, что (S̅k)T∇f(x̅k+1) = 0 приводит к ∇Tf(x̅k)∇f(x̅k+1) = 0, можно получить общее выражение для ωk:
Все весовые коэффициенты, предшествующие ωk, что особенно интересно, оказываются нулевыми.
После n+1 итераций ( k = n), если не произошел останов алгоритма, процедура циклически повторяется с заменой x̅0 на x̅n+1 и возвратом на первый пункт алгоритма. Если исходная функция является квадратичной, то (n+1)-е приближение даст точку экстремума данной функции. Описанный алгоритм с построением ωk по формулам соответствует методу сопряженных градиентов Флетчера-Ривса.
В модификации Полака-Рибьера (Пшеничного) метод сопряженных градиентов отличается только вычислением:
В случае квадратичных функций обе модификации примерно эквивалентны. В случае произвольных функций заранее ничего сказать нельзя: где-то эффективнее может оказаться один алгоритм, где-то – другой.
На вход блока «Оптимизатор» должен подаваться вектор критериев оптимизации. На основании этих значений, используя численные методы оптимизации, происходит подбор значения выходного вектора параметров оптимизации так, чтобы значения критериев лежали в необходимом диапазоне.
Имя | Описание | Тип линии связи |
---|---|---|
in | Вектор критериев оптимизации | Математическая |
Имя | Описание | Тип линии связи |
---|---|---|
out | Вектор параметров оптимизации | Математическая |
Название | Имя | Описание | По умолчанию | Тип данных |
---|---|---|---|---|
Режим оптимизации параметров | optmode | Оптимизация осуществляется либо динамически в течение одного цикла моделирования системы, изменяя параметр оптимизации прямо в ходе моделирования, либо по полному переходному процессу системы с помощью серии последовательных циклов моделирования, в каждом из которых обновляется значение оптимизируемого параметра («По полному переходному процессу», «В динамике с остановкой», «В динамике непрерывно») | В динамике непрерывно | Перечисление |
Периодичность анализа критериев оптимизации при расчете в динамике, сек | optstep | Как часто в ходе моделирования будет происходить анализ критериев и следовательно изменение значения оптимизируемого параметра. Опция имеет смысл только при установленном динамическом режиме оптимизации параметров | 1 | Вещественное |
Выставить начальную точку вручную | manualpoint | Флаг, позволяющий выставить начальную точку вручную | Нет | Двоичное |
Начальное приближение выходов блока | x0 | Начальные значения оптимизируемых параметров с которых начинается расчет | [1] | Массив |
Минимальные значения выходов блока | ymin | Показывает минимальные значения, которые могут принимать оптимизируемые параметры | [0] | Массив |
Максимальные значения выходов блока | ymax | Показывает максимальные значения, которые могут принимать оптимизируемые параметры | [10] | Массив |
Абсолютная точность подбора значений выходов | yabserror | Минимальный шаг, с которым могут изменяться выходные величины | [0.001] | Массив |
Начальное приращение выходов | dparams | Величина изменения значений выходов на первом шаге подбора | [] | Массив |
Минимальные значения входных критериев оптимизации | umin | Нижняя граница целевого диапазона критериев оптимизации. Задается в виде линейного массива, если критериев больше одного | [0] | Массив |
Максимальные значения входных критериев оптимизации | umax | Верхняя граница целевого диапазона критериев оптимизации. Задается в виде линейного массива, если критериев больше одного | [0.02] | Массив |
Тип суммарного критерия оптимизации | usumtype | Метод свертывания критериев для формирования целевой функции («Аддитивный», «Квадратичный», «Минимаксный», «Мультипликативный») | Аддитивный | Перечисление |
Метод оптимизации | optmethod | Используемый численный метод оптимизации («Поиск-2», «Поиск-4», «Симплекс», «Метод наискорейшего спуска», «Метод сопряженных градиентов») | Симплекс | Перечисление |
Максимальное количество повторных моделирований при расчете по полному переходному процессу | maxiter | Максимальное число повторных моделирований в ходе которых алгоритм будет пытаться подобрать оптимальные параметры. Если по окончании указанного числа расчетов не были найдены значения параметров, удовлетворяющие критериям оптимизации, то расчет прерывается. Опция применима только если выбран режим оптимизации «По полному переходному процессу» | 500 | Целое |
Выдача информации о процессе оптимизации | printoptinfo | Включение опции означает выдачу информационных сообщений о значении параметров и критериев оптимизации после каждого их изменения в процессе расчета системы | Нет | Двоичное |
Блок не имеет параметров.