Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 7. Heuristické metody Co očekáváme od praktických heuristik? Lokální a globální přístup Najít vůbec nějaké řešení a najít lepší konstruktivní a iterativní fáze Jednoduché heuristiky pouze nejlepší a prvé zlepšení Problém s lokálními extrémy a co s ním Prohledávání s návratem
Co očekáváme od heuristických metod Použitelnost v praxi: na praktických instancích s přijatelnou přesností s přijatelným výpočetním časem Omezení a optimalizace: nejlepší čas pro potřebnou přesnost nejlepší přesnost v časovém limitu Přesnost: přibližné řešení přesné řešení důkazy správnosti na praktických instancích výpočty v reálném čase 2
metafora stavového prostoru pojem aktuálního stavu použití iterativní konstruktivní lokální metody heuristické metody globální metody překonání lokálního minima dekompozice instance na menší instance téhož problému 3
lokální metody překonání lokálního minima uváznou jednoduché vycouvají s návratem pokročilé překonají 4
Lokální metody Stavový prostor a okolí stavu Systematické a úplné metody Praktické aplikace: neúplné metody 5
Stavový prostor instance problému batohu řešené hladovým algoritmem 100 110 101 111 001 011 000 triviální v každém kroku je právě jedna konfigurace aktuální 010 přidej věc 1 přidej věc 2 přidej věc 63
Lokální metody 100 110 101 001 111 011 okolí aktuálního stavu 000 aktuální stav 010 přidej věc 1 přidej věc 2 přidej věc 73
Okolí stavu, sousední stav kam se dostanu jedním krokem Definice: okolí stavu s S je množina stavů, dosažitelných z s aplikací některé operace q Q. kam se dostanu nejvýše k kroky Definice: k-okolí stavu s S je množina stavů, dosažitelných z s aplikací nejméně jedné a nejvýše k operací q Q. Definice: stavy z okolí stavu s S se nazývají sousední stavy (sousedé) stavu s. 8
Lokální metoda má vždy jeden aktuální stav uvažuje sousední stavy z (relativně malého) okolí 9
{počáteční stav} Ø closed Ø best state state open.empty() ano ne ano open.get() closed? ne state.solution() and state.better (best) ne ano state best q open.put (q (state)) closed.put (state) open řešení neexistuje best= Ø? ne ano nejlepší nejdříve do hloubky do šířky aktuální stav okolí aktuálního stavu lokální metoda řešení je best 10
Praktické metody Úplné a systematické metody uschovají každý stav z okolí pro pozdější zkoumání proto jsou exaktní proto mohou mít nadpolynomiální složitost Když vybereme (nějak) z každého okolí jen jeden stav strategie je neúplná, nelze zaručit řešení můžeme najít řešení v přijatelném čase nepotřebujeme strukturu open má vždy jen jeden prvek strukturu closed si většinou nemůžeme dovolit, musíme se spolehnout na vlastnosti stavového prostoru nebo řízení algoritmu 11
{počáteční stav} state Ø best state = Ø? ne ano stop ()? ne ano state.solution() and state.better (best) ne ano state state best best= Ø? ano ne try (state) řešení neexistuje nebo je neznáme Typická struktura jednoduché lokální heuristiky funkce try () nedokáže najít další stav jiný důvod (čas ) zkus najít další stav řešení je best 12
Příklad Dvě jednoduché heuristiky Konstruktivní a iterativní fáze Dá se to doopravdy použít... 13
Problém diskrétního rozmístění Dáno: množina n modulů K={k 1,,k n } množina m pozic P={p 1,,p m }, m n propojení modulů jako hypergraf G (K, N), kde N je množina spojů n cenová funkce W (R, n), která pro každé přiřazení R: K P odhadne cenu realizace spoje n. Nalézt: prosté přiřazení R: K P (rozmístění), které minimalizuje součet ohodnocení W (R, n) přes všechny spoje. 14
Algoritmus max konjunkce min disjunkce Nechť H (G, k 1, k 2 ) je heuristická funkce, která na základě grafu G odhadne stupeň vazby modulů k 1 a k 2. Nechť K + (R) označuje množinu modulů, které jsou právě rozmístěny (mají dvojici v R), K - (R) množinu právě nerozmístěných modulů. Obdobně definujeme množinu obsazených pozic P + (R) a volných pozic P - (R). R (k i, p j ), buď ze zadání nebo pomocnou heuristikou. 15
Algoritmus max konjunkce min disjunkce 1. Vyber modul k K - (R) takový, že l K + (R) H(G,k,l)=max. 2. Je-li jich více, vyber z nich modul k takový, že l K - (R) H(G,k,l)=min. 3. Najdi pozici p P - (R) takovou, že n W(R (k,p), n)=min. max. přidrátovaný k rozmístěným modulům min. přidrátovaný k nerozmístěným modulům pozice pro nejlevnější dráty kde suma je přes všechny spoje incidentní s k. 4. R R (k,p) 5. Opakuj 1., dokud K - (R) není prázdná. 16
Okolí Krok: dáme nerozmístěný prvek na volnou pozici. Vezmeme K - (R), najdeme nejlepší prvek podle heuristické funkce. Vezmeme P - (R), najdeme nejlepší prvek podle optimalizačního kritéria. Šidíme tak hledání nejlepšího prvku (k,p) K - (R) P - (R) (nepotřebovali bychom heuristickou funkci!). Stavový prostor je acyklický. Algoritmus se zastaví po n krocích. 17
Konstruktivní heuristika Začali jsme ze (skoro) triviální konfigurace Dopracovali jsme se k řešení (konfiguraci, která vyhovuje omezením zde prosté zobrazení R) konstruktivní heuristika 18
Iterativní zlepšování 1. Najít pozice p 1 a p 2 takové, že vzájemným prohozením jejich obsahu (modul nebo nic) se nejvíce zlepší hodnota optimalizačního kritéria. 2. Není taková stop. 3. Provést záměnu, opakovat 1. Stavový prostor je acyklický (nemohu provést záměnu, která by nezlepšila optimalizační kritérium nemohu se vrátit) 19
Okolí Vezmu P P, najdeme nejlepší prvek podle optimalizačního kritéria Můžeme to šidit : najdeme pozici p 1, která toho má nejvíc zapotřebí (heuristická funkce) najdeme pozici p 2, kde je zlepšení největší Jiná možnost: hledáme v P P, ale spokojíme se s první záměnou, která zlepší optimalizační kritérium 20
Iterativní heuristika Začali jsme z řešení Dopracovali jsme se k lepšímu řešení iterativní heuristika Dvojfázové heuristiky Prvá fáze konstruktivní náhodná, více náhodných řešení (viz GSAT minule) Druhá fáze iterativní 21
Jednoduché heuristiky Pouze nejlepší Prvé zlepšení Okolí heuristik Kernighan-Lin 22
{počáteční stav} state Ø best state = Ø? ne ano Čím se mohou lišit jednoduché lokální heuristiky stop ()? ne ano state.solution() and state.better (best) ne ano state state best best= Ø? ne ano try (state) řešení neexistuje nebo je neznáme stavovým prostorem okolím výběrem z okolí zastavením řešení je best 23
Pouze nejlepší (best only) try (state) Ø candidate q new = q (state)) return candidate new.solution() and new.better (state) and new.better (candidate) ne ano new candidate 24
Metoda pouze nejlepší celá heuristika se zastaví, jestliže v nějakém stavu neexistuje zlepšující tah pokud better() používá jiné hodnocení než optimalizační kritérium, solution() může chybět jiné názvy: metoda nejrychlejšího sestupu/vzestupu, horolezecký algoritmus na pořadí prohledávání okolí nezáleží 25
Prvé zlepšení (first improvement) try (state) q new = q (state)) return Ø záleží na pořadí randomizace náhodné pořadí new.solution() and new.better (state) ano ne return new 26
Metoda první zlepšení celá heuristika se zastaví, jestliže v nějakém stavu neexistuje zlepšující tah pokud better() používá jiné hodnocení než optimalizační kritérium, solution() může chybět na pořadí prohledávání okolí záleží 27
Návrh heuristiky mnoho jednoduchých a rychlých iterací méně sofistikovaných iterací mnoho operací, které nemění konfiguraci drasticky méně radikálních ( dlouhých ) operací občas 28
Okolí heuristik Kernighan-Lin aplikuj opakovaně danou transformaci až do stop podmínky bez ohledu na optimalizační kritérium nebo heuristickou funkci aktuální stav Kernighan-Lin : řada heuristik původně pro TSP, později hlavně pro bisekci grafu z takto získaného okolí vyber nejlepší stav jako příští hledání dalšího stavu 29
Problém lokálních extrémů 30
Lokální minimum hodnota optimalizačního kritéria lokální minimum: všechny sousední stavy mají horší hodnotu optimalizačního kritéria spojovací čáry jen pro názornost globální minimum kroky iterativní heuristiky 31
Správný průběh iterativní heuristiky hodnota optimalizačního kritéria různá počáteční řešení stejně kvalitní výsledná řešení kroky iterativní heuristiky 32
Uváznutí v lokálních minimech hodnota optimalizačního kritéria různá počáteční řešení zastavení v lokálních minimech kvalita výsledného řešení silně závisí na kvalitě počátečního řešení kroky iterativní heuristiky 33
Problém lokálních extrémů Heuristiky, které neřeší uváznutí v lokálním extrému (pouze nejlepší, první zlepšení a jim podobné) se zastaví v lokálním minimu Projev: závislost výsledného řešení na počátečním, tzv. nedostatečná iterační síla Centrální problém lokálních heuristik 34
Řešení Zvětšení okolí Více náhodných počátečních řešení (GSAT) odstranění následků, ne příčiny závisí na možnosti generovat náhodná řešení Návraty odvolání rozhodnutí, které vedly do slepé uličky Únik kroky, které připustí zhoršení aktuálního stavu nutnost dokonalejšího řízení algoritmu (bloudění) nutnost řízení ochoty k horšímu řešení 35
Zvětšení okolí k-okolí o m transformacích má m k stavů! Kernighan-Lin (pokud zahrne tyto stavy) 3-okolí 1-okolí 36
Prohledávání s návratem 37
Prostor prohledávání prostor prohledávání????? bod prostoru prohledávání stavový prostor oblast stavového prostoru 38
Základní prohledávání s návratem (backtracking) V algoritmech, kde se postupně ohodnocují proměnné, nejčastěji konstruktivní úlohy Heuristická funkce, udávající pořadí, v jakém mají proměnné být ohodnocovány Rozpoznání slepé uličky pro úplné řešení (list prohledávacího stromu) pro částečně ohodnocenou konfiguraci Omezení prohledávacího prostoru Není zaručena polynomiální složitost Tyto techniky se používají i v kombinaci s jinými 39
Problém dam na šachovnici Rozestavit n dam na šachovnici n n tak, aby se vzájemně neohrožovaly konflikt 40
Dopředná kontrola (forward checking) Udržovat informaci, která dovolí (snadno, rychle) se vyhýbat konfliktům 41
Zpětné skoky (backjumping) pořadí umisťování dam je třeba vrátit se až sem, jinak budeme narážet na stejný problém který darebák jako poslední ucpal políčko v tomto sloupci? 43