Индивидуальное задание.
Найдите минимум функции методом прямого поиска, выбрав в Хо(3, -1, 2), а потом Хо(-3, 1, -2). Алгоритм с помощью которого проводилась оптимизация функции изображена на рисунках 8, 9 в виде блок-схем. Решение задачи на ЭВМ. На рисунках 10, 11 изображены результаты оптимизации на ЭВМ при различных начальных условиях
Рисунок 10 – результаты и траектория движения базиса при Хо(3, -1, 2)
Рисунок 11 – результаты при Хо(-3,1, -2) Вывод: В ходе работы при изменении начальных условий было выявлено, что приближение начальных условий к оптимальным значениям количество итераций значительно уменьшается. Листинг подпрограммы procedure Poisk(n:integer; zb:Artype; delta:real; Var z1:Artype; Var w:real; Var l:integer; F:Funop); Var z:Artype; i:integer; y:real;
begin w:=f(zb); z:=zb; z1:=zb; l:=0; for i:=1 to n do begin z[i]:=zb[i]+delta; y:=f(z); if y<w then begin z1[i]:=z[i]; l:=l+1; w:=y end else begin z[i]:=zb[i]-delta; y:=f(z); if y<w then begin z1[i]:=z[i]; l:=l+1; w:=y end
end; end; w:=f(z1); end;
procedure MyClass.OptPoisk(n,m:integer; delta,eps:real; xo:Artype; Var xb:Artype; Var Yopt:real; Var ip:integer; F:Funop); Label 6,7,10; Var x1,x2,x3:Artype; d,wo,y1,y2,y3:real; i,l:integer; a,b:string;
Procedure Outt(x:Artype; y:real); Var i:integer; begin for i:=1 to n do begin str( x[i]:8:3,a); str(y:9:3,b); form1.ListBox2.Items.Add('X'+inttostr(i)+'='+a); with formgraph do begin imGraph.Canvas.Pen.Color:=clRed;
imgraph.Canvas.LineTo(round( mx* x[1]+ Sx), round( -my* x[2]+ Sy));
imGraph1_3.Canvas.Pen.Color:=clBlue;
imgraph1_3.Canvas.LineTo(round( mx* x[1]+ Sx), round( -my* x[3]+ Sy));
imGraph2_3.Canvas.Pen.Color:=clBlack;
imgraph2_3.Canvas.LineTo(round( mx* x[2]+ Sx), round( -my* x[3]+ Sy));
end;
end; str(y:9:1,b); form1.ListBox2.Items.Add('--------------------- F='+b+'-----------'); end; Begin
f:=model; d:=delta; wo:=f(xo); ip:=0; with formGraph do begin imGraph.Canvas.Pen.Width:=2; imGraph1_3.Canvas.Pen.Width:=2; imGraph2_3.Canvas.Pen.Width:=2; for i:=1 to n do begin //Перо в начальную точку
imGraph.Canvas.TextOut(round( mx* xo[1]+ Sx), round( -my* xo[2]+ Sy),inttostr(ip)); imGraph.Canvas.MoveTo(round( mx* xo[1]+ Sx), round( -my* xo[2]+ Sy));
imGraph1_3.Canvas.TextOut(round( mx* xo[1]+ Sx), round( -my* xo[3]+ Sy),inttostr(ip)); imGraph1_3.Canvas.MoveTo(round( mx* xo[1]+ Sx), round( -my* xo[3]+ Sy));
imGraph2_3.Canvas.TextOut(round( mx* xo[2]+ Sx), round( -my* xo[3]+ Sy),inttostr(ip)); imGraph2_3.Canvas.MoveTo(round( mx* xo[2]+ Sx), round( -my* xo[3]+ Sy)); end; end; Outt(xo,wo); xb:=xo;
10: Poisk(n,xb,d,x1,y1,l,F); ip:=ip+1;
if l=0 then goto 6;
7: for i:=1 to n do x2[i]:=2*x1[i]-xb[i]; y2:=f(x2); Poisk(n,x2,d,x3,y3,l,F); ip:=ip+1; if ip>m then begin ShowMessage('Число итераций > '+inttostr(m)+#13+'Минимум не найден!!!'); xb:=x3; Yopt:=f(xb); Exit end; if y3<y1 then begin xb:=x1; wo:=f(xb); Outt(xb,wo); x1:=x3; y1:=y3; goto 7 end else begin xb:=x1; wo:=f(xb); Outt(xb,wo); goto 10 end;
6: if d>=eps then begin d:=d/5; goto 10 end else Yopt:=f(xb); form1.ListBox2.Items.Add('Число итераций - '+InttoStr(ip)); for i:=1 to n do begin str( xb[i]:8:3,a); form1.ListBox2.Items.Add('X'+inttostr(i)+'опт'+'='+a); end; form1.listbox2.Items.Add('Минимум - '+FloatToStr(opt1_5.Yopt));
end; function model(x:Artype): real; begin model:={25*sqr(x[1]+3)+4*sqr(x[3]-4)+10*sqr(x[1]-x[2])+10;} {3*sqr(x[1]-4)+50*sqr(x[2]-3)+16*sqr(x[1]-x[3])+12;} 16*sqr(x[1]+2)+4*sqr(x[2]-3)+5*sqr(x[3]-x[2])-8; end; Задание 6 МЕТОДЫ СЛУЧАЙНОГО ПОИСКА РЕШЕНИЯ МНОГОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ Цель задания: приобрести практические навыки поиска на ЭВМ условного экстремума функций многих переменных методом случайного поиска с пересчетом.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (170)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |