lab7
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Отчет по лабораторной работе №7
по дисциплине
«Численные методы»
на тему
«Методы многомерной оптимизации.»
Выполнил: студент группы
БИК2207
Проверил:
Москва, 2024 г.
Оглавление
1. Индивидуальное задание. 3
2. Проверка существования минимума функции. 3
3. Решение задачи многомерной оптимизации аналитическим методом. 3
4. Начальная точка итерационного процесса численного решения задачи многомерной оптимизации. 3
5. Выполнение методом наискорейшего спуска (НСА). 4
6. Код. 5
7. Построение траектории поиска минимума методами НСА и ГДШ. 7
8. Решение задачи оптимизации с помощью математического пакета. 7
9. Вывод. 8
Индивидуальное задание.
№ |
Целевая функция |
Ручной |
Программа |
16 |
f(x,y) = 6 x2 + 4 y2 – 5 x + 3 y –13 |
НСА |
ГДШ |
Проверка существования минимума функции.
Известно, что всякий глобальный минимум выпуклой функции является одновременно и локальным.
Проверим, что функция является выпуклой на множестве R.
Матрица
Гессе
для функции
:
а угловые миноры:
Таким
образом, функция
- выпуклая на множестве R.
Решение задачи многомерной оптимизации аналитическим методом.
Необходимые условия существования точки экстремума:
Начальная точка итерационного процесса численного решения задачи многомерной оптимизации.
Выберем начальную точку спуска - x0 = 1, y0 = 0.5.
Выполнение методом наискорейшего спуска (НСА).
Вывод формулы для расчета шага спуска:
где
Построим функцию
Из
условия
определим параметр λ:
Выполнение по методу НСА:
Полученные результаты сведем в таблицу:
k |
x |
y |
|
|
|
|
||
0 |
1 |
0.5 |
-9.5 |
7 |
7 |
0.114 |
||
1 |
0.2 |
-0.3 |
-14.3 |
-2.6 |
0.6 |
-0.091 |
||
2 |
-0.038 |
-0.245 |
-13.298 |
-5.453 |
1.039 |
0.001178 |
||
3 |
-0.31 |
-0.246 |
-13.334 |
|
|
|
||
После 3-х итераций: Xmin = -31, ymin = -0.246, f = -13.334
Код.
import numpy as np
def function(x, y):
"""
Функция для минимизации.
"""
return 6 * math.pow(x, 2) + 4*math.pow(y, 2) - 5 * x + 3*y-13
def gradient(x, y):
"""
Градиент функции.
"""
return np.array([12*x-5, 8*y+3])
def gradient_descent(x0, y0, tol=1e-4):
"""
Метод градиентного спуска с дроблением шага.
"""
x, y = x0, y0
i = 0
print(f"Итерация {i}: x = {x:.6f}, y = {y:.6f}")
while True:
i += 1
grad = gradient(x, y)
step_size = 1
while function(x - step_size * grad[0], y - step_size * grad[1]) > function(x, y):
step_size /= 2
x -= step_size * grad[0]
y -= step_size * grad[1]
if i < 4:
print(f"Итерация {i}: x = {x:.6f}, y = {y:.6f}")
if np.linalg.norm(grad) < tol:
break
return x, y
# Задаем начальные точки
x0 = 1
y0 = 0.5
# Вычисляем минимум функции
x_min, y_min = gradient_descent(x0, y0)
# Выводим результат
print("Минимум функции находится в точке ({}, {})".format(x_min, y_min))
print("Значение функции в минимуме:", function(x_min, y_min))
Результат:
Итерация 0: x = 1.000000, y = 0.500000
Итерация 1: x = 0.125000, y = -0.375000
Итерация 2: x = 0.562500, y = -0.375000
Итерация 3: x = 0.343750, y = -0.375000
Минимум функции находится в точке (0.4166688919067383, -0.375)
Значение функции в минимуме: -14.604166666636957
Построение траектории поиска минимума методами НСА и ГДШ.
Решение задачи оптимизации с помощью математического пакета.
Вывод.
Были решены задачи многомерной оптимизации с использованием аналитическим методом, методом НСА, методом ГДШ и с помощью математического пакета.
Согласно аналитическому методу, xmin = 0.5, ymin = -0.333333, f (xmin, ymin) = 6.417.
Согласно методу НСА, xmin = 0.871, ymin = -0.085, f (xmin, ymin) = 6.739.
Согласно методу ГДШ, xmin = 0.5, ymin = -0.33334, f (xmin, ymin) = 6.417.
Решение задачи оптимизации с использованием средств пакета Mathcad, составило xmin = 1, y(xmin) = 0.5, f (xmin, ymin) = 8.75.

k