Мегаобучалка Главная | О нас | Обратная связь


Индивидуальное задание.



2019-12-29 170 Обсуждений (0)
Индивидуальное задание. 0.00 из 5.00 0 оценок




Найдите минимум функции  методом прямого поиска, выбрав в Хо(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

МЕТОДЫ СЛУЧАЙНОГО ПОИСКА РЕШЕНИЯ МНОГОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ

Цель задания: приобрести практические навыки поиска на ЭВМ условного экстремума функций многих переменных методом случайного поиска с пересчетом.



2019-12-29 170 Обсуждений (0)
Индивидуальное задание. 0.00 из 5.00 0 оценок









Обсуждение в статье: Индивидуальное задание.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (170)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)