close

Вход

Забыли?

вход по аккаунту

?

Многомерная оптимизация. Отчет. Вика

код для вставкиСкачать
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ
КАФЕДРА ИНФОРМАТИКИ
ОТЧЕТ ПО ТЕМЕ
МЕТОДЫ МНОГОМЕРНОЙ ОПТИМИЗАЦИИ
Подготовила:
Уткина Виктория Игоревна
студентка второго курса
группы БИК1201
вариант задания 22
Москва, 2013г.
1. Вариант задания:
Функция f (x,y) = 6 x2 + 3 y2 + 10
Метод оптимизации для ручного расчета: НСА
Метод оптимизации для расчета на ПК: ГДШ
2. Проверка существования минимума функции:
Известно, что всякий глобальный минимум выпуклой функции является одновременно и локальным. Проверим, что функция f (x,y) = 6 x2 + 3 y2 + 10 является выпуклой на множестве R Матрица Гессе для функции: f (x,y) = 6 x2 + 3 y2 + 10:
Угловые миноры:
∆_1=(∂^2 f)/(∂x^2 )=12>0,〖 ∆〗_2=(∂^2 f)/(∂x^2 )*(∂^2 f)/(∂y^2 )=72>0
Таким образом, функция f(x,y) - выпуклая на множестве R.
3. Решение задачи многомерной оптимизации аналитическим методом.
Необходимые условия существования точки экстремума:
∂f/∂x=0, ∂f/∂y=0 →12x=0; 6y=0
откуда
x^*=0, 〖 y〗^*=0 →f^* (x,y)=10
4. Ручной расчет многомерной оптимизации аналитическим методом наискорейшего спуска.
Выберем начальные точки x_0=1, y_0=0.5 и проведем первую итерацию:
Вторая итерация:
Третья итерация
Результаты вычислений:
kxyλg1g2f(x,y)1120.11111212282-0.3330.6670.1111-441230.1110.2220.11111.3331.33310.2224-0.0370.0740.1111-0.4440.44410.025Значит, xmin = -0.037, ymin = 0.074, f = 10.025
Погрешности после 3-х итераций:
E_1=|f(x_3,y_3 )-f^* |=|10.025-10|
E_1x=|∂f(x_3,y_3 )/∂x|=0.444 E_2x=|∂f(x_3,y_3 )/∂y|=0.444
∆x=|x^*-x_3 |=|0+0.037|=0.037
∆y=|y^*-y_3 |=|0-0.074|=0.074
5. Решение задачи многомерной оптимизации на ПК методом градиентного спуска с дроблением шага
Листинг модуля:
Option Strict On
Option Explicit On
Imports System.Math
Module Module1
Function f(ByVal x As Single, ByVal y As Single) As Single
f = CSng(6 * x ^ 2 + 3 * y ^ 2 + 10)
End Function
Function g1(ByVal x As Single) As Single ' производная функции по x
g1 = 12 * x
End Function
Function g2(ByVal y As Single) As Single ' производная функции по y
g2 = 6 * y
End Function
Function DP(ByVal x As Single, ByVal y As Single, ByVal h0 As Single) As Single
Dim h As Single = h0
Dim k As Integer = 0
Dim S, P, T As Single
S = f(x, y) 'Значение целевой функции в текущей точке
Do
P = f(CSng(x - h * g1(x) / 2 ^ k), CSng(y - h * g2(y) / 2 ^ k)) ' Значение целевой функции в следующей точке
T = CSng((g1(x) ^ 2 + g2(y) ^ 2) * h / 2 ^ (k + 1)) ' Изменение значения целевой функции
k = k + 1
Loop Until P <= S - T
DP = CSng(h / 2 ^ k) ' Текущее значение шага
End Function
Sub resh(ByRef x As Single, ByRef y As Single, ByVal Eps As Single, ByVal h0 As Single, ByRef otvet As String, ByRef fxy As Single)
Dim k As Integer = 0
Dim h As Single
Do Until Abs(g1(x)) < Eps And Abs(g2(y)) < Eps
k = k + 1
h = DP(x, y, h0)
x = x - h * g1(x) : y = y - h * g2(y)
fxy = f(x, y)
otvet = otvet + Format(k, "00") + Space(5) + Format(x, "0.000") + Space(5) + Format(y, "0.000") + Space(5) + Format(g1(x), "00.000") + Space(5) + Format(g2(y), "00.000") + Space(5) + Format(fxy, "00.000") + vbNewLine
Loop
End Sub
End Module
Листинг формы:
Option Strict On
Option Explicit On
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x, y, Eps, h0, fxy As Single
Dim otvet As String = ""
x = CSng(TextBox1.Text) : y = CSng(TextBox2.Text)
h0 = CSng(TextBox3.Text) : Eps = CSng(TextBox4.Text)
resh(x, y, Eps, h0, otvet, fxy)
TextBox5.Text = otvet
TextBox6.Text = CStr(x) : TextBox7.Text = CStr(y) : TextBox8.Text = CStr(fxy)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
Результаты вычислений:
kƐxyg1g2λf(x,y)10.10.6251.6257.59.750.03120.26620.3911.324.6887.9220.03116.14530.0980.8251.1724.9510.06312.140.0240.5160.2933.0940.06310.80250.0060.3220.0731.9340.06310.31260.0020.2010.0181.2090.06310.122700.1260.0050.7550.06310.048800.0790.0010.4720.06310.019900.04900.2950.06310.0071000.03100.1840.06310.0031100.01900.1150.06310.001123.72529E-070.0120081700.0720.06310.00043130.059.313226E-080.00750510700.0450.06310.00017140.0100.00500.0280.063101500.00300.0180.063101600.00200.0110.063101700.00100.0070.06310180.000100.00100.0040.06310190000.0030.0631020-1.136868E-110.000111834800.0010.12510
Скриншот программы:
Документ
Категория
Без категории
Просмотров
61
Размер файла
119 Кб
Теги
оптимизация, отчет, вика, многомерная
1/--страниц
Пожаловаться на содержимое документа