Найти минимум функции n переменных методом Гольдфарба

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    101,16 Кб
  • Опубликовано:
    2012-06-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Найти минимум функции n переменных методом Гольдфарба










ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

на тему

«Найти минимум функции n переменных методом Гольдфарба»


Введение

С точки зрения математики задачей оптимизации называется задача нахождения экстремума вещественной функции в некоторой области. Чем больше информации мы знаем, тем более эффективно и быстро можно достичь минимума, если правильно воспользоваться информацией. Методы оптимизации классифицируют в соответствии с задачами оптимизации:

)        Методы оптимизации классифицируют в соответствии с задачами оптимизации:

Локальные методы: сходятся к какому-нибудь локальному экстремуму целевой функции. В случае унимодальной целевой функции, этот экстремум единственен, и будет глобальным максимумом / минимумом.

) Глобальные методы: имеют дело с многоэкстремальными целевыми функциями. При глобальном поиске основной задачей является выявление тенденций глобального поведения целевой функции.

По критерию размерности допустимого множества, методы оптимизации делят на методы одномерной и многомерной оптимизации.

3)      Задачи оптимизации, в которых целевая функция F() и ограничение , i = 1, …, m является линейными функциями, разрешаются так называемыми методами линейного программирования.

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

Описание алгоритмов решения поставленной задачи

В рассмотренном ниже классе методов с переменной метрикой реализована идея адаптивного управления.

Информация о предыдущих итерациях накапливается в специальной матрице Н, которая по мере накопления информации постепенно превращается в обратную матрицу Гессе


При этом матрица вторых производных на каждом шаге не пересчитывается.

Метод Гольдфарба


Он более устойчив к ошибкам вычислений, чем ДФП


Рассмотрим решение задачи при помощи данной программы.

Чтобы выполнить нашу программу мы должны поступить следующим образом:

.        Мы должны ввести значения функции, например (x[0]+2x[1])2в Unit1. Это будет выглядеть так, как представлено на рисунке 1.

Рис. 1.

.        И для того чтобы получить ответ, мы должны нажать на кнопку «Ввести». В результате появится график, это и будет наш ответ (Рис. 2.)

Рис. 2.

Ответ: Минимум x=(0,0057 -0,0029)(x)=0,0000

Градиент (0,0000 0,0000)

Заключение

Ø  Среди методов нулевого порядка наибольшей эффективностью обладают метод Розенброка и метод НелдераМида

Ø  Если же функция гладкая, т.е. имеет непрерывные производные, то наиболее эффективным себя зарекомендовали метод Гольдфарба и метод ДФП (они в 2-6 раз эффективнее по быстродействию чем метод Розенброка).

Ø  На самом деле многое зависит от вида конкретной оптимизируемой функции. Особенно если количество оптимизируемых переменных больше 4-5 нужно иметь в запасе несколько разнообразных методов, а процесс оптимизации строить на основе интерактивных программ.

Литература

1.      Колосов С.В. Программирование в средеDelphi: Учеб.пособие. - Мн.: БГУИР

.        Калиткин Н.Н. Численные Методы. - М.:Наука, 1978. 512 с.

.        Фленов М.Е. Библия Delphi. - 2-eизд., перераб. и доп. - СПб.:БХВ-Петербург, 2008.-800 с.

.        Мощные приборы СВЧ с дискретным взаимодействием (теория и оптимизация)

Текст программы

{Private declarations}

{Public declarations};:TForm;, leftmax, bottommin, bottommax:integer;:integer;

{$R *.dfm}(x:TMas1):real;:=sqr (x[0]+2*x[1]);;TForm1. Button1Click (Sender: TObject);, j:integer;, g:TMas1;:TMas2;:single;:TUnit2;. Lines. Clear;Chart1 do begin. Automatic:=false;. Minimum:=-5;. Maximum:=5;. Automatic:=false;. Minimum:=-5;

BottomAxis. Maximum:=5;:=True;[0].Clear;;:=0.00001;(x, 2); (g, 2);(myHmat, 2,2);

// НАЧАЛЬНЫЕ ПЕРЕМЕННЫЕ[0]:=3;[1]:=6;:=TUnit2. Create (x, 2, eps, func, Chart1); // (массив с перменными, количество переменных, точность, функция, TChart график).minimizationGoldfarb; // минимизация:=ss.x1;

g:=ss.g1;:=ss. Hmat;. Lines. Add ('минимумпри x=('+floattostrf (x[0], fffixed, 4,4)+' '+floattostrf (x[1], fffixed, 4,4)+')');. Lines. Add ('f(x)='+floattostrf (func(x), fffixed, 4,4));. Lines. Add ('градиент ('+floattostrf (g[0], fffixed, 4,4)+' '+floattostrf (g[1], fffixed, 4,4)+')');

end;.

