sprawozdanie-MaciejPawnukTomaszImiołek, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labki i inne, MOO, Sprawozdanie nr 2 MOO


Maciej Pawnuk, Tomasz Imiołek.

Minimalizacja na kierunku

Rozwiązanie analityczne

0x01 graphic

Obliczam gradient

G=0x01 graphic
=0x01 graphic

Obliczam punkty podejrzane

0x01 graphic

Rozwiązaniem układu jest:

0x01 graphic

Obliczam Hesjan

H=0x01 graphic

Obliczam wyznacznik hesjana

det(H)= 42.2566

det(H)>0 ---> minimum

punkt 0x01 graphic
to minimum funkcji.

Metoda Gaussa-Saidla

Kod programu:

Zloty podział:

function z = zloty_podzial(x,baza,e)

a = -1000;

b = 1000;

X = [b - (b-a)*(sqrt(5)-1)/2;a+(b-a)*(sqrt(5)-1)/2];

f=[funkcja(x+X(1)*baza);funkcja(x+X(2)*baza)];

while b-a>e*0.001

if f(1)>f(2)

a=X(1);

X(1)=X(2);

X(2)=a+(b-X(1));

else

b=X(2);

X(2)=X(1);

X(1)=a+(b-X(2));

end

f=[funkcja(x+X(1)*baza);funkcja(x+X(2)*baza)];

if f(1)>f(2)

z=X(2);

else

z=X(1);

end

if z - e < a && z + e > a

a = a - 500;

b = b - 500;

end

if z + e > b && z - e < b

b = b + 500;

a = a + 500;

end

end

Gauss:

function gauss(x,e)

baza=[1 0 0;0 1 0;0 0 1];

i=0;

odl=10;

while odl>e

xp=x;

x=x+baza(:,1)*zloty_podzial(x,baza(:,1),e);

x=x+baza(:,2)*zloty_podzial(x,baza(:,2),e);

x=x+baza(:,3)*zloty_podzial(x,baza(:,3),e);

odl=sqrt(((xp(1)-x(1))^2)+((xp(2)-xp(2))^2)+((xp(3)-x(3))^2));

i=i+ 1

f=funkcja(x)

x

odl

end

Funkcja:

function f=funkcja(x)

f= 2*x(1)^2+2*x(2)^2+3*x(3)^2+1.9643*x(1)*x(2)-1.7347*x(1)*x(3)+1.4643*x(2)*x(3)-8*x(1)-8*x(2)-24*x(3)+98;

Tabele Wyników:

Dla X=[1;1;1] (punkt bliski minimum)

dokładność

X

f(X)

iteracje

odległość

1

5.4805

-2.7570

6.5190

4.5477

4

0.8290

0.1

6.9133

-3.9272

6.9785

2.0080

9

0.0727

0.01

6.9898

-3.9939

6.9953

1.9990

13

0.0099

0.001

6.9991

-3.9993

6.9997

1.9989

18

6.0760e-004

0.0001

7.0001

-4.0001

7.0001

1.9989

23

4.1513e-005

dokładność

X

f(X)

iteracje

odległość

1

8.4924

-4.9229

7.8818

4.3091

12

0.7533

0.1

7.1320

-4.1053

7.0799

2.0171

17

0.0934

0.01

7.0128

-4.0063

7.0069

1.9991

21

0.0099

0.001

7.0016

-4.0015

7.0009

1.9989

26

7.0514e-004

0.0001

7.0002

-4.0002

7.0001

1.9989

31

6.7187e-005

Dla X=[100;100;100] (punkt daleki minimum)

Metoda najszybszego spadkuWynikówSaidlahesjana

Kod programu:

Zloty podzial:

function z = zloty_podzial(x,g,e)

a = -100;

b = 100;

z=b;

xn=[b-(b-a)*(sqrt(5)-1)/2; a+(b-a)*(sqrt(5)-1)/2];

f= [funk(x-xn(1)*g);funk(x-xn(2)*g)];

while norm(b-a)>0.01*e

