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

1.3 Методы одномерной оптимизации

Эти методы строятся в предположении унимодальности функции F(x) на заданном интервале [a, b]. К функции не предъявляются требования непрерывности или дифференцируемости, предполагается лишь, что для любого x [a, b] значение F(x) может быть вычислено.

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

Методы последовательного поиска (методы сокращения интервалов, методы исключения интервалов)

Методы этой группы нацелены на построение такой стратегии поиска x*, при которой любая пара вычислений F(x) позволяет сузить область поиска (или интервал неопределенности). Вычисляя F(x) в точках x1 и x2 таких, что a < x1 < x2 < b, можно локализовать интервал неопределенности путем анализа полученных значений функции:

если F(x1) < F(x2), то x* [a, x2];

если F(x1) = F(x2), то x* [x1, x2];

если F(x1) > F(x2), то x* [x1, b];

Основное различие между методами последовательного поиска состоит в стратегиях выбора значений x1 и x2.

Метод дихотомии (половинного деления) – один из самых простых методов последовательного поиска.

Метод половинного деления (метод дихотомии) проиллюстрирован ниже.

Метод золотого сечения предполагает такое сокращение интервала на каждом шаге, что отношение целого к большей части было равно отношению большей части к меньшей. Это отношение, равное 1.618, и называют «золотым сечением». (1 : 0,618 = 1,618; 0.618 : 0,382 = 1,618)

Координаты точек x1,k и x2,k определяются следующим образом:

x1,k = ak + 0.382(bk – ak) ; x2,k = bk – 0.382(bk – ak).

Значение коэффициента К (0,382) подобрано так, что в полученном отрезке меньшей длины одна из промежуточных точек совпадет с промежуточной точкой от предыдущего шага. Это позволяет сократить число вычислений целевой функции на всех шагах (кроме первого) в 2 раза.

Таким образом, требуется не более N шагов и N+1 вычисление целевой функции, где N можно рассчитать, используя соотношение (b–a)/ε = (1–a)N при заданной погрешности ε определения экстремума.

САПР-1986, кн. 9:

САПР-1986, кн. 8:

Метод чисел Фибоначчи

Стратегия поиска связана с использованием чисел Фибоначчи, которые можно получить из рекуррентного соотношения Rk = Rk-1 + Rk-2 , k = 2, 3, …, R0 = R1 = 1. В отличие от метода золотого сечения, здесь коэффициент сокращения интервала изменяется от итерации к итерации, хотя он также близок к значению 0.382.

Норенков-2000: Согласно методу чисел Фибоначчи, используют числа Фибоначчи Ri, последовательность которых образуется по правилу Ri+2 = Ri+1 + Ri при R0 = R1 = 1, т.е. ряд чисел Фибоначчи имеет вид 1, 1, 2, 3, 5, 8, 13, 21, 34, .... Метод аналогичен методу золотого сечения с тем отличием, что коэффициент K равен отношению Ri-2 /Ri, начальное значение i определяется из условия, что Ri должно быть наименьшим числом Фибоначчи, превышающим величину (ba)/ε, где ε — заданная допустимая погрешность определения экстремума. Так, если (ba)/ε = 100, то начальное значение i = 12, поскольку R12 = 144, и K = 55/144 = 0,3819, на следующем шаге будет K = 34/89 = 0,3820 и т.д.

Основной недостаток метода – необходимость задания числа шагов. Основное преимущество – быстрое сужение интервала неопределенности: при числе шагов n = 14 интервал неопределенности примерно в 5 раз меньше, чем получаемый по методу половинного деления. В то же время по сравнению с методом золотого сечения метод Фибоначчи позволяет получить интервал только на 17% меньше, и при большом числе шагов оба эти метода практически идентичны.

Методы полиномиальной аппроксимации

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

Метод квадратичной интерполяции – один из популярных методов этой группы.

Метод заключается в замене нелинейной функции F(x) квадратичной параболой F2(x), построенной по трем точкам, принадлежащим F(x), так, чтобы значения аппроксимирующей функции F2(x) совпали со значениями F(x) в этих трех точках. Минимум квадратичной функции находится с использованием аналитического условия оптимальности: df/dx = 0.

На первом этапе в качестве исходных трех точек используются

x1 = a, x2 = (a + b)/2, x3 = b.

В этих точках вычисляется f(x) и по полученным точкам f(x1), f(x2), f(x3) строится парабола

f2 = C2 x2 + C1 x + C0 ,

коэффициенты которой находятся из решения соответствующей системы уравнений:

f2(x1) = f(x1), f2(x2) = f(x2), f2(x3) = f(x3)

Значения коэффициентов:

C0 = f(x1),

C1 = [f(x2) – f(x1)] / (x2 – x1),

C2 = 1 / (x3 – x2) {[ f(x3) – f(x1)] / (x3 – x1) – [f(x2) – f(x1)] / (x2 – x1)}

Условие оптимальности приводит к уравнению x4 = – C1 / 2C2 , где х4 – точка минимума параболы f2(x).

Далее выбирается новый отрезок, внутри которого находится точка х4, и c использованием х3, х4 строится новая парабола, по которой уточняется положение минимума f(x), и т. д. до тех пор, пока величина отрезка, внутри которого находится оптимум, не станет меньше заданной погрешности . Таким образом, метод имеет итерационный характер.

К достоинствам метода относится высокая скорость сходимости, хотя метод может не всегда сходиться.

Например, на рис. ниже показана ситуация (для случая максимизации функции), когда метод параболической аппроксимации сходится к решению уже на третьем этапе: парабола 3, построенная по точкам х3, х4, х5, практически совпадает с исходной функцией 1.

Пример. Найти максимум функции f(x) = sin (x + 1)на интервале  [-1; 2], точность = 0,01.

Решение. Для построения аппроксимирующей параболы находим точки

x1 = a, x2 = (a + b)/2, x3 = b.

Система уравнений для нахождения коэффициентов параболы примет вид:

Решение системы можно найти любым из известных способов, например, по формулам Крамера. На первом шаге получаем = 0,5571, f( ) = 0.9999. По этой точке, а также по второй и третьей исходным точкам, лежащим по обе стороны от точки максимума параболы, аналогично строится вторая парабола.

п

x1

x2

x3

f1)

f(x2)

f(x3)

C2

C1

C0

1

-1

0.5

2

0

0.9975

0.1411

-0.412

0.459

0.871

0.5571

0.9999

2

0.5

0.5571

2

0.9975

0.9999

0.1411

-0.4249

0.4914

0.858

0.5782

1

3

0.5571

0.5782

2

0.9999

1

0,1411

-0,4208

0.4809

0.8626

0.5714

1

4

0,5571

0,5714

0,5782

0,9999

1

1

-0,5

0,5708

0,8371

0,5708

1

Уже на третьем шаге разница между двумя точками максимума менее заданной погрешности, поэтому поиск можно заканчивать (четвертый шаг приведен для наглядности вычислений). Поэтому х* 0,5708, и  f* f (0,5708) = 1.

Кроме описанных методов, существует и ряд других, например, метод Пауэлла, предусматривающий последовательное применение квадратичной аппроксимации, метод Давидона, использующий кубическую аппроксимацию, и др. Примеры программной реализации различных методов приведены в литературе, например, в книге Б. Банди «Методы оптимизации».

Заметим, что универсального метода, наилучшего для любых задач, пока не создано. Поэтому в современных математических пакетах возможна автоматическая смена метода в процессе решения задачи, как например в Matlab – переход от метода золотого сечения (golden) к методу квадратичной аппроксимации (parabolic):