Atkaitinimo modeliavimo (AM) metodo ištakos slypi statistinėje mechanikoje, tiksliau, energetinių procesų, vykstančių sistemose, sudarytose iš didelio skaičiaus dalelių (atomų), imitavime. Šio imitavimo idėja yra ta, jog iš pradžių sistema „pervedama“ į didelės energijos būseną, o po to, palengva mažinant energiją, stengiamasi pasiekti būseną, atitinkančią žemiausią (optimalų) sistemos energijos lygį — tarsi (kietas) fizikinis kūnas būtų įkaitintas iki pakankamai aukštos temperatūros, o paskui, jį atkaitinant (atšaldant), t.y. mažinant temperatūrą, jis būtų savotiškai užgrūdinamas.
Tai metaeuristinis optimizavimo metodas, kuris:
- Yra įkvėptas gamtos procesų,
- Turi ir lokalios ir globalios paieškos savybių,
- Yra vieno sprendinio, t.y kiekviena iteracija tobulina esamą sprendimą.
Input s, iMax, T, decrT
For i = 0 to iMax:
sNew ← neighbour()
If P(E(s), E(sNew), T) ≥ random(0, 1):
s ← sNew
T ← newTemperature(T, decrT)
Output: s
Naujas kaimynas sNew randamas atsitiktinai apribotame intervale. Mūsų įgyvendintame algoritme naujas kaimynas visiškai nepriklauso nuo senojo.
Input min, max
sNew ← rand(min, max)
Output: sNew
Nauja temperatūra apskaičiuojama pasitelkiant mažinimo daugiklį (būtinai [0, 1]).
Input T, decrT
newT ← T * decrT
Output: newT
Nauja energija randama tiesiog įsistatant skaičius į testuojamą funkciją.
Apskaičiuojama tikimybė:
- Kai naujoji energija mažesnė už senąją (E-newE > 0), gauname 1.
- Kai naujoji energija nėra mažesnė už senąją, gauname (0, 1)
Input E, newE, T
prob ← e(E-newE)/T^
Output: prob