Hill-Climbing

begin
  t := 0
  initialize best
  repeat
    local := FALSE
    select a candidate solution (bitstring) vc at random
    evaluate vc
    repeat
      generate all (or some) of the Hamming neighbors of vc
      select the vn among these 
        with the best value of the function eval
      if eval(vn) is better than eval(vc)
        then vc := vn
        else local := TRUE
    until local
    t := t + 1
    if vc is better than best
      then best := vc
  until t = MAX
end

Reprezentare:

Spaţiul de căutare se va disctretiza până la o anumită precizie 10-d. Un interval [a, b] va fi împărţit în N = (b-a)*10d subintervale egale. Pentru a putea reprezenta cele (b-a)*10d valori, este nevoie de un număr n = parte_intreaga_superioara(log2(N)) de biţi. Lungimea şirului de biţi care reprezintă o soluţie candidat va fi suma lungimilor reprezentărilor pentru fiecare interval din domeniul de definiţie al funcţiei de optimizat.

Prin vecin Hamming al unui şir de biţi v se înţelege un şir de aceeaşi lungime, care diferă printr-un singur bit de v.

Simulated Annealing

begin
  t := 0
  initialize the temperature T
  select a current candidate solution (bitstring) vc at random
  evaluate vc
  repeat
    repeat
      select at random vn - a Hamming neighbor of vc
      if eval(vn) is better than eval(vc)
        then vc := vn
        else if random[0,1) < exp(-|eval(vn)-eval(vc)|/T)
          then vc := vn
    until (termination-condition)
    T := g(T; t) 
    t := t + 1
  until (halting-criterion)
end

Se va folosi acelaşi mod de reprezentare ca mai sus.

Funcţia g(T; t) de modificare a "temperaturii" T va asigura o scădere treptată a acesteia cu fiecare iteraţie (de exemplu, prin înmulţirea cu o valoare subunitară).

Exemple de condiţii de ieşire din bucle:

  • pentru bucla interioară (termination-condition): verificarea unui număr stabilit de vecini;
  • pentru bucla exterioară (halting-criterion): atingerea unei anumite temperaturi, atingerea unui număr de iteraţii.

Temă

Implementaţi cele două metode de mai sus pentru a găsi punctele de extrem ale funcţiilor propuse la laboratorul 1.

Ilustraţi prin grafice modul în care evoluează soluţiile. Pentru Hill Climbing, graficul trebuie să exprime valoarea functiei de optimizat în punctul reprezentat de vc în cadrul buclei din fiecare iteraţie, respectiv în punctul reprezentat de best în funcţie de iteraţii. Pentru Simulated Annealing se vor trasa evoluţia valorii functiei de optimizat în punctul reprezentat de vc şi modul de scădere a "temperaturii de călire".

Realizaţi un scurt raport (format text) care să precizeze, pentru fiecare dintre metode:

  • 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.