Главная страница

Курсовая работа СМО Гангур. Курсовая работа методы решения задач оптимизации по дисциплине Методы оптимизации Направление подготовки


Скачать 490.03 Kb.
НазваниеКурсовая работа методы решения задач оптимизации по дисциплине Методы оптимизации Направление подготовки
Дата09.06.2022
Размер490.03 Kb.
Формат файлаdocx
Имя файлаКурсовая работа СМО Гангур.docx
ТипКурсовая
#582321
страница7 из 9
1   2   3   4   5   6   7   8   9

Решение.


Задана следующая модель регрессии:



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

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



где x – искомая точка; – количество наблюдений. Теперь оценку параметров можно искать как точку минимума заданной функции , т. е. задача сводится к минимизации суммы квадратов отклонений предполагаемой прямой и исходных точек. Поскольку задача приняла вид , то теперь можно приступить к ее решению методом простого градиентного спуска.

Компоненты градиент функции :






Коэффициент детерминации.


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







где – сумма квадратов отклонений исходных значений и искомой функции ; – общая сумма квадратов между исходными данными и их средним значением ;





Код Matlab.


clc; clear all

format compact
X = dlmread('table.txt');

b = 3; a1 = -2; a2 = 1; t_k = 0.0001; eps = 0.00001; h = 0; M = 5000;

figure

plot(0, 0);

hold on;
while sqrt(dF_b(b, a1, a2, X).^2+dF_a1(b, a1, a2, X).^2+dF_a2(b, a1, a2, X).^2)>eps

if h < M

f_k = F(b, a1, a2, X);

b_new = b - t_k*dF_b(b, a1, a2, X);

a1_new = a1 - t_k*dF_a1(b, a1, a2, X);

a2_new = a2 - t_k*dF_a2(b, a1, a2, X);

f_KK=F(b_new, a1_new, a2_new, X);

plot(h, f_KK, '.r', 'markersize', 5);

if f_KK > f_k

t_k = t_k/2;

end

if (sqrt((b_new - b)^2 + (a1_new - a1)^2 + (a2_new - a2)^2) < eps & abs(f_KK - f_k) < eps)

break;

end

else

break;

end

b = b_new; a1 = a1_new; a2 = a2_new;

h = h + 1;

end

xlim([0 h]);ylim([0 5]);

fprintf('Получены следующие результаты: \n b=%f \n a1=%f \n a2=%f', b, a1, a2);

fprintf('\n \n Количество итераций: %d \n', h); R = f_KK;

fprintf('Сумма квадратов отклонений равна: %f \n', R);R_d = det(X, f_KK);

fprintf('Коэфициент детерминации равен: %f \n', R_d);

function y = F(b, a1, a2, X)

j = size(X,1);

S = 0;

for i = 1:j

S = S + (X(i,3) - b - a1/X(i,1) - a2/X(i,2)).^2;

end

y = S;

end
function y = dF_b(b, a1, a2, X)

j = size(X,1); S = 0;

for i=1:j

S = S - 2*(X(i,3) - b - a1/X(i,1) - a2/X(i,2));

end

y = S;

end
function y = dF_a1(b, a1, a2, X)

j = size(X,1); S = 0;

for i = 1:j

S = S + 2*(-1/X(i,1))*(X(i,3) - b - a1/X(i,1) - a2/X(i,2));

end

y = S;

end
function y = dF_a2(b, a1, a2, X)

j = size(X,1); S = 0;

for i = 1:j

S = S + 2*(-1/X(i,2))*(X(i,3) - b - a1/X(i,1) - a2/X(i,2));

end

y = S;

end
function y = det(X, SS_res)

j = size(X,1); SS = 0; y_sr = 0;

for i = 1:j

y_sr = y_sr + X(i, 3);

end

y_sr = y_sr/j;

for i = 1:j

SS = SS + (X(i,3) - y_sr).^2;

end

y = 1 - SS_res/SS;

end

1   2   3   4   5   6   7   8   9


написать администратору сайта