ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет инфокоммуникационных Сетей и систем (иксс)
кафедра программной инженерии и вычислительной техники (пиивт)
Лабораторная работа №3
«Методы оптимизации»
Дисциплина: «Алгоритмы и структуры данных»
Выполнили:
Студент группы ИКПИ-32 Максим Яковлев
Принял:
к.т.н., доцент кафедры ПИиВТ
Дагаев А.В.
Постановка задачи
Изучить и практически сравнить эффективность различных алгоритмов оптимизации. Целью является подтверждение теоретических оценок временной сложности алгоритмов и выявление их практических преимуществ.
Метод Золотого сечения
Метод золотого сечения относится к последовательным методам нулевого порядка. В методе золотого сечения две внутренние точки, которые используются для сокращения промежутка неопределенности, выбираются таким образом, чтобы одна из них использовалась с той же целью и на следующем уже сокращенном промежутке. Такое правило выбора точек приводит к тому, что число вычислений функции сокращается вдвое и одна итерации требует расчета только одного нового значения функции. Такими свойствами обладают точки, называемые точками золотого сечения. Алгоритм метода аналогичен алгоритму метода половинного деления. Первоначально определяется промежуток неопределенности, на котором функция является унимодальной. Вычисляются координаты точек по формулам:
,
,
- золотое
сечение. Следующий промежуток
неопределенности определяйся по правилу:
если
и
,
то
,
Работа
алгоритма заканчивается, как только
длина текущего интервала не станет
меньше заданной наперед точности
.
При
этом полагают
где k-номер последней итерации.
Следует отметить, что на каждой итерации метода вычисление значения функции только в одной новой точке. При этом к k-итерации длина интервала неопределенности становится равной величине:
Тогда, при заданной точности >0, можно рассчитать количество итераций метода, необходимых для достижения требуемой точности, как наименьшее целое число, удовлетворяющее неравенству:
Получается, что на каждом новом шаге координаты точки определяются следующим образом:
Пример работы
Пример реализации метода Золотого сечения.
Таблица 1. Метод Фибоначчи
Метод |
золотого |
сечения: |
|
|
|
|
Итерация |
a |
y |
z |
b |
f(y) |
f(z) |
1 |
0.000000 |
0.381966 |
0.618034 |
1.000000 |
0.013932 |
0.013932 |
2 |
0.381966 |
0.618034 |
0.763932 |
1.000000 |
0.013932 |
0.069660 |
3 |
0.381966 |
0.527864 |
0.618034 |
0.763932 |
0.000776 |
0.013932 |
4 |
0.381966 |
0.472136 |
0.527864 |
0.618034 |
0.000776 |
0.000776 |
5 |
0.381966 |
0.437694 |
0.472136 |
0.527864 |
0.003882 |
0.000776 |
6 |
0.437694 |
0.472136 |
0.493422 |
0.527864 |
0.000776 |
0.000043 |
7 |
0.472136 |
0.493422 |
0.506578 |
0.527864 |
0.000043 |
0.000043 |
8 |
0.472136 |
0.485292 |
0.493422 |
0.506578 |
0.000216 |
0.000043 |
9 |
0.485292 |
0.493422 |
0.498447 |
0.506578 |
0.000043 |
0.000002 |
10 |
0.493422 |
0.498447 |
0.501553 |
0.506578 |
0.000002 |
0.000002 |
|
|
|
|
|
|
|
Результат: |
|
|
|
|
|
|
x_min |
= |
0.497488 |
Число |
итераций: |
10 |
|
f_min |
= |
0.000006 |
|
|
|
|
Шаг 1
Вычисляется первая итерация, задаются начальные значения интервала L — интервала неопределённости, начало интервала A = 0, конец интервала B = 1. Вычисляются значения y и z, значения функций f(z) и f(y).
Шаг 2
Значение начала интервала меняется, A = y, так как в первой итерации значение функции f(y) равно значению f(z). Величина конца интервала не сдвигается.
Шаг 3
Значение конца интервала меняется, B = z, так как на втором шаге интеграции значение функции f(y) меньше f(z). Величина начала интервала не сдвигается.
Шаг 4
Значение конца интервала меняется, B = z, так как на втором шаге интеграции значение функции f(y) меньше f(z). Величина начала интервала не сдвигается.
Шаг 5
Значение конца интервала меняется, B = z, так как на втором шаге интеграции значение функции f(y) меньше f(z). Величина начала интервала не сдвигается.
Шаг 6
Значение начала интервала меняется, A = y, так как в первой интеграции значение функции f(y) равно значению f(z). Величина конца интервала не сдвигается.
Шаг 7
Значение начала интервала меняется, A = y, так как в первой интеграции значение функции f(y) равно значению f(z). Величина конца интервала не сдвигается.
Шаг 8
Значение конца интервала меняется, B = z, так как на втором шаге интеграции значение функции f(y) меньше f(z). Величина начала интервала не сдвигается.
Шаг 9
Значение начала интервала меняется, A = y, так как в первой интеграции значение функции f(y) равно значению f(z). Величина конца интервала не сдвигается.
Шаг 10
Значение начала интервала меняется, A = y, так как в первой интеграции значение функции f(y) равно значению f(z). Величина конца интервала не сдвигается.
