Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / Лаб 6 Многомерная оптимизация

.docx
Скачиваний:
0
Добавлен:
20.12.2023
Размер:
461.12 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Факультет Радиотехнологий связи

Учебная дисциплина «Прикладные методы оптимизации в радиотехнических системах»

ОТЧЁТ

Тема: «Методы многомерной феминизации»

Выполнили:

Приняла:

Санкт-Петербург

2023

Цель: ознакомление с методами поиска минимума функции двух переменных в оптимизационных задачах без ограничений (метод Гаусса-Зейделя, метод наискорейшего спуска, методы сопряженных направлений).

Блок-схемы алгоритмов:

Метод Гаусса-Зейделя (пошагового спуска)

Метод сопряженных направлений (Пауэлла)

Метод наискорейшего спуска (Коши)

Льное

Задание №2: Коды в MATLAB и графики

  1. Метод Гаусса-Зейделя:

script

clear; clc;

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

A= 30;

a = 2;

b = 3;

g = 15; % постоянная шага

e = 0.01; % точность

% Начальная точка

x0 = 9;

y0 = 9;

k = 1; % Счетчик шагов

kmax = 100; % Предельное число шагов,

% задается для предотвращения зацикливания

% Массивы для хранения промежуточных координат

x1t = [x0];

x2t = [y0];

i = 2;

while k < kmax

% Спуск по первой координате

% градиент по х

gr1 = -(a-x0)*exp(a-x0)-(b-y0)*exp(b-x0)-exp(a-x0);

x0 = x0 + g*gr1;

% Сохранение координат

x1t(i) = x0;

x2t(i) = y0;

i = i + 1;

% Спуск по второй координате

% градиент по у

gr2 = -exp(b-x0);

y0 = y0 + g*gr2;

% Сохранение координат

x1t(i) = x0;

x2t(i) = y0;

i = i + 1;

% Проверка условия останова

if sqrt(gr1^2 + gr2^2) <= e

break; % Выход из цикла в случае выполнения условия

end

k = k + 1;

end

% Построение графика

x = 7:0.1:12;

y = 7:0.1:12;

[X, Y] = meshgrid(x, y);

Z = A-(X-a)*exp(-(X-a))-(Y-b)*exp(-(X-b));

[C, h] = contour(X, Y, Z);

clabel(C, h);

% Отображение меток на линиях уровня

hold on;

plot(x1t, x2t, '-');

% Вывод начальной точки на график

text(x1t(1) + 0.2, x2t(1) + 0.5, 'M0');

% Вывод решения на график

text(x0 + 2, y0, ...

strvcat(['x = ' (num2str(x0))], ...

['y = ' (num2str(y0))], ...

['k = ' (num2str(k))]));

Точность и число итераций при различных начальных точках:

(9;9)

(7,5;7,5)

(8;8)

  1. Метод наискорейшего спуска

clc;

clear;

A= 30;

a = 2;

b = 3;

e=0.01;

d = 15;

x1=9;

x2=9;

k=1;

kmax=50;

x1trace = [x1];

x2trace = [x2];

i = 2;

while k < kmax

gr1 = -(a-x1)*exp(a-x1)-(b-x2)*exp(b-x1)-exp(a-x1);

gr2 = -exp(b-x1);

x1 = x1 + d*gr1;

x2 = x2 + d*gr2;

x1trace(i) = x1;

x2trace(i) = x2;

i = i + 1;

if sqrt(gr1^2 + gr2^2) <= e

break;

end

k = k + 1;

end

x = 7.5:0.01:11;

y = 7.5:0.01:11;

[X, Y] = meshgrid(x, y);

Z = A-(X-a).*exp(-(X-a))-(Y-b).*exp(-(X-b));

[C, h] = contour(X, Y, Z);

clabel(C, h)

hold on;

plot(x1trace, x2trace,'-+');

text(x1trace(1) + 0, x2trace(1) + 0.1, 'M0');

text(x1 + 0.5, x2, ...

strvcat(['x1 = ' (num2str(x1))], ...

['x2 = ' (num2str(x2))], ...

['k = ' (num2str(k))]));

(9;9):

(7,5;7,5)

(8;8)

Вывод:

Были изучены методы Гаусса-Зейделя и наискорейшего спуска (Коши).

Были построены их блок-схемы, разработаны коды для нахождения минимума функций. На практике было установлено, что если выбрать изначальную точку близко к точке минимума, то оба метода будут иметь одинаковое число итераций.