36 PAA - Problémy a algoritmy

Úloha 5: Seznámení s pokročilou iterativní metodou

Jan Dohnal (dohnaj1@fel.cvut.cz)

Zadání


Použitá metoda

Pro řešení této úlohy jsem zvolil metodu simulovaného ochlazování. Jedná se o jednu z pokročilých iterativních metod pro řešení NP problémů. Využívá se postupného „snižování teploty“, kdy teplota ovlivňuje pravděpodobnost přijmutí nového stavu zhoršujícího optimalizační kritérium současného řešení. Pokud je teplota vysoká, pravděpodobnost přijmutí stavu, který má horší optimalizační kritérium než současný stav, je vyšší, než v případě nízké teploty. Tedy pokud je teplota vysoká, pravděpodobnost akceptace stavu, který má horší optimalizační kritérium než současný stav je vyšší, než pokud je teplota nízká.

Popis algoritmu simulovaného ochlazování následuje:

state = init_state;  //pocatecni stav
t = t0;                 //pocatecni teplota
do {
  do {
    state = try(state, t);
  } while (! equilibrium(state, t, ...) );
  t = cool(t);
} while (! frozen(t, ...) );
//nalezení dalšího stavu
try(state, t) {
  new = random_thing(state);
  delta = cost(new) - cost(old);
  //zlepseni ci pripustne zhorseni
  if ( (delta < 0) || (random() < exp(-delta/t)) )
    return new;
  return state;
}

Jako počáteční řešení pro algoritmus simulovaného ochlazování jsem využil výsledná data z dynamického programování. Pro řešení problému batohu jsem si zvolil instanci dimenze 27, nad kterou jsem prováděl výpočty a měření.

Nastavení parametrů

Parametry simulovaného ochlazování ovlivňující běh algoritmu a výsledek jsou tyto:

Naměřené hodnoty

Pro instanci dimenze 27 jsem naměřil následující hodnoty a výsledky v závislosti na zvolené počáteční teplotě t0, koeficientu ochlazování α a prahu iterace i.

t0αpráhcena počátečnícena optimalizovanánavštíveno stavů
0,20,5 10244324501062
10024671504
100024671975
0,6 1024511586
10024671810
100024742277
0,7 1024451047
10024631518
100024652200
0,8 1024581878
10024652334
100024663116
0,9 1024581742
10024731871
100024872140
0,60,5 1024501062
10024671504
100024671975
0,6 1024511586
10024671810
100024742277
0,7 1024451047
10024631518
100024652200
0,8 1024581878
10024652334
100024663116
0,9 1024581742
10024731871
100024872140
1,00,5 1024501062
10024671504
100024671975
0,6 1024511586
10024671810
100024742277
0,7 1024451047
10024631518
100024652200
0,8 1024581878
10024652334
100024663116
0,9 1024581742
10024731871
100024872140
2,00,5 1024501062
10024671504
100024671975
0,6 1024511586
10024671810
100024742277
0,7 1024451047
10024631518
100024652200
0,8 1024581878
10024652334
100024663116
0,9 1024581742
10024731871
100024872140


Závěr

V této práci jsem se snažil seznámit s principem algoritmu simulovaného ochlazování. Pro zjednodušení jsem zvolil omezené množství vstupních dat, výsledek mne však mile překvapil, jelikož algoritmus nabídl rozumnou optimalizaci řešení. Při experimentování s algoritmem jsem zjistil, že výsledek silně závisí na volbě vstupních parametrů.