Programování s omezujícími podmínkami - zadani zkousek
Transkript
Programování s omezujícími podmínkami From ωικι.matfyz.cz Programování s omezujícími podmínkami Kód předmětu: OPT042 (http://is.cuni.cz/studium/predmety/index.php?do=predmet&kod=NOPT042) Přednáší: Roman Barták Table of contents [hide] 1 Základní informace 2 Podrobnosti 2.1 splňování podmínek prohledáváním 2.2 konzistenční techniky 2.3 prohledávání s konzistencí 2.4 optimalizace pomocí omezujících podmínek 3 Zkoušky 3.1 17.5.2006 3.2 31.5.2006 3.3 16.6.2006 4 Odkazy [edit] Základní informace Přednáška podává přehled o technikách programování s omezujícími podmínkami. Zaměřena je na algoritmy splňování podmínek a na problematiku řešení příliš omezených systémů podmínek. Zabývá se také praktickým využitím omezujících podmínek při řešení reálných problémů. Wikipedia:Constraint satisfaction problem [edit] Podrobnosti • • CSP – problém popsaný pomocí (hyper)grafu; vrcholy = proměnné, hrany = podmínky binární CSP – všechny podmínky jsou binární o unární se dají kódovat v doménách proměnných o víc-ární se dají řešit prohozením podmínek a proměnných nebo přidáním skrytých proměnných [edit] splňování podmínek prohledáváním systematické • • generuj a testuj – úplně tupé backtracking o backjumping – skáče více dozadu na proměnné, které způsobily konflikt o dynamický backtracking – jako backjumping, ale přenáší důvod konfliktu a mění pořadí proměnných o backmarking – testuje konzistenci a u podmínek, které se změnily, si pamatuje nejvzdálenější úroveň konfliktu, čímž odstraňuje zbytečné testy nesystematické • • neúplná stromová prohledávání, nějak se omezují (cutoff) a když to nevyjde, omezí se méně (restart) o bounded backtrack search (BBS) – omezen počet slepých uliček, když to nevyjde zkusí o jednu více o iterative broadening (IB) – omezený počet alternativ k vyzkoušení v každém uzlu o depth bounded search (DBS) – do dané hloubky projíždí všechno, pod tím už jen něco neúplného; v případě neúspěchu jde s úplností hlouběji o credit search (CS) – daný kredit na větvení, když dojdou ve větvi peníze jde vždy jen jednou cestou s heuristikami; diskrepance = porušení heuristiky o limited discrepancy search (LDS) – daný maximální počet diskrepancí v každé cestě o improved limited discrepancy search (ILDS) – daný přesný počet diskrepancí, takže se při restartu nemusí procházet už prolezlé o depth-bounded discrepancy search (DDS) – diskrepance povoleny jen do dané hloubky (v níž je diskrepance povinná – tak se nebudou opakovat slepé uličky z přechozí iterace – ta tam šla podle heuristiky) lokální • • • • hill climbing (HC) – začne na náhodném místě a v každém kroku udělá nejlepší možnou změnu jedné proměnné, když už to nejde zase skočí na náhodné místo, aby se vyhnul lokálnímu optimu minimalizace konfliktů (MC) – v každém kroku vezme konfliktní proměnou a minimalizuje u ní počet konfliktů; neumí vyskočit z lokálního optima náhodná procházka – v každém kroku hodím kostkou a buď jdu podle nějakého normálního lokálního algoritmu, nebo náhodně o tabu seznam – brání trčení v lokálních optimech a cyklům (do určité délky) obecně GSAT – řeší SAT náhodným ohodnocením a postupným překlápěním těch proměnných, kde mu to nejvíc pomůže (heuristiky: random walk, zvyšování váhy těch co jsou dlouho nesplněné, průměrování dosavadních řešení) • • GENET – neuronová síť, neurony se navzájem potlačují tam kde by spolu neměly být aktivní; dobře je to vysvětleno v asi původním článku, viz. A Generic Neural Network Approach For Constraint Satisfaction Problems (http://sherry.ifi.unizh.ch/tsang92generic.html) simulované žíhání – na začátku jsme teplí a hodnoty náhodně skáčou, s klesající teplotou pak i jednotlivých hopsajícím proměnným klesá ochota přejít do horšího ohodnocení a celé se to stabilizuje [edit] konzistenční techniky vymlacování hodnot proměnných, které nemůžou být v řešení, obecný popis záležitostí viz wen:Local consistency • • vrcholová konzistence (node consistency, NC) – aplikace unárních podmínek přímo na domény hranová konzistence (arc consistency, AC) – každá hodnota z jednoho konce hrany má kamarády na druhém konci tak, aby spolu splňovali podmínky na hraně revize hrany: vyházení hodnot, které na druhé straně nemají podporu AC-1: revidujeme hrany, dokud to redukuje nějaké domény AC-3: máme frontu k revidování, při revizi hrany do ní zase přihodíme ty, které to mohlo rozbít o AC-4: udržuje si mapy jaké hodnoty mají kde podporu, při vyřazení hodnoty sníží čítač u těch, které podporovala, a pak případně kaskáduje; optimální v nejhorším případě, paměťově hodně náročné o AC-6: zlepšuje AC-6, pamatuje si jen jednu podporu, když zmizí tak dopočítává o AC-2001 (http://www.constraintprogramming.com/people/regin/papers/aij05-ac2001.pdf): pro každou hodnotu proměnné si pamatuje poslední hodnotu z druhého konce, která ji podporovala; když tam je, je vše ok, když tam není zkouší další v pořadí směrová hranová konzistence (DAC) – (při daném uspořádání) nám stačí hranová konzistence u hran v jednom směru o DAC-1: požadujeme konzistenci hran je v jednom směru, když to uděláme v dobrém pořadí nemusíme revize opakovat o o • aplikujeme-li DAC na stromové CSP v uspořádání od kořene a potom zase zpět, získáme plnou AC • path consistency (PC) – cesta je konzistentní, když pro každé ohodnocení obou konců splňující binární podmínky na koncích existuje ohodnocení vnitřku tak, že všechny binární podmínky mezi sousedy na cestě jsou splněny o CSP je PC, právě když každá cesta délky 2 je PC (indukcí od délky 2 dostaneme PC pro všechny cesty) o reprezentace binární podmínky {0,1}-maticí, pak jejich skládání násobením: zkonzistentnění cesty (i,k,j): Rij = Rij & (Rik * Rkk * Rkj), kde Rkk jsou unární podmínky na k, a ty různé binární podmínky mezi dvěma proměnnými PC-1: zkonzistentňuji cesty délky 2, dokud se mění domény PC-2: podmínky na cestu stačí jen jednou (jsou symetrické), po revizi se kontrolují jen zasažené cesty (lze revidovat i podmínku (i,i) – to pak zasahuje cesty které mají ten uzel uvnitř) o PC-4: založen na počítání podpor, opravuje chybný PC-3 o PC-5: pamatuje si jen jednu podporu, při ztrátě hledá další directional path consistency (DPC) – stačí konzinstence cest po směru uspořádání o DPC-1: jdeme od konce, každou cestu procházíme jen jednou restricted path consistency (RPC) – testuje PC jen když to může něco vyřadit o vrchol je RPC když jsou všechny hrany okolo něj AC a zároveň když má nějaká jeho hodnota jen jednu podporu, požadujeme existenci další hodnoty v jiném sousedu, aby to celé tvořilo konzistentní cestu o RPC (algoritmus): podobně jako AC-4, vedeme si seznam podpor a k němu přidáváme seznam míst kde musí být PC; při běhu se vždy udělá AC a potom testuje vybrané PC, dál zase návrh k AC, atd k-konzistence – libovolné konzistentní ohodnocení (k-1) proměnných můžeme rozšířit do libovolné k-té proměnné o silná k-konzistence – j-konzistence pro každé j<=k o NC = 1-konzistence; AC = (silná) 2-konzistence; PC = (silná) 3-konzistence o pro přímé nalezení řešení grafu s n vrcholy je potřeba silná n-konzistence řešení CSP bez navracení – při nějakém uspořádání proměnných můžeme pro každou proměnnou najít kompatibilní ohodnocení o o • • • • je-li graf podmínek silně k-konzistentní a k>w, kde w je jeho šířka, existuje upořádání proměnných pro vyřešení CSP bez navracení AC stačí na stromové grafy PC přidává nové hrany a tím si to kazí směrová k-konzistence adaptivní konzistence (i,j)-konzistence inverzní konzistence (IC) neighborhood inverse consistency (NIC) bodová A-konzistence zobecněná hranová konzistence (GAC) – pro nebinární podmínky, vychází z hodnoty proměnné vzhledem k podmínce (snese se s okolím), pak roztaženo na proměnnou, podmínku a celý problém o upravené AC-3: podmínka jako sada propagačních metod pro každou proměnnou zvlášť, ty se pak ověřují o konzistence okrajů (bounds consistency) – jen pro okraje domény o o o o • • • • • [edit] prohledávání s konzistencí • • • • • prohledávání s navracením – po ohodnocení proměnné testujeme konzistenci look back – konzistence mezi již ohodnocenými proměnnými (backtracking) forward checking – vyřazování nekompatibilních hodnot budoucích proměnných partial look ahead – propagace vybrané hodnoty do všech budoucích proměnných full look ahead – rovnou to promlátíme pomocí plné AC • • maintaining arc consistency (MAC): provede AC přes spuštěním hledání a potom po každém kroku enumerace eliminace cyklů (CC) • • • acyklický graf se dá vyřešit bez navracení ohodnotíme kružnicový řez a pak je to snadné MAC extended: 1. zajistíme AC 2. najdeme kružnicový řez 3. vyhodíme co není v žádném cyklu 4. pak přiřadíme hodnoty se zajišťováním hranové konzistence; co má jednoprvkovou doménu nebo není v žádném cyklu vyhodíme 5. znovu připojíme vyhozené proměnně a zajistíme do nich směrovou hranovou konzistenci 6. vyřešíme prohledáváním bez navracení [edit] optimalizace pomocí omezujících podmínek branch and bound ořezávání větví v nichž není (optimální) řešení částečné splňování podmínek • • • • uvolnění zadání valued CSP – ocením podmínky, hledáme řešení které poruší co nejlevnější pravděpodobnostní CSP / CSP nad polo-okruhy hierarchie omezujících podmínek (nutné, preferované, ...); komparátory o DeltaStar: z dosud nalezených řešení vybere to co nejlépe splňuje podmínky o DeltaBlue o Indigo: pro acyklické hierarchie, propaguje okraje domén, postupně přidává podmínky od nejsilnější po nejslabší o projekční algoritmus Zkoušky 17.5.2006 Zkouška probíhala ústně. Otázky byly zaměřeny zpravidla na popis různých algoritmů. Jedna otázka zahrnovala přibližně obsah jedné přednášky Otázky: • • • • Backtracking, backjumping a spol. Konzistenční techniky - hranová k., k. po cestě a další Prohledávání s heuristikami Lokální prohledávání • pak ještě jedna, ale tu jsem nezaslechl :) 31.5.2006 Zkouška taktéž ústní, paralelně z automatovou písemkou. Přišli jsme dva takže času bylo dost. Otázky: • • hranová konzistence, definice, algoritmy na ní, při znalosti principu nechá domyslet, DAC a chyták: DAC v obou směrech je AC, když na něco pustím ve dvou směrech DAC-1 tak to AC být nemusí, neb druhý průchod může rozbít první ? 16.6.2006 • • • Neuplne prohledavani Uplne prohledavani Duraz na formalni definice. Mit prehled nestaci.
Podobné dokumenty
Název: Programování s omezujícími podmínkami Název v AJ
1. Úvod: Historické souvislosti, vazba na další obory, aplikační oblasti, definice
problému splňování omezujících podmínek, binarizace problémů.
2. Algoritmy lokálního prohledávání: metoda největší...
SAT řešič pomocí algoritmů inspirovaných přírodou
CDCL(ϕ, ν)
if (UnitPropagation(ϕ, ν) == CONFLICT)
then return UNSAT
dl ← 0 Decision level
while (not AllVariablesAssigned(ϕ, ν))
do (x, v) = PickBranchingVariable(ϕ, ν)
Programování
kde metody mají jediný výstup.
SkyBlue zobecňuje DeltaBlue o metody s více výstupy
výstupy.
Oba algoritmy vyžadují existenci acyklické sítě metod a
neumí nefunkcionální podmínky, tj. třeba A
Divokej Bill, Ill Niňo a další potěšili
měla potisk z Rock For People 1997, případně z týden před tím konané
Noci plné hvězd v Třinci.
K řešení byla koneckonců i poměrně hustá koncentrace diváctva ve
stanovém městečku již den před akcí, ...
Kokosová pošta z ráje
své kapsy dovoz kokosů z nedaleké plantáže (jak nám
řekl, samotné ořechy mu dávají zadarmo, ale musí
dát něco od cesty za naložení, dovoz a složení), ale
eviduje si i země, kam jsou adresovány. Tro...
Nosiče II
Nádrže stupně jsou skořepinové, svařované z nerezavějící oceli o tloušťce mezi
0,125 – 1 mm. Prostor mezi nádržemi na kapalný vodík a kyslík je evakuován,
čímž jsou obě nádrže odizolovány. Celá kon...
slajdy - Jan Outrata
chyby v kódových slovech se při dekódování nešíří – robustnost
požadavky:
každou (neprázdnou) posloupnost zdrojových symbolů musí být možné vyjádřit jako
(případně prefix) zřetězení právě jedné pos...
Stáhnout prezentaci
Ozón – modelování množství ozonu v závislosti na nadmořské
výšce, teplotě a rychlosti větru