Úloha do předmětu 36PAA 2005/2006

Řešení problému batohu

Karel Podvolecký

5. ročník, obor počítače, K336 FEL CVUT, Karlovo nám. 13, 121 35 Praha 2

May 26, 2006

Zadání:

Iterativní metoda Simulovaného ochlazování

Naprogramujte řešení 0/1 problému batohu metodou simulovaného ochlazování (simulated annealing - SA).

Řešení:

Metoda Simulovaného ochlazování

Nastaveni parametru:

Detaily implementace:

Výpočet je omezen 2-ma faktory. Jednak je to klesající teplota (klesá geometricky s koeficientem) a jednak je to čas. Na každý výpočet je nastaven čas 20s. Výpočet je implementován jako vlákno, které se po 20s stopne a vezmou se aktuální výsledky. Jako jedna iterace je považováno nalezení stavu, který je různý od předchozího.

Zkusil jsem jemné změny parametrů výpočtu. Změna maximální teploty na 1/2 se projevila velkým zhoršením výsledků. Stejně tak i změny koeficientu klesání počtu iterací a koeficientu klesání teploty. Zmena minimální teploty přinesla minimální zlepšení, které je ale ve statistické chybě.

Testování jsem prováděl na instanci batohu se 40 předměty. Výsledky jsou shrnuty v následující tabulce:

Metoda výpočtu Instance problému Čas na jednu instanci Průměrná chyba Maximální chyba Minimální chyba
Simulované ochlazováni 40 <=20s 11.8% 21.3% 4.6%

Závěr

Zkoušel jsem tuto metodu spouštět vícekrát nad stejnými daty, avšak její výsledky se zdají být rovnocenné. Ve většině případů nalezne řešení do 20% chyby, což je horší, než jakákoliv jiná heuristika, nicméně její výpočet je možné libovolně prodloužit a tím případně dojít k lepším výsledkům.

Program je psán v Javě verze 5.0. Stáhnout si ho můžete zde, nebo se můžete podívat do zdrojových kódů. Detailní výsledky naleznete v spreadsheetu.

<<zpět

Valid XHTML 1.0 Transitional