unit Unit2;, Chart;= array of array of real;= array of real;=function (x:TMas1):real;= class(TObject), v, u, g1, g0, Hu, x0, x1: TMas1;, num, i:integer;, Hmat, vuTH, HuvT, vvT:TMas2;, eps, uTHu, uTv, uuT, h:real;:fun;:TChart;Create (x:TMas1; enum:integer; meps:single; mfunc:fun; mchart:TChart);F1 (x:real):real;Grad (x:TMas1):TMas1;(hm: TMas2): TMas2;(hm:TMas2):TMas2;mp2 (x0: real; h, e: real): real;;;TUnit2.F1 (x:real):real;:TMas1;:integer;(tmp, num);i:=0 to num-1 do[i]:=x0 [i]+x*dk[i];:=func(tmp);;TUnit2. MakeOneMatrix (hm: TMas2): TMas2;, j:integer;i:=0 to num-1 doj:=0 to num-1 doi=j then[i] [j]:=1[i] [j]:=0;:=hm;;TUnit2. Grad (x:TMas1):TMas1;i:integer;, grad:TMas1;(tmp, num);(grad, num);i:=0 to num-1 do[i]:=x[i];i:=0 to num-1 do begin[i]:=tmp[i]+h;[i]:=func(tmp);[i]:=tmp[i] - 2*h;[i]:=(grad[i] - func(tmp))/(2*h);;:=grad;;TUnit2.mp2 (x0: real; h, e: real): real;: boolean;, x2, x3, y1, y2, y3, z1, z2, p, q, zm: real;

:=x0-h;:=x0;:=x0+h;:=F1 (x1);:=F1 (x2);:=F1 (x3);:=False;(y1 - (2*y2)+y3)>0 then=False do begin:=x1-x3;:=x2-x3;:=((((y1-y3)*z2) - ((y2-y3)*z1)))/((z1*z2*(z1-z2)));:=(((y1-y3)*sqr(z2)) - ((y2-y3)*sqr(z1)))/(z1*z2*(z2-z1));:=-q/(2*p);:=x2;:=x3;:=y2;:=y3;:=x3+zm;:=F1 (x3);abs(zm)<e then:=x3+zm;:=True;;;;;TUnit2. Create;i:integer;:=meps;:=mfunc;:=enum;:=mchart;

(g1, num);(g0, num);(dk, num);(v, num);(u, num);(x1, num);(x0, num);(Hu, num);(Amat, num, num);(Hmat, num, num);(vuTH, num, num);(HuvT, num, num);(vvT, num, num);:=0.0000000000001;i:=0 to num-1 do[i]:=x[i];;TUnit2.minimizationGoldfarb;, j:integer;, cond2:real;:=Grad(x0);i:=0 to num-1 do[i]:=-g0 [i];:=MakeOneMatrix(Hmat);:=NullMatrix(Amat);. SeriesList[0].AddXY (x0 [0], x0 [1]);:=0;:=0;(n);:=mp2 (1,0. 5,0.0000001);i:=0 to num-1 do[i]:=x0 [i]+zm*dk[i];. SeriesList[0].AddXY (x1 [0], x1 [1]);i:=0 to num-1 do[i]:=zm*dk[i];i:=0 to num-1 do[i]:=x1 [i];:=Grad(x1);i:=0 to num-1 do[i]:=g1 [i] - g0 [i];i:=0 to num-1 do[i]:=g1 [i];

//uTv=vTu:=0;i:=0 to num-1 do:=uTv+v[i]*u[i];[0] [0]:=v[0]*u[0]*Hmat[0] [0]+v[0]*u[1]*Hmat[1] [0];[0] [1]:=v[0]*u[0]*Hmat[0] [1]+v[0]*u[1]*Hmat[1] [1];[1] [0]:=v[1]*u[0]*Hmat[0] [0]+v[1]*u[1]*Hmat[1] [0];[1] [1]:=v[1]*u[0]*Hmat[0] [1]+v[1]*u[1]*Hmat[1] [1];i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=0;i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=-vuTH[i] [j];

// vvTi:=0 to num-1 doj:=0 to num-1 do[i] [j]:=v[i]*v[j];

i:=0 to num-1 doj:=0 to num-1 do[i]:=Hu[i]+Hmat[i] [j]*u[j];

//HuvTi:=0 to num-1 doj:=0 to num-1 do[i] [j]:=Hu[i]*v[j]; uTHu:=(Hmat[0] [0]*u[0]+Hmat[0] [1]*u[1])*u[0]+(Hmat[1] [0]*u[0]+Hmat[1] [1]*u[1])*u[1];:=1+uTHu/uTv;i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=vvT[i] [j]*uTHu;i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=vuTH[i] [j]+HuvT[i] [j]+vvT[i] [j];i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=Amat[i] [j]/uTv;

i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=Hmat[i] [j]+Amat[i] [j];i:=0 to num-1 do[i]:=0;i:=0 to num-1 doj:=0 to num-1 do[i]:=dk[i]+Hmat[i] [j]*g1 [j];i:=0 to num-1 do[i]:=-dk[i];:=0;:=0;i:=0 to num-1 do:=cond1+sqr (v[i]);i:=0 to num-1 do:=cond2+sqr (g1 [i]);:=abs (sqrt(cond1));:=abs (sqrt(cond2));(cond1+cond2)<eps;;TUnit2. NullMatrix (hm: TMas2): TMas2;, j:integer;i:=0 to num-1 doj:=0 to num-1 do[i] [j]:=0;:=hm;;.

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

оптимизация экстремум программа алгоритм

                           ДА           ЦИКЛ

                                        i=0 to  num-1

                                     НЕТ

         Нет перехода

Похожие работы на - Найти минимум функции n переменных методом Гольдфарба

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!