Optimizare numerică

Implementaţi o metoda (euristica) pentru găsirea punctului de maxim sau de minim al unei funcţii cu un număr arbitrar de variabile. Testaţi pe două sau mai multe din următoarele exemple1:

  • Rosenbrock's valley function
    f2(x)=sum(100*(x(i+1)-x(i)^2)^2+(1-x(i))^2)
   i=1:n-1; -2.048<=x(i)<=2.048.
    x=(x1, x2, ..., xn)
    Obiectiv: minimizare; minim global: f(x)=0; xi=1, i=1:n.

  • Ackley's Path function
    f10(x)=-a*exp(-b*sqrt(1/n*sum(x(i)^2)))-exp(1/n*sum(cos(c*x(i))))+a+exp(1)
   a=20; b=0.2; c=2*pi; i=1:n; -32.768<=x(i)<=32.768
    unde: a=20; b=0.2; c=2*pi; i=1:n; -32.768<=xi<=32.768
    x=(x1, x2, ..., xn)
    Obiectiv: minimizare; minim global: f(x)=0; xi=0 i=1:n.

  • Rastrigin's function
    f6(x)=10*n+sum(x(i)^2-10*cos(2*pi*x(i))), i=1:n; -5.12<=x(i)<=5.12.
    x=(x1, x2, ..., xn)
    Obiectiv: minimizare; minim global: f(x)=0; xi=0, i=1:n.

  • Six-hump camel back function
    fSixh(x1,x2)=(4-2.1*x1^2+(x1^4)/3)*x1^2+x1*x2+(-4+4*x2^2)*x2^2
   -3<=x1<=3, -2<=x2<=2
    Obiectiv: minimizare; minim global: f(x1,x2)=-1.0316; (x1,x2)=(-0.0898,0.7126), (0.0898,-0.7126).

Întocmiţi un mic raport (format text) în care să precizaţi, pentru fiecare funcţie folosită pentru testare:

  • timpul minim, mediu şi maxim de execuţie
  • cea mai buna şi cea mai slaba soluţie, precum si media soluţiilor obţinute după un număr de rulări.

1Sursa (unde pot fi găsite şi alte exemple utile): http://www.geatbx.com/docu/fcnindex-01.html