Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11111 / ТТ / Методы статической оптимизации.doc
Скачиваний:
83
Добавлен:
11.02.2015
Размер:
1.13 Mб
Скачать

12

Решение задач одномерной оптимизации методом перебора значений целевой функции

Пусть требуется найти наименьшее значение целевой функции 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).

Однако это соотношение можно использовать только в двух случаях:

  1. когда заранее, т. е. априори, известна постоянная Липшица ;

  2. когда имеется явная формула для целевой функции и по ней можно оценить постоянную Липшица .

Примечание: Говорят, что функция 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-1Uk, Uk+1Uk. Это означает, что минимум функции достигается на отрезке [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 ) / .