- •Решение задач одномерной оптимизации методом перебора значений целевой функции
- •Решение задач одномерной оптимизации методом золотого сечения
- •Решение задач одномерной оптимизации методом квадратичной интерполяции
- •Решение задач многомерной оптимизации методом покоординатного спуска
- •Решение задач многомерной оптимизации градиентными методами
- •1.Теория градиентного метода
- •1.1 Метод градиентного спуска
- •1.2 Метод наискорейшегого спуска
- •Решение задач многомерной оптимизации методом конфигураций (метод хука-дживса)
Решение задач одномерной оптимизации методом перебора значений целевой функции
Пусть требуется найти наименьшее значение целевой функции U=f(x) , заданной на отрезке [a,b]. Для решения поставленной задачи возьмем некоторое целое число n, вычислим шаг h=(b – a)/n и определим значения целевой функции f(x) в точках xk=a+kh (k=0,1,2,…,n): UK=f(xk). После этого среди полученных чисел Uk найдем наименьшее число
mn = min(U0,U1,…,Un).
Число mn можно приближенно принять за наименьшее значение функции f(x) на отрезке [a,b]. При этом очевидно, что
mn m = min f(x)
x [a,b]
Однако благодаря непрерывности функции f(x) будем иметь
lim mn = m = min f(x),
n →∞ x [a,b]
т.е. с увеличением числа точек n ошибка, которую мы будем допускать, принимая mn за m, стремится к нулю.
Какое же n нужно взять, чтобы погрешность определения наименьшего значения целевой функции n = |mn – m| не превышала заданной точности , т.е. чтобы n ?
Если известно, что функция f(x) непрерывна на отрезке [a,b], то ответить на поставленный вопрос нельзя. Какое бы n мы не взяли, и как бы не выбирали n точек на отрезке [a,b], всегда можно указать такую непрерывную функцию, что для нее mn будет отличаться от m больше, чем на . Справедливость такого утверждения иллюстрируется рисунок 1.
Рисунок 1 - График многоэкстремальной целевой функции
Допустим, что мы взяли n=7. Определяя значения функции Uk=f(xk) в точках xk (k=0,1,…..,7), получим, что
m7=min(U0,U1,…..,U7)=U5=f(x5).
Величину m7=U5, согласно описанному методу, следует приближенно принять за наименьшее значение целевой функции на рассматриваемом отрезке. Однако, если у нас перед глазами нет графика функции, а известны только 8 чисел Uk, то по ним невозможно установить, что функция f(x) имеет между точками x2 и x3 узкий “язык”, который опускается гораздо ниже значения U5=m7. Из-за небольшого числа точек мы его пропустим. Если взять большее n, то данный “язык” обнаружится, но при этом может оказаться незамеченным какой-нибудь другой еще более узкий “язык”.
При отсутствии дополнительной информации о свойствах целевой функции f(x), о том, насколько “резкими” могут быть ее изменения, сомнения останутся всегда, какое бы большое число точек мы не взяли.
Дать строго обоснованную оценку числа точек n, необходимого для решения задачи с точностью , можно только сужая класс рассматриваемых функций. Рассмотрим несколько случаев, позволяющих решить задачу поиска без пропуска действительного минимума целевой функции.
Предположим, что функция f(x) не просто непрерывна, а помимо этого еще удовлетворяет условию Липшица с известной постоянной , тогда для выбора числа точек n, необходимого для отыскания минимума целевой функции с точностью (n=|mn-m|), можно воспользоваться следующим соотношением:
n *(b-a).
Однако это соотношение можно использовать только в двух случаях:
когда заранее, т. е. априори, известна постоянная Липшица ;
когда имеется явная формула для целевой функции и по ней можно оценить постоянную Липшица .
Примечание: Говорят, что функция f(x) удовлетворяет на отрезке [a,b] условию Липшица, если существует такая постоянная , что для любых x1 и x2, имеет место следующее неравенство:
|f(x1)-f(x2)| |x1-x2|
где: -постоянная Липшица.
С геометрической точки зрения условие Липшица означает ограниченность тангенса угла наклона секущих, проведенных через всевозможные пары точек графика функции f(x). В самом деле, из условия Липшица следует, что:
|[f(x1)-f(x2)]/(x1-x2)| ,
но ведь левая часть этого неравенства и есть модуль тангенса наклона секущей. Вместе с тем, каждой секущей графика функции f(x) можно поставить в соответствие параллельную ей касательную. Следовательно, условие Липшица означает ограниченность модуля производной функции |f (x)| на [a,b] или ограниченность модуля скорости изменения целевой функции f(x).
Пусть априори известно, что целевая функция U=f(x) имеет на отрезке [a,b] только один минимум, т. е. является унимодальной, рисунок 2. Это свойство целевой функции позволяет избежать пропуска фактического минимума при решении задач оптимизации, кроме того, объем вычислений также может быть сокращен.
U Uk-1 Uk+1
Uk
0 Xk-1 Xk Xk+1 X
Рисунок 2-График унимодальной целевой функции
Для решения задачи оптимизации в этом случае может быть применен следующий прием. Возьмем некоторый шаг h и будем последовательно вычислять значения функции f(x) в точках x0 a; x1=a+h; x2 =a+2h…, сравнивая при этом получаемые числа U0, U1, U2,… Сначала они будут убывать: U0>U1>U2…, однако, в дальнейшем найдется такая точка xk=a+kh, что для значения функции в этой точке Uk=f(xk) будут справедливы следующие неравенства: Uk-1Uk, Uk+1Uk. Это означает, что минимум функции достигается на отрезке [xk-1,xk+1] и его приближенно можно принять равным Uk=f(xk). Для повышения точности решения задачи можно уменьшить шаг h и повторить описанную процедуру уже для отрезка [xk-1,xk+1].
В задачах управления часто требуется найти с заданной точностью не само значение минимума целевой функции на отрезке [a,b], а абсциссу точки минимума x* =arg m, т. к. x обычно играет роль управляющего воздействия, которое, конечно, должно быть оптимальным. В этом случае задача выбора числа n, необходимого для отыскания с заданной точностью абсциссы точки минимума x*, решается так.
Следует заметить, что интервал значений x, в котором заключен оптимум целевой функции, называется интервалом неопределенности. В начале решения задачи этот интервал имеет длину (b-a). При решении задачи методом перебора первоначальный интервал неопределенности сужается до двух шагов, т. е. окончательный интервал неопределенности будет равен 2h.
Последнее означает, что x* [xn - h, xn + h], где xn =arg mn или, что то же самое,
xn - h x* xn + h.
Поэтому
- h x* – xn h
или
| x* - xn | h.
Но по условию задачи требуется, чтобы | x* – xn | , следовательно, шаг h должен удовлетворять следующему условию: h . Или
( b – a ) / n ;
n ( b – a ) / .
Данное соотношение и определяет необходимое значение числа n.
Заметим, что задача поиска может быть сформулирована и так: требуется найти абсциссу точки минимума x* , причем длина окончательного интервала неопределенности не должна превышать заданного, достаточно малого положительного числа . В этом случае, очевидно, что n следует выбирать по соотношению
n 2 ( b – a ) / .