Оптимизация прямого поиска для определения минимума функции n переменных методом Нелдера-Мида.

Автор работы: Пользователь скрыл имя, 03 Ноября 2010 в 11:46, Не определен

Описание работы

В пояснительной записке изложены основы прямого поиска для определения минимума функции n переменных. Выбран метод оптимизации поиска Нелдера-Мида. В расчетной части метод Нелдера-Мида реализован программно, в среде Turbo Pascal, представлены блок схема алгоритма оптимизации, листинг программы.

Файлы: 1 файл

САПР 5 мое.doc

— 264.00 Кб (Скачать файл)

                    begin

                       fg:=f[i];

                       g:=i;

                    end;

           for j:=1 to n do

              begin

                 xo[j]:=0;

                

                 for i:=1 to n+1 do

                    if i<>h then xo[j]:=xo[j]+s[i,j];

                 xo[j]:=xo[j]/n;

                 xh[j]:=s[h,j];

                 xg[j]:=s[g,j];

                 xl[j]:=s[l,j];

              end;

          

           for j:=1 to n do x[j]:=xo[j];

           fo:=z(x[1],x[2],x[3],x[4]);

           writeln('Vichisliaem centr tiagest 1120');

          

           for j:=1 to n do

              begin

                 xr[j]:=xo[j]+al*(xo[j]-xh[j]);

                 x[j]:=xr[j];

              end;

           fr:=z(x[1],x[2],x[3],x[4]);

           writeln('Vipolniaetsia otragenie 1220', z(x[1],x[2],x[3],x[4]):3:5);

           if fr<fl then goto 1300;

           if fr>fg then goto 1600;

           goto 1520;

           1300:

              for j:=1 to n do

                 begin

                    xe[j]:=ga*xr[j]+(1-ga)*xo[j];

                    x[j]:=xe[j];

                 end;

           fe:=z(x[1],x[2],x[3],x[4]);

           if fe<fl then goto 1440;

           goto 1520;

           1440:

             for j:=1 to n do s[h,j]:=xe[j];

             f[h]:=fe;

             Writeln('Vipolnite rastiagenie 1480', z(x[1],x[2],x[3],x[4]):3:5);

             goto 2060;

           1520:

           for j:=1 to n do s[h,j]:=xr[j];

           f[h]:=fr;

           writeln('Vipolnenie otragenia 1560');

           goto 2060;

           1600:

           if fr>fh then goto 1700;

           for j:=1 to n do xh[j]:=xr[j];

           f[h]:=fr;

           1700:

           for j:=1 to n do

              begin

                 xc[j]:=be*xh[j]+(1-be)*xo[j];

                 x[j]:=xc[j];

              end;

           fc:=z(x[1], x[2],x[3],x[4]);

           if fc>fh then goto 1920;

           for j:=1 to n do s[h,j]:=xc[j];

           f[h]:=fc;

           writeln('Vipolnenie sjatia 1880', fc:3:5);

           goto 2060;

           1920:

           for i:=1 to n+1 do

              begin

                 for j:=1 to n do

                    begin

                       s[i,j]:=(s[i,j]+xl[j])/2;

                       x[j]:=s[i,j];

                    end;

                 f[i]:=z(x[1], x[2],x[3],x[4]);

                

              end;

           Writeln('Vipolnenie redikcii 2040');

           2060:

           s1:=0;

           s2:=0;

           for i:=1 to n+1 do

              begin

                 s1:=s1+f[i];

                 s2:=s2+f[i]*f[i];

              end;

           sig:=s2-s1*s1/(n+1);

           sig:=sig/(n+1);

           if sig<0.000000001 then goto 2220;

           2200:

           goto 620;

           2220:

           Writeln('Minimum naiden v tochke f=', z(x[1],x[2],x[3],x[4]):3:5);

           for j:=1 to n do Writeln('x',j,' =',xl[j]:3:5);

           Writeln('Kolichestvo vichisleniy ravno ', shag);

           readln;

          

        end.

 

        

    4 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

        1. M.J. Box, D.Davies and W.H.Swann, “Non-linear Optimization Techniques,” ICI Ltd Monograph No 5, Oliver and Boyd, 1969.

        2. R.Hooke and T.A. Jeeves, “Direct search solution of numerical and statistical problem”, 212-219, 1961.

Информация о работе Оптимизация прямого поиска для определения минимума функции n переменных методом Нелдера-Мида.