Professional Documents
Culture Documents
Hill Climbing
Hill Climbing
Hill Climbing
1.Problema: Minimizarea unor functii folosind folosind algoritmi Hill Climbing si Simulated Annealing.
2.Algoritmi utilizati:Hill Climbing folosind best improvement si first improvement.
3.Detalii de implementare:pentru reprezentarea parametrilor functiei am folosit un vector de bitseti , in
C++ .Initializarea se face random.(Se aleg random valorile puse in vectorul de bitseti initial,pentru
fiecare pozitie din vector).
Vecinatatea unui vector de bitset este un cod de distanta hemming 1 cu acesta(un vector de bitseti ce
difera printr-un singur bit de vectorul initial).
ITERARE HC begin
t := 0
initialize best
repeat
local := FALSE
BEGIN HC select a candidate solution (bitstring) vc at random
evaluate vc
repeat
vn := Improve(Neghborhood(vc))
if eval(vn) is better than eval(vc)
then vc := vn
else local := TRUE
END HC until local
t := t + 1
if vc is better than best
then best := vc
until t = MAX
end
Parametri algoritmului:
N_bits(17,24..)-numarul de biti necesari pentru reprezentarea unei variabile.
MAX-numarul maxim de iteratii
First improvement:
First Improvement:
1.DeJongs
Dimensiunea
5 10 30
Nr de executii 30 30 30
2.Schwefel
Dimensiunea
5 10 30
Nr de executii 30 30 30
Dimensiunea
5 10 30
Nr de executii 30 30 30
Dimensiunea 5
Nr de executii 30
1.Dejongs
Dimensiunea
5 10 30
Nr de executii 30 30 30
2.Schwefel
Dimensiunea
5 10 30
Nr de executii 30 30 30
3.Rastrigin
Dimensiunea
5 10 30
Nr de executii 30 30 30
Dimensiunea 5
Nr de executii 30
In general,se poate observa faptul ca best improvement ofera rezultate mai bune.