Sunteți pe pagina 1din 4

Ministerul Educaiei i Tineretului al RM

Universitatea Tehnic a Moldovei

Facultatea CIM Catedra ATI

Lucrarea de laborator Nr.1


la disciplina Cercetari Operationale Varianta 11 Tema: Optimizarea

neconditionata

A efectuat A &erificat

stud. !r. TI"#$% Tihon Vitali lect. superior Catruc Mariana

C'iin(u %#1#
Obiectivele lucrrii: Studierea metodelor de optimizare neliniar far restricii. Definirea i utilizarea unor proceduri pentru minimizarea funciilor cu ajutorul metodei gradientului i a metodelor de direcie conjugate cu eroare mai mic E !.!!!!" #naliza rezultatelor o$inute% inclusiv sta$ilirea tipului minimului& local sau glo$al. S se compare rezultatele% lu'nd in consideraie numrul de iteraii% evalurile pentru funcie i gradient. Sarcina lucrrii: Sa se determine minimul glo$al al functiei & f()%*+ a),-,)*-$*,.,)./* a / 0 $ ". f()%*+ /),-,)*-*,.,)./*. Pasii algoritmilor: 1)Metoda Gradientului cu fractionarea pasului: Pasul1: Se alege 1%2 3(!%"+%4 3(!%". Se recomanda 1 "% 2 3(!.!5%!.5+% 4 !.50 Pasul2:Se calculeaza 6(1+ 7(8+. 19f()(8++ si f(6(1++. Pasul3:Se verifica inegalitatea f(6(1 ++.f(7(8++: . 1 2;9f()(8++;,. Daca inegalitatea este adevarata atunci 18 1%in caz contrar 1 4< 1 si se trece la pasul ,. 2)Metoda Hestenes-Stiefel: Pasul1:Se alege apro)imatia initiala 7(!+ 3 = ar$itrara si se calculeaza 9f(7(!++. >erificam%daca 9f(7(!++ ! atunci ST?@% solutia 7< 7(!+0in caz contrar se va alege d(!+ . 9f(7(!++%8 !. Pasul2:Se determina 1(8+ .( 9f(7(8++%d(8++A(#d(8+%d(8++. Pasul3:Se determina )(8-"+ )(8+- 18<d(8+ si se calculeaza 9f(7(8-"++.Daca 9f(7(8-"++ ! atunci ST?@% )< )(8-"+% in caz contrar se trece la pasul urmator. Pasul4:Se calculeaza d(8-"+ . 9f(7(8-"++-( ;9f(7(8-"++ ;,+A( ;9f()(8++;,+<d(8+% 8 8-"% si se trece la @asul,.

Rezultatele:

Analiza rezultatelor: #vem la dispozitie , metode cu ajutorul carora determinam minimul glo$al al functiei. #m$ele o$tin apro)imativ acelasi rezultat intr.un timp foarte mic in cazul functiei pe care o avem. Bnsa daca comparam numarul de iteratii%o$servam ca metoda gradientului cu fractionarea pasului converge lent. #ceasta inseamna ca pentru functii mari aceasta metoda nu va mai fi utila deoarece va avea nevoie de mai mult timp pentru a gasi solutia. Bn asa fel algoritmul Cestenes.Stiefel va fi mai rapid.

Concluzie: Efectuind aceasta lucrare de la$orator am insusit , metode de cautare a minimului functiei% si anume Metoda Dradientului cu fractionarea pasului si metoda Cestenes.Stiefel.#m facut cunostinta cu pasii necesari spre a gasi solutia si am o$tinut rezultatele. Bnsa cind comparam ele putin difera.Se poate de spus ca unul este mai reusit decit altul%insa tre$uie sa tinem cont si de functia pe care o avem. Deci am$ii algoritmi au atit plusuri cit si minusuri unul fata de altul. Listingul programului:
Einclude :iostream.hF Einclude :conio.hF Einclude :math.hF class ?@TBMB6#=E G pu$lic& float H(float )% float *+0 void BI@UT(void+0 void D=#DBEIT(void+0 void MET?D#JD=#DBEITUKUB(void+0 void #KD?=BTMUKJCESTEIESJSTBEHEK(void+0 private& float a%$%#KH#%D#M#%DEKT#%E@S%7L,M%6L,M%DL,M0 N0 float ?@TBMB6#=E&&H(float )% float *+ G return a<)<)-,<)<*-$<*<*.,<)./<*0 N void ?@TBMB6#=E&&BI@UT(void+ G cout::OBntrodu parametrul a& O0 cinFFa0 cout::OBntrodu parametrul $& O0 cinFF$0 N void ?@TBMB6#=E&&D=#DBEIT(void+ G DL!M ,<a<7L!M-,<7L"M.,0 DL"M ,<7L!M-,<$<7L"M./0 N void ?@TBMB6#=E&&MET?D#JD=#DBEITUKUB(void+ G int I !0 float #80 #KH# !."0 D#M# !."0 DEKT# !."0

7L!M "0 7L"M "0 E@S !.!!!!"0 D=#DBEIT(+0 Phile(sQrt(DL!M<DL!M-DL"M<DL"M+F E@S+ G --I0 #KH# !."0 6L!M 7L!M.#KH#<DL!M0 6L"M 7L"M.#KH#<DL"M0 Phile((H(6L!M%6L"M+.H(7L!M%7L"M++F.DEKT#<#KH#<(DL!M<DL!M-DL"M<DL"M++ G #KH#< D#M#0 6L!M 7L!M.#KH#<DL!M0 6L"M 7L"M.#KH#<DL"M0 N #8 #KH#0 7L!M 7L!M.#8<DL!M0 7L"M 7L"M.#8<DL"M0 D=#DBEIT(+0 N cout::ORnMET?D# D=#DBEITUKUB SU H=#STB?I#=E# @#SUKUB&O0 cout::ORn@unctul are urmatoarele coordonate ()%*+& O::7L!M::O O::7L"M::endl0 cout::O>aloarea functiei f()+ O::H(7L!M%7L"M+::endl0 cout::OIumarul de iteratii I O::I::endl0 N void ?@TBMB6#=E&&#KD?=BTMUKJCESTEIESJSTBEHEK(void+ G int I !%8 !0 float #8%D"L,M G!N%dL,M%7"L,M0 7L!M "0 7L"M "0 D=#DBEIT(+0 Phile((DL!MT !UUDL"MT !++ G --I0 if(8-- !+G dL!M .DL!M0 dL"M .DL"M0 N else G dL!M dL!M<(DL!M<DL!M-DL"M<DL"M+A(D"L!M<D"L!M-D"L"M<D"L"M+.DL!M0 dL"M dL"M<(DL!M<DL!M-DL"M<DL"M+A(D"L!M<D"L!M-D"L"M<D"L"M+.DL"M0 N0 #8 .(DL!M<dL!M-DL"M<dL"M+A(,<a<dL!M<dL!M-V<dL!M<dL"M-,<$<dL"M<dL"M+0 7"L!M 7L!M0 7"L"M 7L"M0 D"L!M DL!M0 D"L"M DL"M0 7L!M 7L!M-#8<dL!M0 7L"M 7L"M-#8<dL"M0 if(7L!M 7"L!MUU7L"M 7"L"M+$rea80 D=#DBEIT(+0 N cout::ORn#KD?=BTMUK CESTEIES.STBEHEKO0 cout::ORnSoordonatele punctului ()%*+& O::7L!M::O O::7L"M::endl0 cout::O>aloarea functiei f()+ O::H(7L!M%7L"M+::endl0 cout::OIumarul de iteratii I O::I::endl0 N void main(+ G clrscr(+0 ?@TBMB6#=E o$0 cout::ORnKucrarea de la$orator Ir."RnRnO0 o$.BI@UT(+0 o$.MET?D#JD=#DBEITUKUB(+0 o$.#KD?=BTMUKJCESTEIESJSTBEHEK(+0 getch(+0 N