if f(1)>f(2)

a=xn(1);

xn(1)=xn(2);

xn(2)=a+(b-xn(1));

else

b=xn(2);

xn(2)=xn(1);

xn(1)=a+(b-xn(2));

end

f = [funk(x-xn(1)*g);funk(x-xn(2)*g)];

end

if f(1)>f(2)

z = xn(2);

else

z = xn(1);

end

if z - e < a & z + e > a

a = a - 500;

end

if z + e > b & z - e < b

b = b + 500;

end

end

Gradient:

function g=gradient(x)

g(1) = 4*x(1)+1.9643*x(2)-1.7347*x(3)-8;

g(2) = 1.9643*x(1)+4*x(2)+1.4643*x(3)-8;

g(3) = -1.7347*x(1)+1.4643*x(2)+6*x(3)-24;

g=[g(1);g(2);g(3)]

Funkcja:

function f = funkcja(x)

f= 2*x(1)^2+2*x(2)^2+3*x(3)^2+1.9643*x(1)*x(2)-1.7347*x(1)*x(3)+1.4643*x(2)*x(3)-8*x(1)-8*x(2)-24*x(3)+98;

Spadek:

function i=spadek(x,E)

i=0;

stop=0;

while stop==0

i = i+1;

x = x - zloty_podzial(x,gradient(x),E)*gradient(x);

stop = norm(gradient(x))<E ;

end

end

Tabele wyników:

dokładność

X

f(X)

iteracje

1

6.6382

-3.6605

6.8261

2.1452

9

0.1

6.9537

-3.9566

6.9777

2.0013

15

0.01

6.9971

-3.9973

6.9986

1.9989

23

0.001

6.9997

-3.9998

6.9999

1.9989

29

0.0001

7.0001

-4.0001

7.0001

1.9989

35

Dla X=[1;1;1] (punkt bliski minimum)

dokładność

X

f(X)

iteracje

1

7.3968

-4.3914

7.2957

2.1452

10

0.1

7.0310

-4.0306

7.0232

2.0001

16

0.01

7.0057

-4.0056

7.0042

1.9989

20

0.001

7.0005

-4.0005

7.0004

1.9989

26

0.0001

7.0002

-4.0002

7.0001

1.9989

32

Dla X=[100;100;100] (punkt daleki minimum)

Wnioski:

Z naszych wyników można wywnioskować, że metoda Gaussa-Seida jest bardziej efektywna (potrzeba mniej iteracji do osiągnięcia wyniku) niż metoda najszybszego spadku. Jednakże metoda ta jest bardziej zależna od punktu startowego(im dalej tym więcej iteracji) dlatego gdy nie wiemy gdzie mniej więcej będzie znajdować się minimum lepszym wyborem staje się metoda najszybszego spadku.

0x01 graphic

wykres zależności dokładności a ilości iteracji.



Wyszukiwarka

Podobne podstrony:
sprawko moo1, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labki
sprawko nowe, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labki
sprawko powell, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labk
2Sprawozdanie z MOO, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce,
moo1 barteksprawko, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce,
2analityczne, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labki
sprawko-6, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Laborki, lab6, got
sciaga kolos, Automatyka i Robotyka, Semestr III, Metody numeryczne
Mechanika - opracowanie, Automatyka i Robotyka, Semestr III, Mechanika, Gotowce, Mechanika, Mechanik
BD Lesiu, Automatyka i Robotyka, Semestr III, Bazy Danych, Gotowce
metody numeryczne wartosc funkcji, Automatyka i Robotyka, Semestr IV, Metody Numeryczne, Lab, lab2
GR D, Automatyka i Robotyka, Semestr III, Bazy danych
sciaga a, Automatyka i Robotyka, Semestr III, Bazy danych
DAPTA spraweczko, Automatyka i Robotyka, Semestr III, Elektrotechnika i Elektromechanika, Gotowce, E
Zestaw C++-zaliczenie wcze, Automatyka i Robotyka, Semestr III, Języki programowania

więcej podobnych podstron