Лабораторная работа по "Методам Оптимизации"
Лабораторная работа, 25 Декабря 2012, автор: пользователь скрыл имя
Краткое описание
В данной работе рассматриваются одномерные методы оптимизации, то есть целевая функция является функцией одной переменной. Формально задача ставится следующим образом:
Задана функция одной переменной f(x), где a<=x<=b. Требуется с заданной точностью ε найти значение x0, при котором f(x0) минимально.
Файлы: 1 файл
OPT_LAB0.doc
— 97.00 Кб (Скачать)Лабораторная работа по курсу «Методы Оптимизации»
Численные методы нулевого порядка
Общая характеристика методов 0-го порядка
К численным методам оптимизации нулевого порядка относятся вычислительные алгоритмы поиска экстремума, не использующие информации о производных целевой функции. По сравнению с методами более высоких порядков, они отличаются большей вычислительной устойчивостью, но, в большинстве случаев, более медленной сходимостью (сходимость типичных методов нулевого порядка линейная, то есть с каждым шагом точность вычислений возрастает примерно в k раз, где константа k зависит от метода и свойств целевой функции). Кроме того, методы нулевого порядка – единственные методы, которые применимы к функциям, производные которых не определены во всех или в некоторых точках.
В данной работе рассматриваются одномерные методы оптимизации, то есть целевая функция является функцией одной переменной. Формально задача ставится следующим образом:
Задана функция одной переменной f(x), где a<=x<=b. Требуется с заданной точностью ε найти значение x0, при котором f(x0) минимально.
Рис. 1. Унимодальные функции. На отрезке [a, b] функция f1(x) унимодальна, f2(x) – нет.
Метод дихотомии
Метод дихотомии также называется методом деления пополам. Необходимым условием для его применения является требование унимодальности целевой функции f(x): на рассматриваемом промежутке [a,b] функция f(x) должна иметь не более одного экстремума (см. рис 1).
Алгоритм
- На начальном этапе отрезок, на котором ищется минимум, задаётся равным интервалу допустимых значений [a,b]
- Вычисляется положение центра отрезка c=(a+b)/2 и центров его правой и левой половин: x1=(a+c)/2, x2=(c+b)/2
- Вычисляются значения целевой функции в точках f(c), f(x1), f(x2)
- Значения функции в точках c, x1, x2 сравниваются, и определяется положение нового, уточнённого интервала поиска. При этом интервал поиска уменьшается в 2 раза:
- Если f(c) > f(x1), то новый отрезок: [a,c]
- Если f(c) > f(x2), то новый отрезок: [c,b]
- Иначе новый отрезок: [x1,x2]
- Если длина отрезка меньше заданной точности ε, то алгоритм завершается, иначе осуществляется переход на шаг 2.
Алгоритм проиллюстрирован рис. 2.
Рис. 2. Метод дихотомии. Показан случай, когда f(x1)<f(c)
Для уменьшения количества вычислений можно воспользоваться тем, что на втором и последующих шагах значение функции в центре нового отрезка всегда будет вычислено на предыдущем шаге, поэтому на каждом новом шаге требуется вычислять целевую функцию только в центрах правого и левого полуотрезков.
Так как каждый последующий отрезок всегда ровно в 2 раза меньше предыдущего, метод дихотомии обеспечивает увеличение точности в 2 раза за каждые 2 вычисления целевой функции, или, в среднем, в 21/2 = 1,41... раза на 1 вычисление целевой функции.
Метод Фибоначчи
Метод Фибоначчи аналогичен методу деления пополам, но вместо деления отрезка на равные части в нём используется деление в золотой пропорции: φ = (1 + 51/2) / 2 = 1,6817…. Так же , как и метод деления пополам, метод Фибоначчи требует того, чтобы функция была унимодальной.
Алгоритм
- На начальном этапе выбирается отрезок [a,b] , на котором ищется минимум.
- Внутри отрезка выбирается точка c, делящая его в золотом отношении, то есть так, что отношение большей части отрезка к меньшей равно отношению всего отрезка к его большей части:
с = a + (b-a)/ φ
- Определяется положение дополнительной точки x, которая расположена симметрично точке c относительно центра отрезка:
x = a + b - c
- Вычисляются значения функции f(a), f(b), f(c), f(x).
- Значения функции сравниваются и определяется новое положение интервала поиска (см. рис 3):
- Если c>x:
- Если f(x) < f(c), то новый отрезок: [a, c]
- Иначе новый отрезок: [x, b]
- Если c<x: (эта ситуация может возникнуть на втором шаге и далее)
- Если f(x) < f(c), то новый отрезок: [c, b]
- Иначе новый отрезок: [a, x]
- Если длина отрезка стала меньше заранее заданной точности, алгоритм завершается, иначе итерация повторяется с шага 2.
Рис. 3. Метод Фибоначчи. Показан случай, когда f(x)<f(c).
Особенностью метода Фибоначчи, позволяющей
экономить дорогостоящие
Например, на рис.3 f(x)<f(c), поэтому новым интервалом поиска становится интервал [a,c]. Точка x в этом случае оказывается внутри нового интервала и делит его в золотом отношении, то есть она становится новой точкой c.
Длина интервала поиска на следующем шаге всегда в φ = 1,68… раз меньше длины на предыдущем шаге. Таким образом, за одно вычисление целевой функции метод Фибоначчи увеличивает точность в 1,68… раз, что больше чем соответствующий показатель метода дихотомии (1.41…).
Задание на лабораторную работу
В лабораторной работе требуется на любом реализовать один из методов поиска экстремума. Метод поиска минимума и целевая функция указаны в варианте задания. Целевая функция содержит два свободных параметра, базовые значения которых также указаны в варианте задания.
Представленная программа
Содержание отчёта
Отчет по лабораторной работе должен содержать следующие элементы:
- Постановка задания
- Данные варианта
- Эскиз графика целевой функции на заданном интервале поиска
- Аналитически найденное значение экстремума
- Текст программы (можно привести только часть кода, относящуюся непосредственно к реализации алгоритма)
- Результаты выполнения программы для базовых значений, приведенных в варианте
- Выводы
Варианты заданий
№ |
Интервал поиска [a, b] |
Метод оптимизации |
Целевая функция f(x) |
Значения свободных параметров A, B | |
A |
B | ||||
1 |
[-2; 2] |
Дихотомия |
Ax2 + Bx |
1 |
-1 |
2 |
[0; π/2] |
Фибоначчи |
A sin(x) + Bx |
1 |
0,5 |
3 |
[-1; 3] |
Дихотомия |
Ax + Bx |
2 |
-1 |
4 |
[-2; 2] |
Фибоначчи |
1 / (x2 + Ax + B) |
0 |
1 |
5 |
[1; 5] |
Дихотомия |
A ln(x) + Bx |
2 |
-1 |
6 |
[-1; 5] |
Фибоначчи |
Ax2 + Bx |
2 |
-4 |
7 |
[1; 5] |
Дихотомия |
A ln(x) + Bx |
3 |
-2 |
8 |
[0; π/2] |
Фибоначчи |
A sin(x) + Bx |
2 |
√2 |
9 |
[0; 3] |
Дихотомия |
Ax + Bx |
1,5 |
-2 |
10 |
[-1; 3] |
Фибоначчи |
1 / (x2 + Ax + B) |
1 |
1 |
11 |
[-2; 3] |
Дихотомия |
Ax2 + Bx |
0,5 |
2 |
12 |
[0; 4] |
Фибоначчи |
1 / (x2 + Ax + B) |
2 |
1 |
13 |
[-2; 2] |
Дихотомия |
Ax + Bx |
½ |
3 |
14 |
[0; π/2] |
Фибоначчи |
A sin(x) + Bx |
1 |
√3 / 2 |
15 |
[-1; 4] |
Дихотомия |
Ax2 + Bx |
1 |
-2 |
16 |
[1; 5] |
Фибоначчи |
A ln(x) + Bx |
-7 |
3 |
17 |
[-3; 3] |
Дихотомия |
Ax + Bx |
e |
-1 |
18 |
[-5; 0] |
Фибоначчи |
1 / (x2 + Ax + B) |
-2 |
5 |
19 |
[1; 7] |
Дихотомия |
A ln(x) + Bx |
6 |
-3 |
20 |
[-1; 2] |
Фибоначчи |
Ax2 + Bx |
2 |
2 |
21 |
[0; π/2] |
Дихотомия |
A sin(x) + Bx |
3 |
√3 |
Точность, с которой необходимо искать минимум целевой функции, одинакова дял всех вариантов и равна 10-6.