Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
II Часть : безусловная оптимизация функции
Постановка задачи Рассматривается задача оптимизации целевой скалярной функции по аргументам (параметрам) , на вариации которых никаких ограничений не накладывается.
Моему варианту № 5 соответствуют следующие данные:
f(x1, x2) = 2 (х1 – 5)2 + (х2 – 8)2
Модифицированный метод наилучшей пробы Суть метода Этот метод в отличие от предыдущего позволяет выбирать наилучшее направление изменения функции (при этом оно не обязательно совпадает с антиградиентом функции). Алгоритм метода Из некоторой промежуточной точки поиска минимума целевой функции x ( k ) осуществляется m-случайных независимых пробных шагов: (5.52) Также, как и ранее (см. предыдущий метод) x (к j )- единичные случайные независимые векторы с равномерной функцией распределения вероятности внутри шара единичного радиуса (в частном случае – круга). Наилучшим направлением считается направление, в котором функция достигает минимального значения. f(x(k)+hпрx(kj*)) = min f(x(k)+hпрx(kj)), (5.53)
В этом направлении - x(kj*) совершается рабочий шаг движения: , (5.54) где . (5.55) Из формул (5.52)-(5.55) следует, что эффективность метода определяется следующими параметрами метода, задаваемыми оператором: h пр, h раб, m. Они, как правило, входят в состав формальных параметров компьютерной подпрограммы, реализующей данный метод. Замечание Можно показать, что в пределе при m стремящемся к ¥ , направление x ( kj *) стремится к антиградиенту функции, то есть: (5.56) Преимущества метода - Метод позволяет при количестве проб m < n получить направление x ( kj *) близкое к антиградиенту функции. - Метод просто программируется. - Позволяет определить глобальный экстремум (в принципе). Недостатки метода - Метод не исключает выбор «наилучшего» из m-направлений, в котором функция f(x) будет возрастать! - Накопленная при m-проб информация о поведении целевой функции используется не эффективно.
Модификация метода наилучшей случайной пробы В ответ на 1-ый недостаток рассмотренного метода возникла идея дополнить процедуру (5.53) операцией, присущей методу простой случайной оптимизации. (5.57) С помощью такого условного оператора будет исключена возможность роста функции при неудачных случайных пробах.
Блок-схема модифицированного метода наилучшей пробы 1.
Метод простой градиентной минимизации Сущность метода Метод характеризуется относительно малым постоянным шагом = h, который задаётся как параметр метода. Идея метода видна из простого соотношения: (5.75) где – i -я составляющая вектора - градиента функции в точке x ( k ). При заданном малом шаге h алгоритм метода определяется формулой (5.74). Замечание Хотя шаг поиска h должен быть малым, но не меньше порога чувствительности функции: | f(x(k+1)) - f(x(k)) | > d где d - максимальная вычислительная погрешность ПЭВМ. Окончание численной процедуры поиска минимума функции может определяться выполнением следующего условия. где - евклидова норма вектора, - малая положительная величина, задаваемая как параметр. Графически метод простой градиентной минимизации в двумерном пространстве иллюстрируется на рис. 5.18. Рис. 5.18 Недостатки · Основным недостатком метода является его низкая эффективность с точки зрения количества шагов поиска, а также с точки зрения затрат машинного времени. · Метод склонен к зацикливанию в местах резкого изменения направления «оврага» целевой функции. Преимущества · Метод прост при программной реализации. Метод надежен при использовании его в условиях сложной поверхности целевой функции. Блок-схема метода простой градиентной минимизации:
Примеры работы программы:
В данном примере введена начальная точка (-10; -15) и точность 0, 01. Программа приходит к точке (5; 3), что является минимумом целевой функции. Метод простой градиентной оптимизации сходится за 399 итераций, а модифицированный метод наилучшей пробы за 845 итераций.
Выводы В первой части курсовой работы я находила безусловный минимум целевой функции с помощью метода простой градиентной оптимизации и модифицированного метода наилучшей пробы. Метод простой градиентной оптимизации сходится за 399 итераций, а модифицированный метод наилучшей пробы за 845 итераций. Листинг метода случайного поиска с направляющей сферой: procedure TMetNaiProb.Executing(var X: TVectorMass; Eps: real; var n: integer); var h, hrab, A1, A2: real; g1: array[1..100] of real; g2: array[1..100] of real; g3: array[1..100] of real; m, i: integer; begin n: =2; m: =20; h: =0.1; hrab: =0.3; A1: =0; A2: =F(X[n-1, 1], X[n-1, 2]); while (Abs(A2-A1)> Eps) Do begin A2: =A1; for i: =1 to m do begin g1[i]: =Random(100)-50; g2[i]: =Random(100)-50; g3[i]: =Power((g1[i]*g1[i])+(g2[i]*g2[i]), 0.5); if g3[i]=0 then g3[i]: =1; g1[i]: =g1[i]/g3[i]; g2[i]: =g2[i]/g3[i]; end; for i: =1 to m do begin A1: =F(X[n-1, 1]+g1[i]*h, X[n-1, 2]+g2[i]*h); if A1< A2 then begin X[n, 1]: =X[n-1, 1]+g1[i]*hrab; X[n, 2]: =X[n-1, 2]+g2[i]*hrab; n: =n+1; end; end;
end; n: =n-2;
end;
function TMetNaiProb.F(X1, X2: real): real; begin F: = Power(X1 - 5, 2) + 2 * Power(X2 - 3, 2); end; Листинг метода простой градиентной минимизации: procedure TOptGradMeth.GetSolution(var X: TVectorMass; Eps: real; var n: integer); var gradF: TVector; h, step: real; begin n: = 1; h: = 0.1;
gradF[1]: = 100; gradF[2]: = 100;
while ((Abs(gradF[1]) > Eps) or (Abs(gradF[2]) > Eps)) do begin gradF[1]: = (F(X[n, 1] + h, X[n, 2]) - F(X[n, 1], X[n, 2])) / h; gradF[2]: = (F(X[n, 1], X[n, 2] + h) - F(X[n, 1], X[n, 2])) / h;
n: = n + 1; X[n, 1]: = X[n - 1, 1] - h * gradF[1]; X[n, 2]: = X[n - 1, 2] - h * gradF[2]; end; end;
function TOptGradMeth.F(X1, X2: real): real; begin F: = Power(X1 - 5, 2) + 2 * Power(X2 - 3, 2); end; |
Последнее изменение этой страницы: 2019-05-18; Просмотров: 272; Нарушение авторского права страницы