PA163 Programování s omezujícími podmínkami podzim 2018 Základní informace Web predmetu: na IS a průsvitky průběžně na ISu (interaktivní osnova, učební materiály) vzorové príklady z řešeními: ukázky pro písemku i domácí úkoly & UkonCení predmetu: a písemná práce až 100 bodů cca 7 otázek: přehledové, srovnávací, algoritmy, pojmy, príklady (model) cca 30 bodů: príklad(y) návrhu modelu problému - probíráno ve cvicení vzory písemné práce dostupné na webu predmetu 2 domácí úkoly za jednu domácí úlohu lze získat až 10 bodu podmínkou je získání alespon 8 bodů z celkového poCtu 20 bodů za D.Ú. hodnocení: A 100 a více, B 90-99, C 80-89, D 70-79, E 60-69 JS> Omezující podmínky v navazujících prednáškách: -i- PA167 Rozvrhování Hana Rudová, Omezující podmínky, 4. prosince 2018 2 Organizace predmetu Literatura JS> Dechter, R. Constraint processing. Morgan Kaufmann Publishers, 2003. ± http://www.ics.uci.edu/~dechter/books/ -i* Tsang, E. Foundations of Constraint Satisfaction. Academic Press, 1993. & na webu dostupný plný text knihy -i- http://cswww.essex.ac.uk/Research/CSP/edward/FCS.html & Barták, R. On-line guide to constraint programming. A http://ktilinux.ms.mff.cuni.cz/~bartak/constraints/ Barták, R. Programovaní s omezujícími podmínkami, prednáška na MFF UK. -i* http://kti.ms.mff.cuni.cz/~bartak/podminky/index.html -í* Elektronické materiály viz web predmetu Hana Rudová, Omezující podmínky, 4. prosince 2018 3 Organizace predmetu Přehled přednášky M Úvod JS> Konzistencní algoritmy £ Prohledávací algoritmy JS> OptimalizaCní problémy a rešení Opakování v příkladech Hana Rudová, Omezující podmínky, 4. prosince 2018 4 Organizace predmetu Cvičení Účast na čvičeníčh povinná a v prípade více než jedné absence nutné zpracovat doplňující príklady %> pri vysokém poctu absencí na cvicení predmet absolvovat nelze M Cíl a praktické procvicení příkladů s omezujícími podmínkami u pocítadj & Obsah Jr Úvod do programovacího jazyka OPL ILOG od firmy IBM a ňešení problémů: globální podmínky, modelování, rozvrhování, prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 5 Organizace predmetu Software: IBM ILOG CPLEX Optimization Studio C Dostupné ke stažení ve Studijních materiálech & Licence dostupná výhradne pro studenty predmetu! Šírením porušíte licenci. JS> Optimization Programming Language (OPL) it přirozený matematický popis optimalizacních modelů & vysoko-úrovňová syntaxe s jednoduchým a strucným kódem it rešení problému nejen s omezujícími podmínkami ale i pro matematické programování Jt http://www-01.ibm.com/software/commerce/optimization/modeling/ JS> Tutoriály a dokumentace ve Studijních materiálech https://is.muni.cz/auth/el/1433/podzim2018/PA163/ilog/ILOG02_course.zip Hana Rudová, Omezující podmínky, 4. prosince 2018 6 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? Hana Rudová, Omezující podmínky, 4. prosince 2018 7 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? using CP; dvar int+ gas; dvar int+ chloride; Hana Rudová, Omezující podmínky, 4. prosince 2018 7 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? using CP; dvar int+ gas; dvar int+ chloride; maximize 40 * gas + 50 * chloride Hana Rudová, Omezující podmínky, 4. prosince 2018 7 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? using CP; dvar int+ gas; dvar int+ chloride; maximize 40 * gas + 50 * chloride subject to { gas + chloride <= 50; 3 * gas + 4 * chloride <= 180; chloride <= 40; Hana Rudová, Omezující podmínky, 4. prosince 2018 7 Organizace predmetu Úvod do programování s omezujícími podmínkami Obsah přednášky Ukázkový príklad: sudoku Základní pojmy: omezení, ... Jak rešíme problémy s omezujícími podmínkami Priklady a aplikace Složitost a úplnost Hana Rudová, Omezující podmínky, 4. prosince 2018 9 Úvod do CP Sudoku: problém 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Přiřaď prázdným polím císla tak, že: císla odlišná na rádku, ve sloupci a v bloku Príklad prevzat z prednášky Ch.Schulte, University of Uppsala Hana Rudová, Omezující podmínky, 4. prosince 2018 10 Úvod do CP Sudoku: řádky 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Pr i rad' prázdným polím císla tak, že: císla odlišná na řádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 Úvod do CP Sudoku: sloupce 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Přiřaď prázdným polím císla tak, že: císla odlišná na řádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 12 Úvod do CP Sudoku: bloky 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Přiřaď prázdným polím císla tak, že: císla odlišná na řádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 13 Úvod do CP Propagace v bloku: vstup 8 6 3 Žádné pole v bloku nemůže obsahovat Čísla 3,6,8 Hana Rudová, Omezující podmínky, 4. prosince 2018 14 Úvod do CP Propagace v bloku: promazání hodnot 1,2,4,5,7,9 8 1,2,4,5,7,9 1,2,4,5,7,9 6 3 1,2,4,5,7,9 1,2,4,5,7,9 1,2,4,5,7,9 Žádné pole v bloku nemůže obsahovat Čísla 3,6,8 & propagace do dalších polí v bloku JS> Řádky a sloupce: podobně Hana Rudová, Omezující podmínky, 4. prosince 2018 15 Úvod do CP Propagace: jedno pole 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Odstranení císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 16 1,2,3,4,5,6,7,8,9 Úvod do CP Propagace: jedno pole a řádek 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Odstranení císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 17 1,3,5,6,7,8 Úvod do CP Propagace: jedno pole a sloupec 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Odstranení císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 18 1,3,6,7 Úvod do CP Propagace: jedno pole a blok 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 1,3,6 Odstranení císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 4. prosince 2018 19 Úvod do CP Iterativní propagace 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 & Iterování propagací pro řádky, sloupce, bloky Pokud stále zůstává více možností: prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 20 Úvod do CP Sudoku a programovaní s omezujícími podmínkami 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Promenné: pro každé pole J» mají hodnoty: císla & udržování množiny možných císel Omezení: vyjad rují odlišnosti relace mezi promennými Modelování: promenné, hodnoty, omezení Rešení: propagace, prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 21 Úvod do CP Omezení (constraint) -í* Dána -i* množina (doménových) proměnných Y = {yi,... ,^^1 J* konecná množina hodnot (doména) D = D1 u ... u Dk Omezení (podmínka) c na Y je podmnožina D1 x ... x Dk tj. relace ± omezuje hodnoty, kterých mohou promenné nabývat soucasne Hana Rudová, Omezující podmínky, 4. prosince 2018 22 Úvod do CP Omezení (constraint) Dána & množina (doménových) promenných Y = {yi,... ,yk} konecná množina hodnot (doména) D = D1 u ... u Dk Omezení (podmínka) c na Y je podmnožina D1 x ... x Dk tj. relace ± omezuje hodnoty, kterých mohou promenné nabývat soucasne Príklad: promenné: A,B & domény: {0,1} pro A {1,2} pro B omezení: A=B nebo (A,B) g {(0,1),(0,2),(1,2)} Hana Rudová, Omezující podmínky, 4. prosince 2018 22 Úvod do CP Omezení (constraint) -í* Dána -i* množina (doménových) promenných Y = {y^... ,^^1 J* konečná množina hodnot (doména) D = D1 u ... u Dk Omezení (podmínka) c na Y je podmnožina D1 x ... x Dk tj. relace ± omezuje hodnoty, kterých mohou proměnné nabývat současné M Pr íklad: promenné: A,B & domény: {0,1} pro A {1,2} pro B omezení: A=B nebo (A,B) g {(0,1),(0,2),(1,2)} & Omezení c definováno na promenných y1, ...yk je splneno, pokud pro hodnoty d1 g D1, ...dk g Dk platí (d1,... dk) g c J* p r íklad (pokračování): omezení splneno pro (0,1), (0, 2), (1,2), není splneno pro (1,1) Hana Rudová, Omezující podmínky, 4. prosince 2018 22 Úvod do CP Problém splňování podmínek (CSP) C Dána a koneCná množina promenných X = {xi,... ,xn} it koneCná množina hodnot (doména) D = D1 u ... u Dn it koneCná množina omezení C = {c1,cm} omezení je definováno na podmnožine X Problém splňování podmínek je trojice (X,D,C) (constraint satisfaction problem) Hana Rudová, Omezující podmínky, 4. prosince 2018 23 Úvod do CP Problém splňování podmínek (CSP) C Dána a konečná množina promenných X = {xi,... ,xn} it konečná množina hodnot (doména) D = D1 u ... u Dn it konečná množina omezení C = {c1,cm} omezení je definováno na podmnožině X Problém splnování podmínek je trojice (X,D,C) (constraint satisfaction problem) M Příklad: it promenne: A,B,C Jt domeny: A G {0,1} B 1 C G {0,1, 2} omezení: A=B B=C Hana Rudová, Omezující podmínky, 4. prosince 2018 23 Úvod do CP Řešení CSP ■v Řástecné ohodnocení (přiřazení) proměnných (d\,dk),k < n Jr některé proměnné mají přiřazenu hodnotu Úplné ohodnocení (přiřazení) promenných (d\,dn) %> všechny proměnné mají přiřazenu hodnotu Hana Rudová, Omezující podmínky, 4. prosince 2018 24 Úvod do CP Řešení CSP ■v ŘásteCné ohodnocení (prirazení) promenných (d1,dk),k < n Jr některé proměnné mají prirazenu hodnotu Úplné ohodnocení (prirazení) promenných (d1,dn) %> všechny promenné mají prirazenu hodnotu Řešení CSP Jt úplné ohodnocení promenných, které splnuje všechna omezení a (didn) g D1 x ... x Dn je rešení (X, D, C) pro každé a g C na xii,...xik platí (dii,...dik) g a Hana Rudová, Omezující podmínky, 4. prosince 2018 24 Úvod do CP Řešení CSP -i* CásteCné ohodnocení (prirazení) promenných (d1,dk),k < n Jr nekteré promenné mají přiřazenu hodnotu & Úplné ohodnocení (prirazení) promenných (d1,dn) it všechny promenné mají přiřazenu hodnotu & Řešení CSP it úplné ohodnocení promenných, které spinuje všechna omezení it (d1dn) g D1 x ... x Dn je rešení (X, D, C) pro každé a g C na xi1,...xik platí (di1,...dik) g a & Hledáme: jedno rešení nebo všechna rešení nebo optimální rešení vzhledem k úcelové funkci, tj. r ešíme optimalizacní problém s podmínkami (constraint optimization problem) Hana Rudová, Omezující podmínky, 4. prosince 2018 24 Úvod do CP Přístup CP k programování M Formulace daného problému pomocí omezení: modelování & Řešení vybrané reprezentace pomocí * doménove specifických metod s obecných metod Hana Rudová, Omezující podmínky, 4. prosince 2018 25 Úvod do CP Obecné metody Algoritmy propagace omezení (konzistenCní algoritmy) s umožnují odstranit nekonzistentní hodnoty z domén proměnných & zjednodušují problém a udržují ekvivalenci mezi puvodním a zjednodušeným problémem s používají se pro výpocet lokální konzistence & aproximují tak globální konzistenci A g (0,1}, B = 1, C g (0,1, 2}, A = B, A = C Hana Rudová, Omezující podmínky, 4. prosince 2018 26 Úvod do CP Obecné metody Algoritmy propagace omezení (konzistencní algoritmy) s umožnují odstranit nekonzistentní hodnoty z domén proměnných & zjednodušují problém a udržují ekvivalenci mezi puvodním a zjednodušeným problémem s používají se pro výpocet lokální konzistence & aproximují tak globální konzistenci A g (0,1}, B = 1, C G {0,1, 2}, A = B, A = C po propagaci: A = 0, B = 1, C g (1,2} Hana Rudová, Omezující podmínky, 4. prosince 2018 26 Úvod do CP Obecné metody Algoritmy propagace omezení (konzistenCní algoritmy) s umožňují odstranit nekonzistentní hodnoty z domén proměnných & zjednodušují problém a udržují ekvivalenci mezi puvodním a zjednodušeným problémem s používají se pro výpoCet lokální konzistence & aproximují tak globální konzistenci A g (0,1}, B = 1, C g (0,1, 2}, A = B, A = C po propagaci: A = 0, B = 1, C g (1,2} Prohledávací algoritmy a prohledávání stavového prostoru rešení -fc príklady: backtracking, metoda vetví a mezí Hana Rudová, Omezující podmínky, 4. prosince 2018 26 Úvod do CP Prohledávání: príklad Prohledávání pomocí větvení vytvoření podproblému s dodateCnou informací umožní další propagaci omezení X: {4,5}, Y: {4,5} X >=Y X=4 X=4 X = 4, Y = 4 X >=Y X = 5, Y: {4,5} X >=Y Hana Rudová, Omezující podmínky, 4. prosince 2018 27 Úvod do CP Doménove specifické metody C Specializované algoritmy & Nazývány r ešice omezení (constraint solvers) -í* Příklady: it program pro řešení systému lineárních rovnic it knihovny pro lineární programování ± implementace unifikacního algoritmu Hana Rudová, Omezující podmínky, 4. prosince 2018 28 Úvod do CP Doménové specifické metody C Specializované algoritmy & Nazývány rešiCe omezení (constraint solvers) JS> Príklady: a program pro rešení systému lineárních rovnic a knihovny pro lineární programování ± implementace unifikacního algoritmu JS> Programování s omezujícími podmínkami S> široký pojem zahrnující radu oblastí S lineární algebra, globální optimalizace, lineární a celocíselné programování, ... JS> Existence doménove specifických metod použití místo obecných metod hledání doménove specifických metod tak, aby mohly být použity místo obecných metod Hana Rudová, Omezující podmínky, 4. prosince 2018 28 Úvod do CP Algebrogram Prirad'te cifry 0, ... 9 písmenům S, E, N, D, M, O, R, Y tak, aby platilo: SEND + MORE MONEY mzná písmena mají prirazena různé cifry &> S a M nejsou 0 Jediné rešení: 9567 + 1085 10652 Hana Rudová, Omezující podmínky, 4. prosince 2018 29 Úvod do CP Algebrogram -í* Prirad'te cifry 0, ... 9 písmenům S, E, N, D, M, O, R, Y tak, aby platilo: SEND + MORE MONEY mzná písmena mají prirazena různé cifry a SaM nejsou 0 Jediné rešení: 9567 + 1085 10652 & Promenné: S,E,N,D,M,O,R,Y -* Domény: 1..9 pro S,M 0..9 pro E,N,D,O,R,Y Hana Rudová, Omezující podmínky, 4. prosince 2018 29 Úvod do CP Algebrogram: alternativy pro omezení rovnosti -í* 1 omezení rovnosti 1000*S + 100*E + 10*N + D SEND + 1000*M + 100*0 + 10*R + E + MORE = 10000*M + 1000*0 + 100*N + 10*E + Y MONEY Hana Rudová, Omezující podmínky, 4. prosince 2018 30 Úvod do CP Algebrogram: alternativy pro omezení rovnosti 1 omezení rovnosti 1000*S + 100*E + 10*N + D SEND + 1000*M + 100*O + 10*R + E + MORE 10000*M + 1000*O + 100*N + 10*E + Y MONEY -í* 5 omezení rovnosti použití „prenosových" proměnných P1,P2,P3,P4 s doménami 0..1 D + E = 10*P1 + Y, P1 + N + R = 10*P2 + E, P2 + E + O = 10*P3 + N, P3 + S + M = 10*P4 + O P4 M Hana Rudová, Omezující podmínky, 4. prosince 2018 30 Úvod do CP Algebřogřam: alternativy přo omezení nerovnosti -» 28 omezení neřovnosti: X = Y pro X,Y e {S,E,N,D,M,O,R,Y} Hana Rudová, Omezující podmínky, 4. prosince 2018 31 Úvod do CP Algebrogram: alternativy pro omezení nerovnosti M 28 omezení nerovnosti: X = Y pro X,Y g {S,E,N,D,M,O,R,Y} & 1 omezení pro nerovnost pro promenné x1,...,xn s doménami D1,... ,Dn: a11_different (x1f... ,xn) := {(d1,... ,dn) , di = dj pro i = j} Hana Růdová, Omezůjící podmínky, 4. prosince 2018 31 Úvod do CP Optimalizacní problém s podmínkami (COP) Problém splnování podmínek (X,D,C) Úcelová funkce obj : Sol — W Optimalizacní problém s podmínkami (constraint optimization problem) it nalezení rešení d pro (X,D, C) takové, že obj (d) je optimální optimální = maximální nebo minimální Hana Rudová, Omezující podmínky, 4. prosince 2018 32 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n p ředmětů různé velikosti a ceny. Vyberte takové p ř edmety, aby se vešly do batohů a jejich celková cena byla maximální. JS> Batoh velikosti m M Př edmety velikosti v\,...,vn a ceny ci,...,cn Hana Růdová, Omezující podmínky, 4. prosince 2018 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n predmetu mzné velikosti a ceny. Vyberte takové predmety, aby se vešly do batohu a jejich celková cena byla maximální. JS> Batoh velikosti m M Predmety velikosti v1,...,vn a ceny c1,...,cn £ Promenné: x1,...,xn Hana Rudová, Omezující podmínky, 4. prosince 2018 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n p r edmetu mzné velikosti a ceny. Vyberte takové p r edmety, aby se vešly do batohu a jejich celková cena byla maximální. JS> Batoh velikosti m M Pr edmety velikosti v\,...,vn a ceny ci,...,cn & Přomenné: x\,...,xn & Domény: 0..1 Hana Rudová, Omezující podmínky, 4. prosince 2018 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n p ř edmetů různé velikosti a ceny. Vyberte takové p r edmety, aby se vešly do batohů a jejich celková cena byla maximální. JS> Batoh velikosti m M Pr edmety velikosti v\,...,vn a ceny c\,...,cn & Proměnné: x\,...,xn & Domény: 0..1 n & Omezení: ^ vi.xi < m i=1 Hana Růdová, Omezůjící podmínky, 4. prosince 2018 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n predmetu mzné velikosti a ceny. Vyberte takové predmety, aby se vešly do batohu a jejich celková cena byla maximální. JS> Batoh velikosti m M Predmety velikosti v1,...,vn a ceny c1,...,cn £ Pramenné: x1,...,xn & Domény: 0..1 n & Omezení: ^ vi.xi < m i=1 n & Úcelová funkce: maximize ^ cixi i=1 Hana Rudová, Omezující podmínky, 4. prosince 2018 33 Úvod do CP Aplikace: přehled Operační výzkum optimalizační problémy a rozvrhování, plánování, alokace zdrojů Zpracování přirozeného jazyka -i- konstrukce parserů Počítačová grafika i> geometrické vztahy pri analýze sčény Databáze -fc obnovení/zajištení konzistence dat Molekulární biologie a DNA sekvenčování Hana Rudová, Omezující podmínky, 4. prosince 2018 34 Úvod do CP Príklad aplikace z MU: univerzitní rozvrhování rozvrhovací systém Unitime http://www.unitime.org International Timetabling Competition 2G19 co-organized by FI MU: https://www.itc2019.org Hana Rudová, Omezující podmínky, 4. prosince 2018 35 Úvod do CP Univerzitní rozvrhování: promenné a omezení Doménové promenné & cas výuky predmetu I: Timel, hodnoty: možné casy -í* místnost výuky predmetu I: Rooml, hodnoty: identifikátory místností Hana Rudová, Omezující podmínky, 4. prosince 2018 36 Úvod do CP Univerzitní rozvrhování: promenné a omezení Doménové promenné & cas výuky predmetu I: Timel, hodnoty: možné casy JS> místnost výuky predmetu I: Rooml, hodnoty: identifikátory místností Omezující podmínky JS> zakázaný cas: Timel = Prohibited & minimální velikost místnosti: Rooml > ConstSize it identifikátory místností usporádány podle velikosti -i- ConstSize: nejmenší identifikátor místnosti s velikostí Size Hana Rudová, Omezující podmínky, 4. prosince 2018 36 Úvod do CP Univerzitní rozvrhování: promenné a omezení Doménové promenné & cas výuky p redmetu I: Timel, hodnoty: možné casy -í* místnost výuky p r edmetu I: Rooml, hodnoty: identifikátory místností Omezující podmínky JS> zakázaný cas: Timel = Prohibited & minimální velikost místnosti: Rooml > ConstSize identifikátory místností uspo rádány podle velikosti -i- ConstSize: nejmenší identifikátor místnosti s velikostí Size v jedné místnosti v každém case nejvýše jeden p r edmet -i* jeden vyucující ucí nejvýše jeden p redmet v každém case Hana Rudová, Omezující podmínky, 4. prosince 2018 36 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizacní kritéria & výuka v preferovaných casech Jr cena za výuku predmetu I ve vybraném case: CostTimel a CostTime = CostTime1 + CostTime2 + ■ ■ ■ Hana Rudová, Omezující podmínky, 4. prosince 2018 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech Jr cena za výuku predmetu I ve vybraném Case: CostTimel a CostTime = CostTimel + CostTime2 + • • • výuka v preferovaných místnostech a cena za výuku predmetu I ve vybraném Case: CostRooml Jt CostRoom = CostRooml + CostRoom2 + ■ ■ ■ Hana Rudová, Omezující podmínky, 4. prosince 2018 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech Jr cena za výuku predmetu I ve vybraném case: CostTimel a CostTime = CostTimel + CostTime2 + • • • výuka v preferovaných místnostech a cena za výuku predmetu I ve vybraném case: CostRooml it CostRoom = CostRooml + CostRoom2 + • • • & dva predmety jednoho studenta by se nemely překrývat dva predmety I,J zároven navštevuje SIJ studentu a CostOverlap = ^ SIJ I,J:TimeI=TimeJ Hana Rudová, Omezující podmínky, 4. prosince 2018 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech Jr cena za výuku předmětu I ve vybraném case: CostTimel it CostTime = CostTimel + CostTime2 + • • • výuka v preferovaných místnostech it cena za výuku předmetu I ve vybraném Case: CostRooml it CostRoom = CostRooml + CostRoom2 + • • • & dva predmety jednoho studenta by se nemely překrývat dva předmety IJ zároven navštevuje SIJ studentu it CostOverlap = ^ SIJ I,J:TimeI=TimeJ JS> minimize (WTime * CostTime + WRoom * CostRoom + WOverlap * CostOverlap) Hana Rudová, Omezující podmínky, 4. prosince 2018 37 Úvod do CP Polynomiální a NP-úplné problémy Polynomiální problémy existuje algoritmus polynomiální složitosti pro rešení problému NP-úplné problémy a rešitelné nedeterminističkým polynomiálním algoritmem -fc potenčiální rešení lze ove r it v polynomiálním čase v nejhorším p rípade exponenčiální složitost (pokud neplatí P=NP) Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 38 Úvod do CP Složitost: polynomiální problémy Lineární rovnice nad reálnými císly J* promenné nad doménami z R, omezení: lineární rovnice Jt Gaussova eliminace Jt polynomiální složitost Hana Rudová, Omezující podmínky, 4. prosince 2018 39 Úvod do CP Složitost: polynomiální problémy Lineární rovnice nad reálnými císly J* promenné nad doménami z R, omezení: lineární rovnice & Gaussova eliminace Jt polynomiální složitost Lineární nerovnice nad reálnými císly Jt lineární programování, simplexová metoda a casto stací polynomiální složitost Hana Rudová, Omezující podmínky, 4. prosince 2018 39 Úvod do CP Složitost: NP-úplné problémy Boolean omezení 0/1 promenné a omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) príklad: promenné A,B, C, omezení (A v B), (C => A), CSP problém (A v B) a (C => A) Hana Rudová, Omezující podmínky, 4. prosince 2018 40 Úvod do CP Složitost: NP-úplné problémy Boolean omezení 0/1 proměnné & omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) p r íklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) J* problém splnitelnosti Boolean formule (SAT problém): NP-úplný & n promenných: 2n možností Hana Rudová, Omezující podmínky, 4. prosince 2018 40 Úvod do CP Složitost: NP-úplné problémy Boolean omezení 0/1 proměnné & omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) príklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) J* problém splnitelnosti Boolean formule (SAT problém): NP-úplný it n promenných: 2n možností ií> Omezení nad konečnými doménami it obecný CSP problém it problém splnitelnosti nad obecnými relacemi it NP-úplný problém it n promenných, d maximální velikost domény: dn možností Hana Rudová, Omezující podmínky, 4. prosince 2018 40 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy Jt úplný algoritmůs prozkoůmává množinů všech r ešení A neúplný algoritmůs: neprozkoůmává celoů množinů r ešení -L nevím jako možná odpoved', ziskem může být efektivita Jt p r íklad: neúplný polynomiální algoritmůs pro NP-úplný problém Hana Růdová, Omezůjící podmínky, 4. prosince 2018 41 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy A úplný algoritmus prozkoumává množinu všečh r ešení A neúplný algoritmus: neprozkoumává čelou množinu r ešení -L nevím jako možná odpoved', ziskem muže být efektivita p r íklad: neúplný polynomiální algoritmus pro NP-úplný problém JS> Složitost řešiCe Jť Gaussova eliminače (P), SAT r ešiče (NP), obečný CSP r ešič (NP) Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 41 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy Jt úplný algoritmus prozkoumává množinu všech r ešení Jt neúplný algoritmus: neprozkoumává celou množinu r ešení -L nevím jako možná odpoved', ziskem muže být efektivita Jt p r íklad: neúplný polynomiální algoritmus pro NP-úplný problém JS> Složitost rešice Jť Gaussova eliminace (P), SAT r ešice (NP), obecný CSP r ešic (NP) JS> Složitost algoritmů propagace omezení Jt vetšinou polynomiální neúplné algoritmy Hana Rudová, Omezující podmínky, 4. prosince 2018 41 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy Jt úplný algoritmůs prozkoůmává množinů všech r ešení A neúplný algoritmůs: neprozkoůmává celoů množinů r ešení -L nevím jako možná odpoved', ziskem může být efektivita Jt p r íklad: neúplný polynomiální algoritmůs pro NP-úplný problém JS> Složitost rešice Jť Gaůssova eliminace (P), SAT r ešice (NP), obecný CSP r ešic (NP) JS> Složitost algoritmů propagace omezení Jt vetšinoů polynomiální neúplné algoritmy & Složitost prohledávacích algoritmů -** úplné algoritmy, p ríklady: backtracking, generuj & testůj -i- neúplné algoritmy, neprohledávají celý prostor r ešení, p r íklad: omezení casů prohledávání Hana Růdová, Omezůjící podmínky, 4. prosince 2018 41 Úvod do CP Grafová reprezentace CSP & Reprezentace podmínek & intenzionální (matematická/logická formule) J* extenzionální (výcet k-tic kompatibilních hodnot, 0-1 matice) Hana Rudová, Omezující podmínky, 4. prosince 20l8 42 Úvod do CP Grafová reprezentace CSP Reprezentace podmínek Jt intenzionální (matematická/logická formule) J* extenzionální (výCet k-tic kompatibilních hodnot, 0-1 matice) Graf: vrcholy, hrany (hrana spojuje dva vrcholy) Hypergraf: vrcholy, hrany (hrana spojuje množinu vrcholU) Reprezentace CSP pomocí hypergrafu podmínek Jt vrchol = promenná, hyperhrana = podmínka Hana Rudová, Omezující podmínky, 4. prosince 2018 42 Úvod do CP Grafová reprezentace CSP Reprezentace podmínek & intenzionální (matematická/logická formule) J* extenzionální (výCet k-tic kompatibilních hodnot, 0-1 matice) Graf: vrcholy, hrany (hrana spojuje dva vrcholy) Hypergraf: vrcholy, hrany (hrana spojuje množinu vrcholU) Reprezentace CSP pomocí hypergrafu podmínek vrchol = promenná, hyperhrana = podmínka Cl Príklad promenné x1,...,x6 s doménou {0,1} omezení c1 : x1 + x2 + x6 = 1 c2: x1 - x3 + x4 = 1 c3 : x4 + x5 - x6 > 0 c4: x2 + x5 - x6 = 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 42 Úvod do CP Binární CSP -í* Binární CSP J* CSP, ve kterém jsou pouze binární podmínky & unární podmínky zakódovány do domény promenné & Graf podmínek pro binární CSP není nutné uvažovat hypergraf, stací graf (podmínka spojuje pouze dva vrcholy) JS> CSP lze transformovat na binární CSP & Ekvivalence CSP dva CSP problémy jsou ekvivalentní, pokud mají stejnou množinu rešení -í* Rozšírená ekvivalence CSP s> rešení problému lze mezi sebou „syntakticky" převést & napr: obecný CSP prevedeme na binární CSP a porovnáme tyto binární CSP Hana Rudová, Omezující podmínky, 4. prosince 2018 43 Úvod do CP Duální problém Duální problém: původním omezením odpovídají nové duální promenné J* promenné: k-ární podmínku ci prevedeme na duální promennou vi s doménou obsahující konzistentní k-tice omezení: pro každou dvojici podmínek ci a Cj sdílející promenné zavedeme binární podmínku Rij mezi vi a vj omezující duální promenné na k-tice, ve kterých mají sdílené promenné stejnou hodnotu P ríklad J> promenné x1,...,x6 s doménou {0,1} J* omezení c1 : x1 + x2 + x6 = 1 ...v1 c2: x1 - x3 + x4 = 1 ...v2 c3 : x4 + x5 - x6 > 0...v3 c4: x2 + x5 - x6 = 0 ...v4 (0,0,1), (0,1,0), R21 & R33 (1,0,0) R11 ^SSS\SR33 (0,0,1), (1,0,0), (1,1,1) R31 R22 & R33 Hana Rudová, Omezující podmínky, 4. prosince 2018 44 Úvod do CP Použití binarizace -í* Konstrukče duálního problému a jedna z možnýčh metod binarizače & Výhody binarizače -fc získáváme unifikovaný tvar CSP problému ä- rada algoritmu navržena pro binární CSP pro výukové účely je vysvetlení na binárníčh CSP vhodné algoritmy jsou p r ehlednejší a jednodušší na počhopení verze pro nebinární podmínkyje často p rímým rozšírením obečné verze a tyto algoritmy jsou i aplikovatelné s pomočí binarizače na obečné CSP -í* Ale: značné zvetšení velikosti problému Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 45 Úvod do CP Použití binarizace -í* Konstrukce duálního problému -i* jedna z možných metod binarizace -i* Výhody binarizace Jt získáváme unifikovaný tvar CSP problému Jt rada algoritmu navržena pro binární CSP Jt pro výukové úcely je vysvetlení na binárních CSP vhodné algoritmy jsou prehlednejší a jednodušší na pochopení verze pro nebinární podmínkyje casto prímým rozšírením obecné verze a tyto algoritmy jsou i aplikovatelné s pomocí binarizace na obecné CSP -í* Ale: znacné zvetšení velikosti problému & Nebinární podmínky a složitejší propagacní algoritmy J* lze využít jejich sémantiky pro lepší propagaci -k príklad: all_different vs. množina binárních nerovností Hana Rudová, Omezující podmínky, 4. prosince 2018 45 Úvod do CP Hranová konzistence Propagace omezení Príklad: J* promenné: A,B,C domény: A e {0,1} B=0 C e {0,1, 2, 3} omezení: A = B, B = C, A = C => A=1, B=0, C e {2, 3} Algoritmy pro propagaci omezení (konzistencní algoritmy) Jt umožnují odstranit nekonzistentní hodnoty z domén promenných * zjednodušují problém s> udržují ekvivalenci mezi puvodním a zjednodušeným problémem Hana Rudová, Omezující podmínky, 4. prosince 2018 47 Hranová konzistence Vrcholová konzistence -í* Vrcholová konzistence (node consistency) NC s unární podmínky p r evedeme do domén promenných M Vrchol reprezentující Vi je vrcholove konzistentní: a každá hodnota z aktuální domény promenné Vi splnuje všechny unární podmínky s promennou Vi Hana Rudová, Omezující podmínky, 4. prosince 2018 48 Hranová konzistence Vrcholová konzistence Vrcholová konzistence (node consistency) NC s unární podmínky prevedeme do domén proměnných Vrchol reprezentující Vi je vrcholove konzistentní: a každá hodnota z aktuální domény proměnné Vi splnuje všechny unární podmínky s promennou Vi CSP problém je vrcholove konzistentní: *> každý jeho vrchol je vrcholove konzistentní Hana Rudová, Omezující podmínky, 4. prosince 2018 48 Hranová konzistence Hranová konzistence (Arc Consistency AC) JS> Pouze pro binární CSP (až její rozšírení jsou pro nebinární CSP) Jt podmínka odpovídá hrane v grafu podmínek Jt více podmínek na jedné hrane p r evedeme do jedné podmínky & Hrana (Ví,Vj) je hranové konzistentní, práve když pro každou hodnotu x z aktuální domény Dí existuje hodnota y v Dj tak, že ohodnocení [Ví = x,Vj = y] spinuje všechny binární podmínky nad Ví,Vj. Hana Rudová, Omezující podmínky, 4. prosince 2018 49 Hranová konzistence Hranová konzistence (Arc Consistency AC) Pouze pro binární CSP (až její rozšírení jsou pro nebinární CSP) -fc podmínka odpovídá hrane v grafu podmínek víče podmínek na jedné hrane p r evedeme do jedné podmínky Hrana (Ví,Vj) je hranove konzistentní, práve když pro každou hodnotu x z aktuální domény Dí existuje hodnota y v Dj tak, že ohodnočení [Ví = x,Vj = y] splnuje všechny binární podmínky nad Ví,Vj. Hranová konzistenče je smerová konzistenče hrany (Ví,Vj) nezaručuje konzistenči hrany (Vj,Ví) A I 3..7 LA Jak udelat hranu (VuVj) hranove konzistentní? -i* Z domény Dt vyradím takové hodnoty x, které nejsou konzistentní s aktuální doménou Dj (pro x neexistuje žádná hodnota y v Dj tak, aby ohodnocení Vt = x a Vj = y splnovalo všechny binární podmínky mezi Vt a Vj) & procedure revise((t, j)) Deleted := false for V x g Dt do if neexistuje y g Dj takové, že (x,y) je konzistentní then Dt := Dt - {x} Deleted := true V in 2..4, V2 in 2..4, V < V2 end if revise((1,2)) smaže 4 z Di return Deleted D2 se nezmění end revise Hana Rudová, Omezující podmínky, 4. prosince 2018 50 Hranová konzistence Algoritmus revize hrany JS> Jak udeiat hranu (Ví,Vj) hranove konzistentní? -i* Z domény Dí vyradím takové hodnoty x, které nejsou konzistentní s aktuální doménou Dj (pro x neexistuje žádná hodnota y v Dj tak, aby ohodnocení Ví = x a Vj = y spinovalo všechny binární podmínky mezi Ví a Vj) & procedure revise((í,j)) Deleted := false for V x g Dí do if neexistuje y g Dj takové, že (x,y) je konzistentní then Dí := Dí - {x} Deleted := true Vi in 2..4, V2 in 2..4, Vi již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény procedure AC-1(G) repeat Changed := false for V hranu (t, j) g G do Changed := revise((t,j)) or Changed until not(Changed) end AC-1 Hana Rudová, Omezující podmínky, 4. prosince 2018 51 Hranová konzistence Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany A již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 => AB, BA, BC, CB, Hana Rudová, Omezující podmínky, 4. prosince 2018 51 Hranová konzistence Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany A již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 => AB, BA, BC, CB, AB, BA, BC, CB, Hana Rudová, Omezující podmínky, 4. prosince 2018 51 Hranová konzistence Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany A již zrevidované hrany opět nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i, j)) or Changed until not(Changed) end AC-1 => AB, BA, BC, CB, AB, BA, BC, CB, AB, BA, BC, CB Hana Rudová, Omezující podmínky, 4. prosince 2018 51 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) e G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 JS> k maximální velikost domény, e poCet hran, n poCet proměnných Hana Rudová, Omezující podmínky, 4. prosince 2018 52 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) e G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 JS> k maximální velikost domény, e poCet hran, n poCet proměnných M Složitost O(enk3) Hana Rudová, Omezující podmínky, 4. prosince 2018 52 Hranová konzistence Složitost AC-1 procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 -í* k maximální velikost domény, e pocet hran, n pocet promenných M Složitost O(enk3) it cyklus pres všechny hrany O(e) Hana Rudová, Omezující podmínky, 4. prosince 2018 52 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 -í* k maximální velikost domény, e pocet hran, n pocet proměnných M Složitost O(enk3) it cyklus p r es všechny hrany O(e) it revise O(k2) Hana Rudová, Omezující podmínky, 4. prosince 2018 52 Hranová konzistence Složitost AC-1 procedure AC-1(G) repeat Changed := false for V hranu (í, j) g G do Changed := revise((í,j)) or Changed until not(Changed) end AC-1 -í* k maximální velikost domény, e pocet hran, n pocet promenných M Složitost O(enk3) s> cyklus p r es všechny hrany O(e) & revise O(k2) Jr jeden cyklus smaže (v nejhorším p rípade) práve jednu hodnotu z domény promenné, celkem nk hodnot (každá promenná má v doméne až k hodnot) => O(nk) Hana Rudová, Omezující podmínky, 4. prosince 2018 52 Hranová konzistence Neefektivita AC-1 I když zmenšíme jedinou doménu, provádí se revize všečh hran. Tyto hrany ale revizí nemusí být vubeč zasaženy. Jaké hrany tedy revidovat po zmenšení domény? Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 53 Hranová konzistenče Neefektivita AC-1 I když zmenšíme jedinou doménu, provádí se revize všečh hran. Tyto hrany ale revizí nemusí být vubeč zasaženy. Jaké hrany tedy revidovat po zmenšení domény? ty, jejičhž konzistenče muže být zmenšením domény promenné narušena a jsou to hrany (í,k), které vedou do promenné Vk se zmenšenou doménou (il ,k) (k,m) V príklad: Vk < Vm, Vk in 1..10, Vm in 2..11, smazání 11 z Vm, tj. Vk in 1..10, Vm in 2..10, dusledek: doména Vk se zmení, smaže se 10, tj. Vk in 1..9, Vm in 2..10, a ted' reaguji na zmenu Vk revizemi (Vi,Vk): je tedy zbytecné delat revizi (Vm,Vk) Hana Rudová, Omezující podmínky, 4. prosince 2018 53 Hranová konzistence Algoritmus AC-3 Opakování revizí mužeme delat pomocí fronty stací jediná fronta hran, které je potreba (znova) zrevidovat pridáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V < -> V k m Hana Rudová, Omezující podmínky, 4. prosince 2018 54 Hranová konzistence Algoritmus AC-3 Opakování revizí mužeme delat pomocí fronty Jt stací jediná fronta hran, které je potr eba (znova) zrevidovat p r idáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := ) I ) e hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k,m)) then Q := Q u {(i,k) e hrany(G), i = k, i = m} end while end AC-3 % seznam hran pro revizi % p r idání pouze hran, které % dosud nejsou ve fronte Hana Rudová, Omezující podmínky, 4. prosince 2018 54 Hranová konzistence Algoritmus AC-3 Opakování revizí mužeme delat pomocí fronty Jt stací jediná fronta hran, které je potreba (znova) zrevidovat pridáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := {(i,j) I (i,j) g hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k,m)) then Q := Q u {(i, k) g hrany(G), i = k, i = m} end while A každé omezení může být ve fronte maximálne 2k krát => O(k) jakmile je omezení p r idáno do fronty, doména (k) jedné z jeho dvoů promenných (2) byla redukována alespon o jednů hodnotu & Technika AC-3 je dnes asi nejpoůžívánejší, ale stále není optimální Hana Růdová, Omezující podmínky, 4. prosince 2018 55 Hranová konzistence Podpora hodnoty AC-3: pri každé revizi hrany testujeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakujeme pri každé další revizi hrany. Hana Rudová, Omezující podmínky, 4. prosince 2018 56 Hranová konzistence Podpora hodnoty AC-3: pri každé revizi hrany testujeme množství dvojič hodnot na konzistenči vzhledem k podmínče. Tyto testy znova opakujeme pri každé další revizi hrany. Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 56 Hranová konzistenče Podpora hodnoty AC-3: pri každé revizi hrany testujeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakujeme pri každé další revizi hrany. Jt Pri revizi hrany (V2,V\) vyradíme hodnotu a z domény promenné V2. -i- Nyní musíme prozkoumat doménu V3, zda nekterá z hodnot a, b, c, d neztratila svoji podporu ve V2. Hana Rudová, Omezující podmínky, 4. prosince 2018 56 Hranová konzistence Podpora hodnoty AC-3: p r i každé revizi hrany testujeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakujeme p r i každé další revizi hrany. Jt Pr i revizi hrany (V2,V\) vyradíme hodnotu a z domény promenné V2. -i- Nyní musíme prozkoumat doménu V3, zda nekterá z hodnot a, b, c, d neztratila svoji podporu ve V2. Hodnoty a, b, c není tr eba znova kontrolovat <= mají ve V2 také jinou podporu než a. Hana Rudová, Omezující podmínky, 4. prosince 2018 56 Hranová konzistence Podpora hodnoty AC-3: pri každé revizi hrany testujeme množství dvojič hodnot na konzistenči vzhledem k podmínče. Tyto testy znova opakujeme pri každé další revizi hrany. A Pri revizi hrany (V2,V1) vyradíme hodnotu a z domény promenné V2. -i- Nyní musíme prozkoumat doménu V3, zda nekterá z hodnot a, b, c, d neztratila svoji podporu ve V2. -i- Hodnoty a, b, c není treba znova kontrolovat <= mají ve V2 také jinou podporu než a. Podpora (support) pro a g Dí = {{j, b) | b g Dj, (a, b) g cíj} a g D2 má podpory {{3, a), {3, b), {3, d)} J* d g D3 má pouze jedinou podporu {{2, a)} b g D2 má podpory {{1, a), {1, c), {3, a), {3, c)} JS> Podpory spočítáme jen jednou. Pri opakovanýčh revizíčhje budeme používat. Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 56 Hranová konzistenče Algoritmus na inicializaci podpor iS* Udržujeme seznam hodnot, které sami podporujeme (víme komu ríct, když zmizíme). Sjb: množina dvojic (i, a), pro které je (j, b) podporou JS> Udržujeme pocet vlastních podpor (víme, co nám chybí). counter[(i, j), a]: pocet podpor, které má hodnota a g Di u promenné Vj procedure initialize(G) Q := {}, S := {} // vyprázdnení datových struktur for each (Vi,Vj) g hrany(G) do for each a g Di do total := 0 for each b g Dj do if (a,b) konzistentní vzhledem k cij then total := total+1 Sj,b := Sj,b u {(i, a)} counter[(i,j),a] := total if counter[(i,j),a] = 0 then smaž a z Di Q := Q u {(i,a)} return Q //Q je fronta se smazanými hodnotami Hana Rudová, Omezující podmínky, 4. prosince 2018 57 Hranová konzistence Aktualizace podpor během výpočtu Situace po zpracování hrany (Ví,Vj) algoritmem initialize Hana Rudová, Omezující podmínky, 4. prosince 2018 58 Hranová konzistence Aktualizace podpor behem výpočtu Situace po zpracování hrany (Vi,Vj) algoritmem initialize Využití struktur s podporami: 1. Předpokládejme, že b3 je vyřazena z domény Vj. 2. Zjistíme v Sjíb3, pro které hodnoty je b3 podporou (tj. < i, a2), {i, a3>). 3. Snížíme counter u techto hodnot (odstraníme jim jednu podporu). 4. Pokud je nekterý counter vynulován (a3), potom p ríslušnou hodnotu vyr adíme z domény a pokracujeme s ní od kroku (1). Hana Rudová, Omezující podmínky, 4. prosince 2018 58 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j,b) g Q for each (i, a) g Sjbb do counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] = 0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} Hana Rudová, Omezující podmínky, 4. prosince 2018 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each (i, a) g Sjbb do counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] = 0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} -í* Složitost O(ek2) => algoritmus optimální v nejhorším prípade & složitost initialize Hana Rudová, Omezující podmínky, 4. prosince 2018 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each (i, a) g Sjbb do counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] = 0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} -í* Složitost O(ek2) => algoritmus optimální v nejhorším prípade Jt složitost initialize O(ek2) (Vi,Vj) g hrany(G), a g Di, b g Dj Jt složitost while cyklu Hana Rudová, Omezující podmínky, 4. prosince 2018 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each (i, a) g Sjbb do counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] =0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} -í* Složitost O(ek2) => algoritmus optimální v nejhorším prípade složitost initialize O(ek2) (Vi,Vj) g hrany(G), a g Di, b g Dj J* složitost while cyklu O(ek2): postupne musím odebrat všechny podpory a tech je O(ek2) Hana Rudová, Omezující podmínky, 4. prosince 2018 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j,b) eQ for each (i,a) e Sjbb do JS> Složitost O(ek2) => algoritmus optimální v nejhorším p rípade Jt složitost initialize O(ek2) <^= (Ví,Vj) g hrany(G), a g Dí, b g Dj J* složitost while cyklu O(ek2): postupne musím odebrat všechny podpory a tech je O(ek2) M Pamet'ová nárocnost, není nejlepší v prumerném p rípade (inicializace zustává) counter[(í,j),a] := counter[(í,j),a] - 1 if (counter[(í, j),a] =0) a (a g Dí) then smaž a z Dí Q := Q u {(í,a>} Hana Rudová, Omezující podmínky, 4. prosince 2018 59 Hranová konzistence Další AC algoritmy & Existuje rada dalších algoritmu pro zajištení hranové konzistence AC-5, AC-6, AC-7, ... & AC-6 (Bessiěre, Cordier) -i* zlepšuje pamet'ovou nárocnost a prumerný ccas AC-4 -fc drží si pouze jednu podporu, další podpory hledá až pri ztráte aktuální podpory & AC-3.1: AC-3 hledá podpory vždy od zacátku, jak to vylepšit? JS> AC-2001: AC-3 s frontou proměnných místo fronty omezení C Porovnání: J* AC-3 není (teoreticky) optimální -i- AC-4 je (teoreticky) optimální, ale (prakticky) pomalý -fc AC-6/7jsou (prakticky) rychlejší než AC-4, ale složité -i* AC-2001: v praxi je casté využití fronty promenných Hana Rudová, Omezující podmínky, 4. prosince 2018 60 Hranová konzistence AC-B.1: optimální algoritmus AC-B JS> Co je na AC-3 neefektivní? hledání podpor v REVISE, které vždy začíná od nuly! if „neexistuje y g Dj takové, že (x,y) je konzistentní" then AC-3.1 (Zhang, Yap) J* beh stejný jako u AC-3 -i- pro každou hodnotu si pamatuje poslední nalezenou podporu (last) v každém smeru a hledání začíná u ní procedure EXIST((i,x),j) y := last((i,x),j) if y g Dj then return true while y := next(y,Dj) a y = nil do if (x,y) g dj then % citj omezení s proměnými i, j last((i,x),j) := y return true return false Hana Rudová, Omezující podmínky, 4. prosince 2018 61 Hranová konzistence AC-2001: jiný optimální algoritmus AC-3 procedure AC-2001(G) Používá verzi AC-3 s frontou proměnných Q := {i | i g vrcholy (G)} % seznam vrcholů pro revizi while neprazdna(Q) do vyber a smaž j z Q for Vi g vrcholy (G) takové, že (i, j) g hr any (G) do if REVISE2001(i, j) then if Di = 0 then return fail Q := Q u {i} return true Hana Rudová, Omezující podmínky, 4. prosince 2018 62 Hranová konzistence AC-2001: jiný optimální algoritmus AC-3 procedure AC-2001(G) Používá verzi AC-3 s frontou promenných Q := {i | i g vrcholy (G)} % seznam vrcholů pro revizi while neprazdna(Q) do vyber a smaž j z Q for Vi g vrcholy (G) takové, že (i, j) g hr any (G) do if REVISE2001(i, j) then if Di = 0 then return fail Q := Q u {i} return true Algoritmus fakticky pracuje s rozdílovými procedure REVISE2001(i, j) množinami, tj. pro každou promennou DELETED := false si pamatuje, jaké hodnoty byly smazány for V x g Di do z domény od poslední revize if last ((i, x), j) G Dj then (podobne jako AC-3.1) if 3y g Dj a y > las t ((i, x), j) a (x,y) g citj then last((i,x),j) := y else smaž x z Di; DELETED := true return DELETED Hana Rudová, Omezující podmínky, 4. prosince 2018 62 Hranová konzistence Je hranová konzistence dostatečná (úplná)? C Použitím AC odstraníme mnoho nekompatibilních hodnot a Dostaneme potom rešení problému? NE %> Víme alespon zda rešení existuje? NE Hana Rudová, Omezující podmínky, 4. prosince 2018 63 Hranová konzistence Je hranová konzistence dostatečná (úplná)? Použitím AC odstraníme mnoho nekompatibilních hodnot a Dostaneme potom rešení problému? NE %> Víme alespon zda r ešení existuje? NE X,Y,Z e{1, 2}, X = Y, Y = Z, Z = X *> hranove konzistentní Jt nemá žádné r ešení Hana Rudová, Omezující podmínky, 4. prosince 2018 63 Hranová konzistence Je hranová konzistence dostatečná (úplná)? Použitím AC odstraníme mnoho nekompatibilních hodnot a Dostaneme potom rešení problému? NE %> Víme alespon zda r ešení existuje? NE X,Y,Z e{1, 2}, X = Y, Y = Z, Z = X *> hranove konzistentní s> nemá žádné r ešení Jaký je tedy význam AC? a nekdydár ešení p rímo nejaká doména se vyprázdní ^ rešení neexistuje všechny domény jsou jednoprvkové => máme r ešení Jt v obecném p rípade se alespon zmenší prohledávaný prostor Hana Rudová, Omezující podmínky, 4. prosince 2018 63 Hranová konzistence Konzistence po cestě Konzistence po ceste (PC path consistency) Ji Příklad: X, Y, Z g {1, 2}, X = Y, Y ± Z, Z = X & Jak posílit konzistenci? Budeme se zabývat několika podmínkami najednou. JS> Cesta (V0, ..., Vm) je konzistentní práve tehdy, když pro každou dvojici hodnot x g D0 a y g Dm spinující binární podmínky na hrane V0, Vm existuje ohodnocení promenných V1,...Vm-1 takové, že všechny binární podmínky mezi sousedy Vj, Vj+1 jsou splneny. CSPje konzistentní po ceste, práve když jsou všechny cesty konzistentní. Hana Rudová, Omezující podmínky, 4. prosince 2018 65 Konzistence po ceste Konzistence po ceste (PC path consistency) Ji Příklad: X, Y, Z g {1, 2}, X = Y, Y = Z, Z = X & Jak posílit konzistenci? Budeme se zabývat několika podmínkami najednou. hodnot x g Do a y g Dm spinující binární podmínky na hrane V0, Vm existuje ohodnocení promenných V1,...Vm-1 takové, že všechny binární podmínky mezi sousedy Vj, Vj+1 jsou splneny. CSPje konzistentní po ceste, práve když jsou všechny cesty konzistentní. -í* Definice PC nezarucuje, že jsou splneny všechny podmínky nad vrcholy cesty, zabývá se pouze podmínkami mezi sousedy V2 V4 • • • Vj V3 Hana Rudová, Omezující podmínky, 4. prosince 2018 65 Konzistence po ceste PC a cesty délky 2 JS> Zjišťování konzistence všech cest není efektivní -i* Stací overit konzistenci cest délky 2 & Veta: CSP je PC práve tehdy, když každá cesta délky 2 je PC. Hana Rudová, Omezující podmínky, 4. prosince 2018 66 Konzistence po ceste PC a cesty délky 2 JS> Zjišťování konzistence všech cest není efektivní -i* Stací overit konzistenci cest délky 2 & Veta: CSP je PC práve tehdy, když každá cesta délky 2 je PC. Dukaz:l)PC = cesty délky 2 jsou PC 2) cesty délky 2 jsou PC == Vn cesty délky n jsou PC == PC indukcí podle délky cesty a) n = 2 platí triviálne b) n + 1 (za predpokladu, že platí pro n) i) vezmeme libovolných n + 2 vrcholu V0,V1,...,Vn+1 ii) vezmeme libovolné dve kompatibilní hodnoty x0 e D0 a xn+1 e (kompatibilní = splnující všechny bin.podmínky mezi x0 a xn+1) iii) podle a) jsou všechny cesty délky 2 PC, a tedy i V0, Vn, Vn+1 je PC najdeme tedy xn e Dn tak, že (x0,xn) a (xn,xn+1) jsou konzistentní iv) podle indukcního kroku najdeme zbylé hodnoty na ceste V0,V1,...,Vn Hana Rudová, Omezující podmínky, 4. prosince 2018 66 Konzistence po ceste PC a cesty délky 2 JS> Zjišťování konzistence všech cest není efektivní -i* Stací overit konzistenci cest délky 2 & Veta: CSP je PC práve tehdy, když každá cesta délky 2 je PC. Dukaz:1)PC => cesty délky 2 jsou PC 2) cesty délky 2 jsou PC == Vn cesty délky n jsou PC == PC indukcí podle délky cesty a) n = 2 platí triviálne b) n + 1 (za predpokladu, že platí pro n) i) vezmeme libovolných n + 2 vrcholů Vo,V1,...,Vn+1 ii) vezmeme libovolné dve kompatibilní hodnoty x0 e D0 a xn+1 e (kompatibilní = splňující všechny bin.podmínky mezi x0 a xn+1) iii) podle a) jsou všechny cesty délky 2 PC, a tedy i V0, Vn, Vn+1 je PC najdeme tedy xn e Dn tak, že (x0,xn) a (xn,xn+1) jsou konzistentní iv) podle indukcního kroku najdeme zbylé hodnoty na ceste V0,V1,...,Vn M Definici PC lze tedy upravit tak, že vyžadujeme pouze konzistenci cest délky 2 Hana Rudová, Omezující podmínky, 4. prosince 2018 66 Konzistence po ceste Vztah PC a AC C PC == AC a pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j Hana Rudová, Omezující podmínky, 4. prosince 2018 67 Konzistence po ceste Vztah PC a AC C PC == AC a pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j M AC = PC príklad: X, Y, Z g {1, 2}, X = Y, Y = Z, Z = X je AC, ale není PC, X=0, Y=1 nelze rozšírít po ceste (X,Z,Y) Hana Rudová, Omezující podmínky, 4. prosince 2018 67 Konzistence po ceste Vztah PC a AC C PC == AC a pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j M AC = PC p ríklad: X, Y, Z e {1, 2}, X = Y, Y = Z, Z = X je AC, ale není PC, X=0, Y=1 nelze rozšír ít po ceste (X,Z,Y) JS> AC vyrazuje nekompatibilní prvky z domény promenných. Co delá PC? a PC vyr azuje dvojice hodnot Jt PC si pamatuje podmínky explicitne PC si pamatuje, které dvojice hodnot jsou v relaci a PC delá všechny relace nad dvojicemi implicitní (A A+1 Jak udelat každou cestu z Vi do Vj p r es Vm konzistentní? S> Pro dvojici promenných Vi a Vj aktualizuji prvky relace Rij J* Vyradím dvojici (a, b) z Rij, pokud neexistuje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj Hana Rudová, Omezující podmínky, 4. prosince 2018 69 Konzistence po ceste Algoritmus revize cesty JS> Jak udělat každou cestu z Vi do Vj pres Vm konzistentní? S* Pro dvojici proměnných Vi a Vj aktualizuji prvky relace Rij -i* Vyradím dvojici (a, b) z Rij, pokud neexistuje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj & procedure revise-3(i,m,j) Deleted := false for V (a, b) g Rij do if neexistuje c g Dm takové, že (a,c) g Rim a (c,b) g Rmj-then smaž (a,b) z Rij- Deleted := true Vi, V2 g (a,b), V3 g (a,b,c), Vi = V2V2 = V3, Vi = V3 return Deleted revise-3(1,2,3) (V1,V3) :aa ab ac end revise-3 ba bb bc pozor: aa bb nejsou už v relaci R13 Hana Rudová, Omezující podmínky, 4. prosince 2018 69 Konzistence po ceste Algoritmus revize cesty JS> Jak udelat každou cestu z Vi do Vj p r es Vm konzistentní? it Pro dvojici promenných Vi a Vj aktualizuji prvky relace Rij it Vyradím dvojici (a, b) z Rij, pokud neexistuje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj & procedure revise-3(i,m,j) Deleted := false for V (a, b) g Rij do if neexistuje c g Dm takové, že (a,c) g Rim a (c,b) g Rmj then smaž (a,b) z Rij Deleted := true Vi, V2 g (a,b), V3 g (a,b,c), Vi = V2,V2 = V3, Vi = V3 return Deleted revise-3(1,2,3) (V1,V3) :aa ab ac end revise-3 ba bb bc pozor: aa bb nejsou už v relaci R13 JS> Složitost O(k3) (k maximální velikost domény) cyklus pro každou dvojici (a, b): O (k2), vnit r ní cyklus p r es c g Dj: O (k) Hana Rudová, Omezující podmínky, 4. prosince 2018 69 Konzistence po ceste Algoritmus PC-1 JS> Jak udelat CSP konzistentní po ceste? Provedeme revizi každé cesty délky 2 -í* Revize cesty odstraní dvojice => již zrevidované cesty opet nekonzistentní -í* Revize cesty opakujeme dokud jsou nejaké dvojice smazány C- Princip je podobný jako u AC-1 & Pr ed spuštením algoritmu nutno inicializovat relace Rij pomocí existujících binárních (i unárních) podmínek & proceduře PC-1(G) repeat Changed := false for m := 1 to n for i := 1 to n for j := 1 to n Changed := revise-3(i,m, j) or Changed until not(Changed) end PC-1 Hana Rudová, Omezující podmínky, 4. prosince 2018 70 Konzistence po ceste Složitost algoritmu PC-1 B Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 čykly pro trojiče hodnot O(n3) ^ revise-3 O(k3) ^ O(n2k2) počet opakování repeat čyklu <= jeden čyklus smaže (v nejhorším prípade) práve jednu dvojiči hodnot čelkem n2k2 hodnot (n2 dvojič promennýčh, k2 dvojič hodnot pro každou dvojiči promennýčh) Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 71 Konzistenče po česte Složitost algoritmu PC-1 B Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 cykly pro trojice hodnot O(n3) <= revise-3 O(k3) <= O(n2k2) pocet opakování repeat cyklu <= jeden cyklus smaže (v nejhorším prípade) práve jednu dvojici hodnot celkem n2k2 hodnot (n2 dvojic promenných, k2 dvojic hodnot pro každou dvojici promenných) M Neefektivita PC-1 pri revizi stací kontrolovat jen zasažené cesty podobne jako pro PC-1 Hana Rudová, Omezující podmínky, 4. prosince 2018 71 Konzistence po ceste Složitost algoritmu PC-1 B Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 cykly pro trojice hodnot O(n3) <= revise-3 O(k3) <= O(n2k2) pocet opakování repeat cyklu <= jeden cyklus smaže (v nejhorším p rípade) práve jednu dvojici hodnot celkem n2k2 hodnot (n2 dvojic promenných, k2 dvojic hodnot pro každou dvojici promenných) M Neefektivita PC-1 & cesty stací brát pouze s jednou orientací ... Rij je totéž co Rji p r íklad: Vi,V2 e {a,b},V3 e {a,b,c },VX = V2,V2 = V,3 Vi = V3 důsledek revise-3(1, 2, 3) a revise-3(3,2,1) je totožný <= ke každé dvojici hodnot z V1,V3 (V3,V1) hledám kompatibilní hodnotu z V2 p r i revizi stací kontrolovat jen zasažené cesty podobne jako pro PC-1 Hana Rudová, Omezující podmínky, 4. prosince 2018 71 Konzistence po ceste Algoritmus PC-2 C Cesty beru pouze s jednou orientací -i- aktualizuji pouze jednu z Rij, Rji M Do fronty dávám pouze zasažené cesty -i- podobná modifikace jako AC-3 S> revise-3(i, m, j) mení Rij, stací tedy aktualizovat Rli pres j a Rj pres i Hana Rudová, Omezující podmínky, 4. prosince 2018 72 Konzistence po ceste Algoritmus PC-2 C Cesty beru pouze s jednou orientací -i- aktualizuji pouze jednu z Rij, Rji M Do fronty dávám pouze zasažené cesty -i- podobná modifikace jako AC-3 S> revise-3(i, m, j) mení Rij, staCí tedy aktualizovat Rli pres j a Rlj pres i & Pred spustením algoritmu -fc inicializovat relace Rij pomocí existujících binárních (i unárních) podmínek & proceduře PC-2(G) Q := {(i,m,j) | 1 < i O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu Jr celkem n3 trojic (i, mj) =^> O(n3) a revise-3 O(k3) Hana Rudová, Omezující podmínky, 4. prosince 2018 73 Konzistence po ceste Složitost algoritmu PC-2 C Složitost O(n3k5) J» každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) p r idáno do fronty, Rij bylo redukováno alespon o jednu hodnotu Jr celkem n3 trojic (i, m,j) => O(n3) a revise-3 O(k3) & Algoritmus není optimální podobne jako AC-3 existuje algoritmus PC-4 založen na pocítání podpor a složitost PC-4 je O(n3k3), což už je optimální Hana Rudová, Omezující podmínky, 4. prosince 2018 73 Konzistence po ceste Složitost algoritmu PC-2 C Složitost O(n3k5) J» každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu Jr čelkem n3 trojič (i,m,j) => O(n3) a revise-3 O(k3) ii> Algoritmus není optimální podobne jako AC-3 existuje algoritmus PC-4 založen na počítání podpor a složitost PC-4 je O(n3k3), čož už je optimální C Cvičení: rešte následujíčí problém pomočí PC-2 algoritmu V1 G {0,1, 2, 3},V2 G {0,1},V3 G {1, 2} V3 = V1 + 1, V2 = V3, V1 = V2 Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 73 Konzistenče po česte Složitost algoritmu PC-2 C Složitost O(n3k5) J» každé (i,m,j) může být ve fronte maximálne k2 krát ==> O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu Jr celkem n3 trojic (i,m,j) === O(n3) a revise-3 O(k3) ii> Algoritmus není optimální podobne jako AC-3 existuje algoritmus PC-4 založen na pocítání podpor a složitost PC-4 je O(n3k3), což už je optimální C Cvicení: rešte následující problém pomocí PC-2 algoritmu V1 e {0,1, 2, 3},V2 e {0,1},V3 e {1, 2} V3 = V1 + 1,V2 = V3, V1 = V2 -i* Nápoveda: zkonstruuj iniciální relace Rij Hana Rudová, Omezující podmínky, 4. prosince 2018 73 Konzistence po ceste Složitost algoritmu PC-2 C Složitost O(n3k5) J» každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu Jr celkem n3 trojic (i, m,j) O(n3) a revise-3 O(k3) ii> Algoritmus není optimální podobne jako AC-3 existuje algoritmus PC-4 založen na pocítání podpor a složitost PC-4 je O(n3k3), což už je optimální C Cvicení: rešte následující problém pomocí PC-2 algoritmu V1 g {0,1, 2, 3},V2 g {0,1},V3 g {1, 2} V3 = V1 + 1,V2 = V3, V1 = V2 -i- Nápoveda: zkonstruuj iniciální relace Rij iniciálne pridej do fronty (V 1, V2, V3), (V 1, V3, V2), (V2, V1, V3) Hana Rudová, Omezující podmínky, 4. prosince 2018 73 Konzistence po ceste Omezení PC algoritmu C- Pamet'ové nároky J* protože PC eliminuje dvojice hodnot z omezení, potr ebuje používat extenzionální reprezentaci omezení (pro každou dvojici hodnot si pamatuji, zdaje/není v doméne) C Pomer výkon/cena J* PC eliminuje více (nebo stejne) nekonzistencí jako AC -i- pomer výkonu ke zjednodušení problému je ale mnohem horší než u AC J* Zmeny grafu omezení i> PC p r idává hrany (omezení) i tam, kde puvodne nebyly a mení tak konektivitu grafu A to vadí p r i dalším r ešení problému, kdy se nemohou používat heuristiky odvozené od grafu (resp. dané původním problémem) JS> PC stále není dostatecné V,X,Y,Z g {1, 2, 3}, X = Y, Y = Z, Z = X, V = X, V = Y, V = Z je PC a p r esto nemá r ešení Hana Rudová, Omezující podmínky, 4. prosince 2018 74 Konzistence po ceste Na půli cesty od AC k PC C Jak oslabit PC, aby algoritmus: a nemel pamet'ové nároky PC %> nemenil graf podmínek s* byl silnejší než AC? Hana Rudová, Omezující podmínky, 4. prosince 2018 75 Konzistence po ceste Na půli cesty od AC k PC Jak oslabit PC, aby algoritmus: a nemel pameťové nároky PC it nemenil graf podmínek Jr byl silnejší než AC? Omezená konzistence po ceste - Restricted Path Consistency (RPC) it testujeme PC jen v případe, když je šance, že to povede k vyrazení hodnoty z domény promenné Príklad: Vi, V2 g {a,b},V3 g {a,b,c}, Vi = V2, V2 = V3, Vi = V3 je AC ale není PC RPC odstraní z domény V3 hodnoty a, b Hana Rudová, Omezující podmínky, 4. prosince 2018 75 Konzistence po ceste Omezená konzistence po cestě (RPC) -í* Jak to poznáme? Jedná se o jedinou vzájemnou podporu. & Proměnná Vi je omezene konzistentní po ceste (Restricted Path Consistent, RPC): Jť každá hrana vedoucí z Ví je hranove konzistentní pro každé a g Dí platí: je-li b jediná podpora a ve vrcholu j, potom v každém vrcholu k (spojenem s í a j) existuje hodnota c tak, že (a, c) a (b, c) jsou kompatibilní s príslušnými podmínkami Hana Rudová, Omezující podmínky, 4. prosince 2018 76 Konzistence po ceste Omezená konzistence po cestě (RPC) -í* Jak to poznáme? Jedná se o jedinou vzájemnou podporu. & Proměnná Vt je omezene konzistentní po ceste (Restricted Path Consistent, RPC): Jť každá hrana vedoucí z Vt je hranove konzistentní pro každé a g Dt platí: je-li b jediná podpora a ve vrcholu j, potom v každém vrcholu k (spojenem s t a j) existuje hodnota c tak, že (a, c) a (b, c) jsou kompatibilní s príslušnými podmínkami -í* Algoritmus: založen na AC-4 + seznam cest pro PC (viz Barták přednáška) Hana Rudová, Omezující podmínky, 4. prosince 2018 76 Konzistence po ceste Propagace pro nebinární omezení Nebinární omezení Zobecnení principu NC, AC, a PC smerem ke k-konzistenci -fc zajímavé z pohledu složitosti rešení problému pracuje se s libovolnými k-ticemi promenných a v praxi se vzhledem k pamet'ové a ccasové složitosti nevyužívá Hana Rudová, Omezující podmínky, 4. prosince 2018 78 Propagace pro nebinární omezení Nebinární omezení Zobecnení principu NC, AC, a PC smerem ke k-konzistenci Jt zajímavé z pohledu složitosti r ešení problému Jt pracuje se s libovolnými k-ticemi promenných a v praxi se vzhledem k pamet'ové a casové složitosti nevyužívá & Obecné typy konzistence pro nebinární podmínky pracuje se p rímo s a p ríklad: obecná hranová konzistence, konzistence mezí Hana Rudová, Omezující podmínky, 4. prosince 2018 78 Propagace pro nebinární omezení Nebinární omezení Zobečnení prinčipu NC, AC, a PC smerem ke k-konzistenci -fc zajímavé z pohledu složitosti rešení problému pračuje se s libovolnými k-tičemi promennýčh a v praxi se vzhledem k pamet'ové a časové složitosti nevyužívá Obecné typy konzistence pro nebinární podmínky & pračuje se prímo s n-árními podmínkami a príklad: obečná hranová konzistenče, konzistenče mezí Globální omezení: spečifičké typy konzistenčí £• využívá se sémantika omezení, zamerené opet na konkrétní omezení M spečiální typy konzistenče pro globální omezení (pr. a11_distinct) Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 78 Propagače pro nebinární omezení Nebinární omezení Zobecnení principu NC, AC, a PC smerem ke k-konzistenci -fc zajímavé z pohledu složitosti rešení problému pracuje se s libovolnými k-ticemi promenných a v praxi se vzhledem k pamet'ové a ccasové složitosti nevyužívá Obecné typy konzistence pro nebinární podmínky & pracuje se prímo s n-árními podmínkami a príklad: obecná hranová konzistence, konzistence mezí & Globální omezení: specifické typy konzistencí £• využívá se sémantika omezení, zamerené opet na konkrétní omezení M speciální typy konzistence pro globální omezení (pr. all_distinct) & Pro různé podmínky lze použít různý druh konzistence a A Obecný konzistencní algoritmus pro nebinární podmínky iľ v jeho rámci lze využívat výše zmínené typy konzistence Hana Rudová, Omezující podmínky, 4. prosince 2018 79 Propagace pro nebinární omezení k-konzistence Mají AC a PC neco spolecného? s AC: rozši r ujeme jednu hodnotu do druhé promenné & PC: rozšír ujeme dvojici hodnot do tretí promenné ... mužeme pokracovat Hana Rudová, Omezující podmínky, 4. prosince 2018 80 Propagace pro nebinární omezení k-konzistence Mají AC a PC neco spolecného? s AC: rozši r ujeme jednu hodnotu do druhé promenné Jt PC: rozšír ujeme dvojici hodnot do tretí promenné ... mužeme pokracovat CSP je k-konzistentní práve tehdy, když mužeme libovolné konzistentní ohodnocení (k-1) ruzných promenných rozšír it do libovolné k-té promenné Hana Rudová, Omezující podmínky, 4. prosince 2018 80 Propagace pro nebinární omezení k-konzistence Mají AC a PC neco spolecného? s AC: rozširujeme jednu hodnotu do druhé promenné & PC: rozšírujeme dvojici hodnot do tretí promenné ... mužeme pokracovat CSP je k-konzistentní práve tehdy, když můžeme libovolné konzistentní ohodnocení (k-1) různých promenných rozšírit do libovolné k-té promenné f f 1,2,3 1,2,3 1,2,3 4 4-konzistentní graf & Pro obecné CSP, tedy i pro nebinární podmínky Hana Rudová, Omezující podmínky, 4. prosince 2018 80 Propagace pro nebinární omezení Silná k-konzistence 3-konzistentní graf A B C 1,2 1,2 1,2,3 není 2-konzistentní Hana Rudová, Omezující podmínky, 4. prosince 2018 81 Propagace pro nebinární omezení Silná k-konzistence 3-konzistentní graf (1,1) lze rozšírit na (1,1,1) (2, 2) lze rozšírit na (2, 2,2) A B C 1,2 1,2 1,2,3 není 2-konzistentní (3) nelze rozšírit (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozširujeme je) Hana Rudová, Omezující podmínky, 4. prosince 2018 81 Propagace pro nebinární omezení Silná k-konzistence 3-konzistentní graf (1,1) lze rozšírit na (1,1,1) (2, 2) lze rozšírit na (2, 2,2) A B C 1,2 1,2 1,2,3 není 2-konzistentní (3) nelze rozšírit (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozširujeme je) & CSPje silne k-konzistentní práve tehdy, když je j-konzistentní pro každé j k-konzistenče & Silná k-konzistenče => j-konzistenče V j < k -i* k-konzistenče ^ silná k-konzistenče Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 81 Propagače pro nebinární omezení Silná k-konzistence 3-konzistentní graf (1,1) lze rozšírit na (1,1,1) (2, 2) lze rozšírit na (2, 2,2) A B C 1,2 1,2 1,2,3 není 2-konzistentní (3) nelze rozšírit (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozširujeme je) & CSPje silne k-konzistentní práve tehdy, když je j-konzistentní pro každé j k-konzistence Silná k-konzistence => j-konzistence Vj < k k-konzistence 4> silná k-konzistence NC = silná 1-konzistence = 1-konzistence AC = (silná) 2-konzistence PC = (silná) 3-konzistence Cvicení: uved'te príklad problému, kterýje 4-konzistentní, ale není 3-konzistentní Hana Rudová, Omezující podmínky, 4. prosince 2018 81 Propagace pro nebinární omezení Konzistence pro nalezení rešení Máme-li graf s n vrcholy, jak silnou konzistenci potrebujeme, abychom p rímo našli rešení? CSP vyrešíme bez navracení vzhledem k uspo rádání proměnných (x1,... ,xn), jestliže pro každé i < n může být každé castecné r ešení (x1, ...,xi) konzistentne rozšír eno o proměnnou xi+1. Hana Rudová, Omezující podmínky, 4. prosince 2018 82 Propagace pro nebinární omezení Konzistence pro nalezení rešení Máme-li graf s n vrcholy, jak silnou konzistenci potrebujeme, abychom p rímo našli rešení? CSP vyřešíme bez navracení vzhledem k uspo rádání proměnných (x1,... ,xn), jestliže pro každé i < n může být každé castecné rešení (xi, ...,xi) konzistentne rozšířeno o proměnnou xi+i. Nalezení rešení bez navracení pro libovolné uspo rádání proměnných? Hana Rudová, Omezující podmínky, 4. prosince 2018 82 Propagace pro nebinární omezení Konzistence pro nalezení řešení Máme-li graf s n vrcholy, jak silnou konzistenci potřebujeme, abychom p římo našli řešení? CSP vyřešíme bez navracení vzhledem k uspo řádání promenných (xi,... ,xn), jestliže pro každé i < n může být každé castecné ř ešení (xi, ...,xi) konzistentne rozšír eno o proměnnou xi+i. Nalezení řešení bez navracení pro libovolné uspo řádání promenných? *> silná n-konzistence je nutná pro graf s n vrcholy n-konzistence nestací (viz p r edchozí p ř íklad) silná k-konzistence pro k DIC-3 lze podobne srovnat se smerovou konzistencí po ceste (directed path consistency, DPC) -í* Algoritmus pro silnou smerovou konzistenci viz [Dechter, Constraint Processing] Hana Rudová, Omezující podmínky, 4. prosince 2018 87 Smerová konzistence Řešení bez navracení pomocí DIC-i Opakování: CSP vyrešíme bez navracení vzhledem k uspo rádání proměnných (x1,... ,xn), jestliže pro každé i < n může být každé castecné r ešení (x1, ...,xi) konzistentne rozšír eno o proměnnou xi+1. Hana Rudová, Omezující podmínky, 4. prosince 2018 88 Smerová konzistence Řešení bez navracení pomocí DIC-í i* Opakování: CSP vyřešíme bez navracení vzhledem k usporádání promenných (x1,... ,xn), jestliže pro každé í < n může být každé castecné rešení (x1, ...,xí) konzistentne rozšíreno o promennou xí+1. £ Promenná musí být kompatibilní s již ohodnocenými promennými, tj. s tolika promennými, kolik má „zpetných" hran & Pro í zpetných hran potrebujeme smerovou (í + 1)-konzistenci fi* Je-li m maximum poctu zpetných hran pro všechny vrcholy, stací nám silná smerovou (m + 1)-konzistence • Pri ruzném usporádání vrcholu je pocet zpetných hran mzný ^ hledáme uspořádání vrcholů s nejmenším počtem zpetných hran m Hana Rudová, Omezující podmínky, 4. prosince 2018 88 Smerová konzistence Šířka grafu Uspořádaný graf je graf s lineárním uspořádáním vrcholů. Šířka vrcholu v usporádaném grafu je poCet hran vedoucích z tohoto vrcholu do predchozích vrcholu. Šířka uspořádaného grafu je maximum z šírek jeho vrcholu. Šířka grafu je minimum z šírek všech jeho usporádaných grafu. X3 Hana Rudová, Omezující podmínky, 4. prosince 2018 89 Smerová konzistence Šířka grafu Uspořádaný graf je graf s lineárním usporádáním vrčholů. Šířka vrcholu v usporádaném grafu je počet hran vedoučíčh z tohoto vrčholu do predčhozíčh vrčholů. Šířka uspořádaného grafu je maximum z šírek jeho vrčholu. Šířka grafu je minimum z šírek všečh jeho usporádanýčh grafu. X3 proceduře MinWidthOrdering((V,E)) (konstruujeme od konce) Q := {} (do vybraného uzlu povede nejméne zpetných hran) while V not empty do N := vyber a smaž uzel s nejmenším poCtem hran z (V,E) zaraď N do Q return Q Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 89 Smerová konzistenče Graf podmínek s šířkou 1 = strom Tvrzení: Graf je strom práve tehdy, když má šírku 1. Hana Rudová, Omezující podmínky, 4. prosince 2018 90 Smerová konzistence Graf podmínek s šířkou 1 = strom Tvrzení: Graf je strom práve tehdy, když má šírku 1. Důkaz: J* Predpoklad: Strom neobsahuje čyklus. Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 90 Smerová konzistenče Graf podmínek s šířkou 1 = strom Tvrzení: Graf je strom práve tehdy, když má šír ku 1. Důkaz: J* Predpoklad: Strom neobsahuje cyklus. <= Mejme graf ší rky 1. Pokud by obsahoval cyklus, tak bychom pro libovolné uspo rádání promenných meli promennou se dvema rodici, tj. spor. Hana Rudová, Omezující podmínky, 4. prosince 2018 90 Smerová konzistence Graf podmínek s šířkou 1 = strom C Tvrzení: Graf je strom práve tehdy, když má šírku 1. ifc Důkaz: J* Predpoklad: Strom neobsahuje cyklus. <= Mejme graf šírky 1. Pokud by obsahoval cyklus, tak bychom pro libovolné usporádání promenných meli promennou se dvema rodiCi, tj. spor. == Mejme graf bez cyklů. Pak lze vytvorit orientovaný strom s korenem tak, že všechny hrany smerují z korenového uzlu. V tomto stromu má každý uzel nejvýše jednoho rodice. Libovolné usporádání, ve kterém rodic predchází potomky ve strome, má šírku 1. 1 Hana Rudová, Omezující podmínky, 4. prosince 2018 90 Smerová konzistence Konzistence pro stromové CSP Tvrzení: Necht' d = (x1,... ,xn) je uspo r ádání stromového grafu podmínek T prodaný CSP. Jestliže T je smerove hranove konzistentní vzhledem k d, pak má CSP r ešení bez navracení vzhledem k d. Hana Rudová, Omezující podmínky, 4. prosince 2018 91 Smerová konzistence Konzistence pro stromové CSP £ Tvrzení: Necht' d = (x1,... ,xn) je uspořádání stromového grafu podmínek T prodaný CSP. Jestliže T je smerove hranové konzistentní vzhledem k d, pak má CSP rešení bez navracení vzhledem k d. -í* Důkaz: -i* Uvažujme usporádání promenných d = (x1,...,xn) s šírkou 1. -4» Predpokládejme, že xi,...,xt jsou konzistentne nainstanciovány. A Snažíme se nainstanciovat x/+1: d je usporádaní šírky 1, tedy existuje pouze jeden rodic xj (j < i) promenné xi+1, který může omezovat xi+1 1 (xj,xi+1) je hranove konzistentní (z DAC), tedy a existuje hodnota konzistentní se soucasným prirazením xj tuto hodnotu priradíme xi+1 8 10 Hana Rudová, Omezující podmínky, 4. prosince 2018 91 Smerová konzistence Algoritmus zajištění DAC pro stromové CSP & procedúre TreeSolving(T) nalezení usporádání (x1,...,xn) s šírkou 1 pomocí stromu T (rodič predchází potomky) nechť xp(i) oznacuje rodice xi v usporádaném stromu for i = n to 1 by -1 do revise((xp(i),xi)) 2 if Dp(i) = 0 exit (rešení neexistuje) end TreeSolving A Hana Rudová, Omezující podmínky, 4. prosince 2018 92 Smerová konzistence Algoritmus zajištení DAC pro stromové CSP procedure TreeSolving(T) nalezení usporádání (x1,...,xn) s šírkou 1 pomocí stromu T (rodic predchází potomky) nechť xp(i) oznacuje rodice xi v usporádaném stromu for i = n to 1 by -1 do 1 revise((xp(i),xi)) 2 ŕ\ if Dp(i) = 0 exit (rešení neexistuje) end TreeSolving 8jf ^9 \l0 ^ Složitost algoritmu O(nk2) M Algoritmus zajistí DAC pro stromové CSP, tj. bude možné nalézt rešení bez navracení -í* Pokud aplikujeme DAC vzhledem k uspo rádání šír ky 1, a pak v opacném smeru, tak dosáhneme plné hranové konzistence. viz Barták, p rednáška Hana Rudová, Omezující podmínky, 4. prosince 2018 92 Smerová konzistence Šírka grafu a stupen konzistence C- Tvrzení: Necht' je dán CSP, jehož uspo řádaný graf podmínek s uspo rádáním d má šíř ku i - i. Jestliže je problém silne smerove i-konzistentní, pak je problém ř ešitelný bez navracení vzhledem k d. Hana Rudová, Omezující podmínky, 4. prosince 2018 93 Smerová konzistence Šírka grafu a stupen konzistence Tvrzení: Necht' je dán CSP, jehož uspo řádaný graf podmínek s uspo rádáním d má šíř ku i - i. Jestliže je problém silne smerove i-konzistentní, pak je problém ř ešitelný bez navracení vzhledem k d. Důkaz: -fc existuje uspo řádaný graf s uspo rádáním d a šíř kou i - i -i* speciálne, pocet zpetných hran pro každou promennou je maximálne i - i J* promenné ohodnocujeme v po radí uspo rádání grafu -i- nyní, pokud ohodnocujeme promennou: musíme najít hodnotu kompatibilní se všemi již ohodnocenými promennými, které jsou s promennou spojené podmínkou (hranou) necht' takových promenných je m, potom m < (i - i) (<= graf má šíř ku (i - i)) graf je smerove i-konzistentní, tedy taková hodnota musí existovat (<= z definice) Hana Rudová, Omezující podmínky, 4. prosince 2018 maximálně w 93 Smerová konzistence Adaptivní konzistence Původní intuice: proměnná musí být kompatibilní s již ohodnocenými proměnnými, tj. s tolika proměnnými, kolik má „zpetných" hran. -i- Je tedy nutná smerová i-konzistence odpovídající šír ce grafu? Problém: algoritmy silné smerové i-konzistence pro i > 3 mení graf podmínek p r idáváním hran, nutná úroven i se muže zvetšovat Hana Rudová, Omezující podmínky, 4. prosince 2018 94 Smerová konzistence Adaptivní konzistence Původní intuice: promenná musí být kompatibilní s již ohodnocenými proměnnými, tj. s tolika proměnnými, kolik má „zpetných" hran. -i- Je tedy nutná smerová í-konzistence odpovídající šírce grafu? Problém: algoritmy silné smerové í-konzistence pro í > 3 mení graf podmínek pridáváním hran, nutná úroven í se může zvetšovat Algoritmus adaptivní konzistence ADC pro nalezení rešení bez navracení -** uvažujme usporádání promenných d -i* rekurzivne vytváríme smerovou í-konzistenci (od poslední k první promenné v d) A meníme úroven í od uzlu k uzlu tak, abychom se adaptovali aktuální šířce uzlu v momente zpracování Hana Rudová, Omezující podmínky, 4. prosince 2018 94 Smerová konzistence Adaptivní konzistence ií> Původní intuice: promenná musí být kompatibilní s již ohodnocenými proměnnými, tj. s tolika promennými, kolik má „zpetných" hran. -i- Je tedy nutná smerová í-konzistence odpovídající šírce grafu? JS> Problém: algoritmy silné smerové í-konzistence pro í > 3 mení graf podmínek pridáváním hran, nutná úroven í se může zvetšovat M Algoritmus adaptivní konzistence ADC pro nalezení rešení bez navracení -** uvažujme usporádání promenných d -i* rekurzivne vytváríme smerovou í-konzistenci (od poslední k první promenné v d) A meníme úroven í od uzlu k uzlu tak, abychom se adaptovali aktuální šířce uzlu v momente zpracování Proc algoritmus funguje? -fc v momente zpracování uzlu je urcena finální šírka uzlu S víme tedy, jakou úroven smerové í-konzistence musíme dosáhnout Hana Rudová, Omezující podmínky, 4. prosince 2018 94 Smerová konzistence Polynomiální CSP ü> w šírka grafu, n pocet proměnných, k horní mez velikosti domén -i* Složitost DIC-i O(nwi • (2k)i) důkaz viz Dechter, Constraint Processing C- Časová a prostorová složitost algoritmu adaptivní konzistence je O(n • (2k)w+l) a O(n • kw) dUkaz viz Dechter, Constraint Processing Hana Rudová, Omezující podmínky, 4. prosince 2018 95 Smerová konzistence Polynomiální CSP £ w šírka grafu, n pocet proměnných, k horní mez velikosti domén -i* Složitost DIC-í O(nwl • (2k)1) dUkaz viz Dechter, Constraint Processing C- Časová a prostorová složitost algoritmu adaptivní konzistence je O(n • (2k)w+1) a O(n • kw) dUkaz viz Dechter, Constraint Processing & Veta: Trída CSP problémU, jejichž šírka grafu je ohranicena konstantou b je řešitelná v polynomiálním case a prostoru. Hana Rudová, Omezující podmínky, 4. prosince 2018 95 Smerová konzistence Polynomiální CSP ü> w šírka grafu, n pocet proměnných, k horní mez velikosti domén -i* Složitost DIC-i O(nwi • (2k)i) dukaz viz Dechter, Constraint Processing C- Časová a prostorová složitost algoritmu adaptivní konzistence je O(n • (2k)w+1) a O(n • kw) dukaz viz Dechter, Constraint Processing ü> Veta: Trída CSP problému, jejichž šírka grafu je ohranicena konstantou b je rešitelná v polynomiálním case a prostoru. ü> Použitelnost algoritmu ADC -i- ADC není jen procedura pro rozhodnutí konzistence ADC muže sloužit i ke kompilaci ADC transformuje problém na ekvivalentní graf, ze kterého muže být každé rešení odvozeno v lineárním case prostorová složitost ale zustává Hana Rudová, Omezující podmínky, 4. prosince 2G18 95 Smerová konzistence Pojmy a značení Rozsah omezení scope(c) množina promenných, na kterých je c definováno príklad: A,B,C e {0,1,2} scope(A k-tice t hodnot patřících do c: t e c príklad (pokracování): (0,1) e (A < B) Hana Rudová, Omezující podmínky, 4. prosince 2018 96 Smerová konzistence Pojmy a znacení Rozsah omezení scope(c) množina promenných, na kterých je c definováno príklad: A,B,C e {0,1,2} scope(A k-tice t hodnot patrících do c: t e c príklad (pokracování): (0,1) e (A < B) & Proměnná x e scope(c), k-tice t e c t[x] je hodnota proměnné x v t -fc príklad (pokracování): (0,1)[A] = 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 96 Smerová konzistence Definice obecné hranové konzistence (GAC) JS> Generalized arc consistency (nekdy nazývána doménová konzistence) pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní Hana Rudová, Omezující podmínky, 4. prosince 2018 97 Smerová konzistence Definice obecné hranové konzistence (GAC) JS> Generalized arc consistency (nekdy nazývána doménová konzistence) pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí Jt A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní & Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a M Hodnota a proměnné x g scope(c) má doménovou podporu t v c, jestliže & t g c a platí a = t[x] pro každé y g scope(c) platí t[y] g Dy C Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A Hana Rudová, Omezující podmínky, 4. prosince 2018 97 Smerová konzistence Definice obecné hranové konzistence (GAC) JS> Generalized arc consistency (nekdy nazývána doménová konzistence) it pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí it A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní & Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a M Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže it t g c a platí a = t[x] it pro každé y g scope(c) platí t[y] g Dy C Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A nemá podporu, 1 u A Hana Rudová, Omezující podmínky, 4. prosince 2018 97 Smerová konzistence Definice obecné hranové konzistence (GAC) Generalized arc consistency (někdy nazývána doménová konzistence) Jt pro každou proměnnou z podmínky a každou její hodnotu existuje ohodnocení zbylých proměnných v podmínce tak, že podmínka platí it A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní & Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a M Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže it t g c a platí a = t[x] it pro každé y g scope(c) platí t[y] g Dy C Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) Hana Rudová, Omezující podmínky, 4. prosince 2018 97 Smerová konzistence Definice obecné hranové konzistence (GAC) Generalized arc consistency (nekdy nazývána doménová konzistence) pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí A + B = C, A g {i, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a každé promenné x g scope(c) doménovou podporu v c Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže & t g c a platí a = t[x] pro každé y g scope(c) platí t[y] g Dy Příklad: A g {0, i}, Bg {0, i}, C g {i, 2}, A = B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) CSP je obecne hranove konzistentní <^> všechna jeho omezení jsou obecne hranove konzistentní & Příklad (pokracování): po GAC dostaneme Hana Rudová, Omezující podmínky, 4. prosince 2018 97 Smerová konzistence Definice obecné hranové konzistence (GAC) Generalized arc consistency (někdy nazývána doménová konzistence) pro každou proměnnou z podmínky a každou její hodnotu existuje ohodnocení zbylých proměnných v podmínce tak, že podmínka platí A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a každé promenné x g scope(c) doménovou podporu v c Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže & t g c a platí a = ŕ[x] pro každé y g scope(c) platí t[y] g Dy Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) CSP je obecne hranove konzistentní <^> všechna jeho omezení jsou obecne hranove konzistentní & Príklad (pokracování): po GAC dostaneme A=1, B=0, C=1 Hana Rudová, Omezující podmínky, 4. prosince 2018 97 Smerová konzistence Konzistence mezí Bounds consistency BC: slabší než obecná hranová konzistence -fc propagace pouze pri zmene minimální nebo maximální hodnoty v doméne promenné a tedy došlo ke zmene mezí domény promenné Hana Rudová, Omezující podmínky, 4. prosince 2018 98 Smerová konzistence Konzistence mezí Bounds consistency BC: slabší než obecná hranová konzistence -fc propagace pouze pri změně minimální nebo maximální hodnoty v doméne promenné a tedy došlo ke zmene mezí domény promenné Konzistence mezí pro nerovnice * A > B=> min(A) > min(B)+1, max(B) < max(A)-1 príklad: A e {4,..., 10}, Be {6,... 18}, A > B min(A) > 6+1 => A e {7,..., 10} max(B) < 10-1 => B e {6,...,9} Hana Rudová, Omezující podmínky, 4. prosince 2018 98 Smerová konzistence Konzistence mezí & Bounds consistency BC: slabší než obecná hranová konzistence -fc propagace pouze pri zmene minimální nebo maximální hodnoty v doméne promenné a tedy došlo ke zmene mezí domény promenné & Konzistence mezí pro nerovnice * A > B=> min(A) > min(B)+1, max(B) < max(A)-1 príklad: A e {4,..., 10}, Be {6,... 18}, A > B min(A) > 6+1 => A e {7,..., 10} max(B) < 10-1 => B e {6,...,9} & Cvicení: napište pravidla pro konzistenci mezí pro uvedená omezení a A < B, A > B, A < B a aplikujte je v prípade domén A e{1,..., 10}, B e{0,..., 5} Jak je to tedy pro nebinární omezení? Hana Rudová, Omezující podmínky, 4. prosince 2018 98 Smerová konzistence Konzistence mezí a aritmetická omezení & A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) Hana Rudová, Omezující podmínky, 4. prosince 2018 99 Smerová konzistence Konzistence mezí a aritmetická omezení & A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) A zmena min(A)vyvolá pouze zmenu min(B) a min(C) A zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... Hana Rudová, Omezující podmínky, 4. prosince 2018 99 Smerová konzistence Konzistence mezí a aritmetická omezení & A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) A zmena min(A)vyvolá pouze zmenu min(B) a min(C) A zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... C Príklad: A e {1,...,6,9,10}, B e {1,..., 10}, A = B + 2 A = B + 2 ^> Hana Rudová, Omezující podmínky, 4. prosince 2018 99 Smerová konzistence Konzistence mezí a aritmetická omezení * A = B + C => min(A) > nrin(B)+im"n(C), max(A) < max(B)+max(C) min(B) > min(A)-max(0, max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) A zmena min(A)vyvolá pouze zmenu min(B) a min(C) A zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... C Př íklad: A g {i,...,6,9, i0}, B g {i,..., i0}, A = B + 2 A = B + 2 => min(A)>1+2, max(A)<10+2 => A g {3,..., 6,9, i0} => min(B)>1-2, max(B)<10-2 => B g {i,...,8} Hana Rudová, Omezující podmínky, 4. prosince 2018 99 Smerová konzistence Konzistence mezí a aritmetická omezení & A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) Jt změna min(A)vyvolá pouze změnu min(B) a min(C) Jt změna max(A)vyvolá pouze změnu max(B) a max(C), ... C Príklad: A g [I,...,6,9,10}, B g {1,..., 10}, A = B + 2 A = B + 2 => min(A)>1+2, max(A)<10+2 => A g [3,..., 6,9,10} => min(B)>1-2, max(B)<10-2 => B g{1,...,8} tj. doména B má pouze změněny meze a hodnoty 5, 6 zustanou v doméně A g [3,..., 6,9,10}, B g [1,..., 8}, A = B + 2 je BC, není GAC, není AC Hana Rudová, Omezující podmínky, 4. prosince 2018 99 Směrová konzistence Konzistence mezí a aritmetická omezení * A = B + C => min(A) > nrin(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(0, max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) A zmena min(A)vyvolá pouze zmenu min(B) a min(C) Jt zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... M Príklad: A e {1,...,6,9,10}, B e {1,..., 10}, A = B + 2 A = B + 2 => min(A)>1+2, max(A)<10+2 => A e {3,...,6,9,10} => min(B)>1-2, max(B)<10-2 => B e{1,...,8} tj. doména B má pouze zmenený meze a hodnoty 5, 6 zustanou v doméne A e {3,..., 6,9,10}, B e {1,..., 8}, A = B + 2 je BC, není GAC, není AC Cvičení: napište pravidla pro konzistenci mezí pro uvedená omezení A A = B - 3, A = B-C, A=B + C, A všechna jeho omezení mají konzistentní meze Hana Rudová, Omezující podmínky, 4. prosince 2018 100 Smerová konzistence Globální podmínky Globální podmínka: definována pro libovolný konečný pocet proměnných Global Constraint Catalog http://www.emn.fr/x-info/sdemasse/gccat -í* Nicolas Beldiceanu, Mats Carlsson and Jean-Xavier Rampon JS> Popis omezení dostupných v literature a v systémech s omezujícími podmínkami & „The catalog presents a list of 423 global constraints issued from the literature in constraint programming and from popular constraint systems. The semantic of each constraint is given together with some typical usage and filtering algorithms, and with reformulations in terms of graph properties, automata, and/or logical formulae. When available, it also presents some typical usage as well as some pointers to existing filtering algorithms." PDF dokument, srpen 2014, cca 4 000 stran Hana Rudová, Omezující podmínky, 4. prosince 2018 101 Smerová konzistence (Globální podmínky a) rozvrhování Všechny proměnné různé A allDifferent Disjunktivní zdroj/rozvrhování -i- dvar interval, dvar sequence & noOverlap Kumulativní zdroj/rozvrhování & cumuFunction, pulse Alternativní zdroje alternative Hana Rudová, Omezující podmínky, 4. prosince 2018 102 Smerová konzistence Všechny proměnné různé Proměnné v poli Array jsou různé J* dvar int Array[Interval]; A globální podmínka: allDifferent(Array); J* binární podmínky: for (i, j in Interval : i != j) Array[i] != Array[j]; Hana Rudová, Omezující podmínky, 4. prosince 2018 103 Směrová konzistence Všechny proměnné různé Proměnné v poli Array jsou různé iľ dvar int Array[Interval]; A globální podmínka: allDifferent(Array); iľ binární podmínky: for (i, j in Interval : i != j) Array[i] != Array[j]; allDifferent vs. binární podmínky allDifferent má úplnou propagaci -i- binární podmínky mají slabší (neúplnou) propagaci Príklad: uCitělé musí uCit v různé hodiny učitel min max Jan 3 6 Petr 3 4 Anna 2 5 Ota 2 4 Eva 3 4 Marie 1 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 103 Směrová konzistence Všechny proměnné různé Proměnné v poli Array jsou různé iľ dvar int Array[Interval]; A globální podmínka: allDifferent(Array); iľ binární podmínky: for (i, j in Interval : i != j) Array[i] != Array[j]; allDifferent vs. binární podmínky -fc allDifferent má úplnou propagaci -i- binární podmínky mají slabší (neúplnou) propagaci Príklad: uCitělé musí uCit v různé hodiny -i- globální podmínka: Jan = 6, Ota = 2, Anna = 5, Marie = 1, Petr e {3,4), Eva e {3,4} učitel min max Jan 3 6 Petr 3 4 Anna 2 5 Ota 2 4 Eva 3 4 Marie 1 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 103 Směrová konzistence Všechny proměnné různé Proměnné v poli Array jsou různé iľ dvar int Array[Interval]; A globální podmínka: allDifferent(Array); iľ binární podmínky: for (i, j in Interval : i ! = & allDifferent vs. binární podmínky Jt allDifferent má úplnou propagaci -i- binární podmínky mají slabší (neúplnou) propagaci Príklad: uCitělé musí uCit v různé hodiny -i- globální podmínka: Jan = 6, Ota = 2, Anna = 5, Marie = 1, Petr g {3,4), Eva g {3,4} -i- binární podmínky: Jan e {3,...,6), Petr g {3,4), Annae {2,..., 5), Ota g {2, 3,4), Eva g {3,4), Marie e{1,..., 6} Hana Rudová, Omezující podmínky, 4. prosince 2018 103 j) Array[i] != Array[j]; učitel min max Jan 3 6 Petr 3 4 Anna 2 5 Ota 2 4 Eva 3 4 Marie 1 6 Směrová konzistence Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 104 Smerová konzistence Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan g {5,6}, Anna = 5, Marie g {1,5,6} učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 104 Směrová konzistence Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan g {5,6}, Anna = 5, Marie g {1,5,6} Konzistence: musí platit: V{Xi,.. .,Xk} c V : card{Di u • • • u Dk} > k Inferencní pravidlo Jr V: množina všech proměnných U = {Xi,...,Xk}, dom(U) = {Di u---u Dk} učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 card(U) = card(dom(U)) => Vv g dom(U), VX g (V - U),X = v Hana Rudová, Omezující podmínky, 4. prosince 2018 104 Smerová konzistence Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nělzě pro Jan, Anna, Marie Jan e (5,6}, Anna = 5, Marie e {1,5,6} Konzistence: musí platit: V(Xi,.. .,Xk} c V : card(Di u • • • u Dk} > k Inferencní pravidlo Jr V: množina všech proměnných U = {X1,...,Xk}, dom(U) = {Di u • • • u Dk} card(U) = card(dom(U)) => Vv g dom(U), VX g (V - U),X = v Jr hodnoty v dom(U) jsou pro ostatní proměnné nedostupné učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 104 Smerová konzistence Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan e {5,6}, Anna = 5, Marie e {1,5,6} Konzistence: musí platit: \/{Xi,.. .,Xk} c V : card{Di u • • • u Dk} > k učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 iS> Inferencní pravidlo Jr V: množina všech proměnných U = {Xi,...,Xk}, dom(U) = {Di u • • • u Dk} card(U) = card(dom(U)) ^\/v g dom(U), VX g (V - U),X = v Jr hodnoty v dom(U) jsou pro ostatní promenné nedostupné & Složitost hledání všech podmnožin množiny n proměnných (naivní) O(2n) Hana Rudová, Omezující podmínky, 4. prosince 2018 104 Smerová konzistence Párování v bipartitních grafech -í* Efektivní propagaci pro allDifferent lze založit na párování v bipartitních grafech (Régin 94) JS> Bipartitní graf -fc uzly grafu rozdelené do dvou množin -i- neexistují hrany mezi uzly jedné množiny JS> Párování v bipartitních grafech v grafu neexistují dve hrany, které by mely spolecný vrchol ií> Maximální párování -fc párování, které má maximální pocet hran Hana Rudová, Omezující podmínky, 4. prosince 2018 105 Směrová konzistence Párování v bipartitních grafech ii> Efektivní propagaci pro allDifferent lze založit na párování v bipartitních grafech (Régin 94) JS> Bipartitní graf -fc uzly grafu rozdelené do dvou množin -i- neexistují hrany mezi uzly jedné množiny JS> Párování v bipartitních grafech v grafu neexistují dve hrany, které by mely spolecný vrchol ií> Maximální párování -fc párování, které má maximální pocet hran JS> CSP jako bipartitní graf -i- jedna množina vrcholu reprezentuje promenné -fc druhá množina vrcholu reprezentuje hodnoty promenných -i- hrana z promenné X do hodnoty a ríká, že promenná X muže nabývat hodnoty a Hana Rudová, Omezující podmínky, 4. prosince 2018 105 Smerová konzistence allDifferent - párování v bipartitních grafech II. JS> Inicializace Jť vypoCti maximální párování odstran všechny hrany, ktěré něpatrí do žádného maximálního párování sjednocení domén proměnné proměnných Hana Rudová, Omezující podmínky, 4. prosince 2018 106 Smerová konzistence allDifferent - párování v bipartitních grafech II. -í* Inicializace Jť vypocti maximální párování J* odstran všechny hrany, ktěré něpatrí do žádného maximálního párování Propagace změnšěné domény odstran odpovídající hrany vypocti nové maximální párování odstran všěchny hrany, ktěré něpat rí do žádného maximálního párování sjědnocění domén proměnné proměnných Hana Rudová, Omězující podmínky, 4. prosincě 2018 106 Směrová konzistěncě allDifferent - párování v bipartitních grafech II. proměnné JS> Inicializace Jť vypocti maximální párování odstran všechny hrany, které nepatrí do žádného maximálního párování Propagace zmenšené domény A odstran odpovídající hrany & vypocti nové maximální párování A odstran všechny hrany, které nepatrí do žádného maximálního párování C Algoritmus založen na doménové konzistenci každé maximální párování definuje doménovou podporu složitost O(n2k2), n... pocet promenných, k... maximální velikost domény sjednocení domén proměnných Hana Rudová, Omezující podmínky, 4. prosince 2018 106 Smerová konzistence allDifferent - párování v bipartitních grafech II. JS> Inicializace proměnné sjednocení domén proměnných Jt vypocti maximální párování odstran všechny hrany, které nepatrí do žádného maximálního párování Propagace zmenšené domény A odstran odpovídající hrany i* vypocti nové maximální párování A odstran všechny hrany, které nepatrí do žádného maximálního párování C Algoritmus založen na doménové konzistenci & každé maximální párování definuje doménovou podporu Jt složitost O(n2k2), n... pocet proměnných, k... maximální velikost domény J* efektivnější algoritmus využívá konzistenci mezí - složitost O(nlogn) (Puget 1998) Hana Rudová, Omezující podmínky, 4. prosince 2018 106 Směrová konzistence Intervalové proměnné Intervalová proměnná: pro modelování casového intervalu (úlohy, aktivity) hodnotou intervalové proměnné jě cělocísělný interval [start, end) príklad: dvar interval x in 0..1000000 size 100..200; Hana Rudová, Omězující podmínky, 4. prosincě 2018 107 Směrová konzistěncě Intervalové proměnné Intervalová proměnná: pro modělování casového intěrvalu (úlohy, aktivity) £ hodnotou intěrvalové proměnné jě cělocísělný intěrval [start, end) M príklad: dvar interval x in 0..1000000 size 100..200; Volitelná intervalová proměnná: pro modelování časového intervalu, který může ale nemusí být přítomen v rešení (prítomný vs. neprítomný interval) JS> napr. pro modelování volitelných aktivit, které v řešení nemusí být & príklad: dvar interval x optional in 0..1000000 size in 100..200; -í* Dom(x) c u {[start,end)\start,end g Z,start < end} _l značí, že interval není prítomen vrešení Hana Rudová, Omezující podmínky, 4. prosince 2018 107 Smerová konzistence Disjunktní/unární rozvrhování SekvenCní proměnná p C definována na množine intervalových promenných x dvar interval x[i in 1..n] dvar sequence p in x; & hodnota intervalové promenné p je permutace prítomných intervalů & pozor, permutace t ješte neimplikuje žádné uspořádání v case! Hana Rudová, Omezující podmínky, 4. prosince 2018 108 Smerová konzistence Disjunktní/unární rozvrhování SekvenCní proměnná p C definována na množine intervalových proměnných x dvar interval x[i in 1..n] dvar sequence p in x; & hodnota intervalové promenné p je permutace prítomných intervalů & pozor, permutace t ješte neimplikuje žádné uspořádání v case! Omezení noOverlap(p) -á* vyjadruje, že sekvencní promenná p reprezentuje retezec nepřekrývajících se intervalových promenných & pro vyjádrení rozvrhování na unárním/disjunktivním zdroji, kde se intervaly/úlohy/aktivity neprekrývají poznámka: neprítomné intervaly v retezci zahrnuty nejsou Hana Rudová, Omezující podmínky, 4. prosince 2018 108 Smerová konzistence Disjunktivní rozvrhování: princip algoritmu -i* Hledání hran (edge finding) - Baptisté & Le Pape, 1996 JS> Hledáme úlohu, která předchází nebo následuje množinu jiných úloh JS* dvar interval A in 4..16 size 2; dvar interval B in 6..16 size 4; dvar interval C in 7..15 size 5; -i* Co se stane, pokud nebude aktivita A zpracována jako první? 16 4 6 B(4) 16 7 C(5) 15 Hana Rudová, Omezující podmínky, 4. prosince 2018 109 Smerová konzistence Disjunktivní rozvrhování: princip algoritmu Hledání hran (edge finding) - Baptisté & Le Pape, 1996 Hledáme úlohu, která předchází nebo následuje množinu jiných úloh dvar interval A in 4..16 size 2; dvar interval B in 6..16 size 4; dvar interval C in 7..15 size 5; Co se stane, pokud nebude aktivita A zpracována jako první? 16 4 A( 6 B(4) 16 7 C(5) 15 Pro A,B,C není dost času, a tedy aktivita A musí být první 4 H A(2) 7 6h B(4) 16 7 Hana Rudová, Omezující podmínky, 4. prosince 2018 C(5) 15 109 Smerová konzistence Další podmínky: precedence Mězi intervalovými proměnnými mužěmě definovat prěcěděncní podmínky: dvar interval i; dvar interval j; endBeforeStart(i, j); endBeforeEnd(i, j); endAtStart(i, j); endAtEnd(i, j); startBeforeStart(i, j); startBeforeEnd(i, j); startAtStart(i, j); startAtEnd(i, j); Poznámka: tyto podmínky platí, pokud jsou oba intervaly prítomné Hana Rudová, Omězující podmínky, 4. prosincě 2018 110 Směrová konzistence A dále: logické podmínky Unární podmínka pro p rítomnost intervalu x: presenceOf(x) znamená, že x = _l Príklady: presenceOf(x) == presenceOf(y) // x přítomen práve tehdy, když je přítomen y presenceOf(x) => presenceOf(y) // implikace presenceOf(x) => !presenceOf(y) Pozor na použití: precedencní podmínky: polynomiální složitost logické binární podmínky: polynomiální složitost precedence + logické binární: NP-težké! Hana Rudová, Omezující podmínky, 4. prosince 2018 111 Smerová konzistence s intervalovými promennými Pro vytváření úcelových funkcí nebo definici omezení startOf(x) endOf(x) sizeOf(x, V) Príklad: minimalizace casu dokoncení poslední úlohy (tzv. makespanu) minimize max(i in 1..n) endOf(x[i]) Hana Rudová, Omezující podmínky, 4. prosince 2018 112 Smerová konzistence Príklad: rozvrhování problému job-shop Job-shop problém: & problém rozvrhování úloh, ktěré sě skládají z něprěkrývajících opěrací & každá opěracě úlohy prováděna na jiném stroji po radí opěrací úlohy p rěděm urcěno unární strojě Hana Rudová, Omězující podmínky, 4. prosincě 2018 113 Směrová konzistěncě Příklad: rozvrhování problému job-shop Job-shop problém: problém rozvrhování úloh, které se skládají z nepřekrývajících operací každá operace úlohy provádena na jiném stroji po radí operací úlohy p redem urceno opi 1 op12 op13 op21 - op22 -*~ op23 Q M1 [] M2 unární stroje I_^_M_°B32_M_0P33_I g M3 op32 op33 op41 op42 op43 1 dvar interval op[j in Jobs] [p in Pos] size Ops[j] [p] .pt; 2 dvar sequence mchs[m in Mens] in 3 all(j in Jobs, p in Pos: Ops[j] [p] .meh == m) op[j] [p] ; 4 5 minimize max(j in Jobs) endOf(op[j] [nbPos]); 6 { tuple Oper { 7 ( ) int mch; // Machine 8 noOverlapCmchs [m]); n ■ ' int pt; // Processing time 9 foraliCj in Jobs, p in 2..nbPos; }. 10 ( [ ] [ -1], [ ] [ ]); oper o'ps[j in Jobs][m in Mchs] = 11 ^ pr. Ops[1][2]=<3,6> Hana Rudová, Omezující podmínky, 4. prosince 2018 113 Směrová konzistence Kumulativní funkce Hodnota výrazu kumulativní funkce reprezentuje vývoj kvantity v case, která může být inkrementálne zmenena (snížena nebo navýšena) intervalovými promennými. Príklady: JS* intervaly využívají pocty pracovníku & intervaly využívají skladové zásoby Intervalové promenné x[i] přispívají do kumul. funkce po dobu svého provádení * pulse(x, 1) int wor[l..5] = [1,3,2,4,1]; Ť cumulFunction y = sum(i in 1..5) pulse(x[i],wor[i]); Time Hana Rudová, Omezující podmínky, 4. prosince 2018 114 Smerová konzistence Kumulativní funkce Hodnota výrazu kumulativní funkce reprezentuje vývoj kvantity v case, která může být inkrementálne zmenena (snížena nebo navýšena) intervalovými promennými. Príklady: JS* intervaly využívají pocty pracovníku & intervaly využívají skladové zásoby Intervalové promenné x[i] přispívají do kumul. funkce po dobu svého provádení * pulse(x, 1) int wor[l..5] = [1,3,2,4,1]; Ť cumulFunction y = sum(i in 1..5) pulse(x[i],wor[i]); Omezení na výrazech kumulativní funkce Time int h = ... dvar int h = ... cumulFunction f= ... cumulFunction f= ... f<=h f<=h Hana Rudová, Omezující podmínky, 4. prosince 2018 114 Smerová konzistence Príklad: RCPSP Resource-contrained project scheduling problem (RCPSP) tuple Task { key int id; int pt; int qty[Resources]; {int} succs; } {Task} Tasks = Hana Rudová, Omezující podmínky, 4. prosince 2018 115 Smerová konzistence Príklad: RCPSP Resource-contrained project scheduling problem (RCPSP) tuple Task { key int id; int pt; int qty[Resources]; {int} succs; } {Task} Tasks = 1 dvar interval a[i in Tasks] size i.pt; 2 cumulFunction usage[r in Resources] = 3 sum(i in Tasks: i.qty[r]>0) pulse(a[i],i.qty[r]); 4 minimize max(i in Tasks) endOf(a[i]); 5 subject to { 6 forall(r in Resources) 7 usage[r] <= Capacity[r]; 8 foralKi in Tasks, i in i.succs) 9 endBeforeStart(a[i], a[]); 10 } odkazuje jako klíč na celý tuple Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 115 Smerová konzistenče Alternativní podmínka Pokud je interval x p řítomný, pak je práve jeden z intervalu y1,...,yn p ř ítomný a je synchronizován s x (má stejný start a konec) & alternative(x, [y1,...,yn]) ií> Pokud je x nep řítomné, pak jsou yi také nep řítomné Hana Rudová, Omezující podmínky, 4. prosince 2018 116 Smerová konzistence Alternativní podmínka Pokud je interval x prítomný, pak je práve jeden z intervalu y1,...,yn prítomný a je synchronizován s x (má stejný start a konec) & alternative(x, [y1,...,yn]) ií> Pokud je x neprítomné, pak jsou yi také neprítomné Rozšírení: práve k intervalu z y1,...,yn je synchronizováno s x & alternative(x, [y1,...,yn], k) //k: celočíselný výraz Hana Rudová, Omezující podmínky, 4. prosince 2018 116 Smerová konzistence Alternativní podmínka Pokud je interval x prítomný, pak je práve jeden z intervalů y1,...,yn přítomný a je synchronizován s x (má stejný start a konec) & alternative(x, [y1,...,yn]) ií> Pokud je x neprítomné, pak jsou yi také neprítomné Rozšírení: práve k intervalů z y1,...,yn je synchronizováno s x & alternative(x, [y1,...,yn], k) //k: celočíselný výraz Príklad použití: £ každá intervalová promenná x[t] vyžaduje nbWorkers[t] prítomných intervalů mezi assigned[t][w] pro pracovníky w JS> dvar interval x[t in Tasks] size pt[u]; int nbWorkers[t in Tasks]; dvar interval assigned[Tasks][Workers] optional; forall (t in Tasks) alternative(x[t], all (w in Workers) assigned[t][w], nbWorkers[t]); Hana Rudová, Omezující podmínky, 4. prosince 2018 116 Smerová konzistence Konzistenční algoritmus pro nebinární podmínky C Obecný konzistenční algoritmus & Varianta AC-3 s frontou proměnných rozšír ení AC-2001 na nebinární podmínky & Opakovane se provádí revize podmínek, dokud se mení domény procedure Nonbinary-AC-3-with-Variables(Q) while Q non empty do vyber a smaž Vj g Q for V C takové, že Vj g scope(C) do W := revise(Vj, C) // W je množina proměnných jejichž, doména se zmenila if 3 Vi g W taková, že Di = 0 then return fail Q := Q u {W} end Nonbinary-AC-3-with-Variables Hana Rudová, Omezující podmínky, 4. prosince 2018 117 Smerová konzistence Revizní procedura: různé typy konzistence Speciální revise procedury jsou definovány v závislosti na typu omezení, tj. revise procedura muže implementovat obecnou hranovou konzistenci ii> konzistenci mezí & konzistencní algoritmy pro globální podmínky jako allDifferent Hana Rudová, Omezující podmínky, 4. prosince 2018 118 Smerová konzistence Revizní procedura JS> Uživatel má casto možnost definovat vlastní revise proceduru -i* Je potreba urCit událost, která revizi vyvolá událostí je zmena domény promenné (suspension) -i- vyvolání revize pouze pri dané zmene promenné pri libovolné zmene domény (u obecné hranové konzistence) pri zmene mezí (u konzistence mezí) pri instanciaci promenné tj. pro každou promennou lze použít mzné události S revize jednolivých podmínek jsou realizovány v závislosti na aktivaci odpovídající události (událostmi rízený výpocet) Hana Rudová, Omezující podmínky, 4. prosince 2018 119 Smerová konzistence Revizní procedura JS> Uživatel má casto možnost definovat vlastní revise proceduru -i* Je potreba urCit událost, která revizi vyvolá událostí je zmena domény promenné (suspension) -i- vyvolání revize pouze pri dané zmene promenné pri libovolné zmene domény (u obecné hranové konzistence) pri zmene mezí (u konzistence mezí) pri instanciaci promenné tj. pro každou promennou lze použít mzné události S revize jednolivých podmínek jsou realizovány v závislosti na aktivaci odpovídající události (událostmi rízený výpocet) & Je potreba navrhnout propagaci pres podmínku pro danou událost -i- výsledkem propagace je zmenšení domén promenných -fc pro jednu podmínku lze mít více propagacních kódu Hana Rudová, Omezující podmínky, 4. prosince 2018 119 Smerová konzistence Základní konzistenční algoritmus s událostmi & procedure Nonbinary-AC-3-with-Events(Q) while Q non empty do vyber a smaž event(Vj) g Q for V C takové, že Vj g scope(C) a C Ceká na event(Vj) do W := revise(event(Vj), C) // jsou vyvolány pouze ty revize, které Cekají na danou event (Vj) // W je množina promenných jejichž, doména se zmenila if 3 Vi g W taková, že Dt = 0 then return fail Q := Q u {W} end Nonbinary-AC-3-with-Events Hana Rudová, Omezující podmínky, 4. prosince 2018 120 Smerová konzistence Prohledávání a pohled dopředu Přehled prohledávacích algoritmů pro CSP M Rozšiřování CásteCného konzistentního přiřazení a stromové prohledávání backtracking pohled dopredu (propagace omezení) pohled zpet (inteligentní vracení) neúplná stromová prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 122 Prohledávání a pohled dopredu Prehled prohledávacích algoritmů pro CSP M Rozširovaní CásteCného konzistentního prirazení a stromové prohledávání backtracking pohled dopredu (propagace omezení) pohled zpet (inteligentní vracení) neúplná stromová prohledávání * Procházení úplných nekonzistentních prirazení Jr generuj a testuj a lokální prohledávání Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 122 Prohledávání a pohled dopredu Prehled prohledávacích algoritmů pro CSP M Rozšiřování CásteCného konzistentního prirazení a stromové prohledávání backtracking pohled dopredu (propagace omezení) pohled zpet (inteligentní vracení) neúplná stromová prohledávání * Procházení úplných nekonzistentních prirazení Jr generuj a testuj a lokální prohledávání Kombinování úplných nekonzistentních prirazení * population-based search Hana Rudová, Omezující podmínky, 4. prosince 2018 122 Prohledávání a pohled dopredu Prohledávací algoritmy pro CSP Prohledávací algoritmy prochází (traversálne) graf stavového prostoru uzly grafu (stavy): konzistentní cástecné instanciace iniciální stav: prázdné prirazení hrany grafu: operátory, které rozšír í cástecné r ešení [xi/ai,...,Xj/aj] o p r i r azení jedné promenné, které není v konfliktu s d r ívejšími p r i r azeními, tj. vznikne [x1/a1,... ,Xj/aj,Xj+1 /aj+1] cílové stavy: úplná rešení v2 i V3 Hana Rudová, Omezující podmínky, 4. prosince 2018 3 123 cervené ctverecky: chybný pokus o instanciaci, rešení neexistuje nevyplnená kolecka: nalezeno rešení (cílové stavy) cerná kolecka: vnitr ní uzel, máme pouze cástecné p ri razení Prohledávání a pohled dop redu Prohledávací algoritmy pro CSP: vlastnosti Bod volby: z uzlu grafu vede více hran -í* máme na výber, kterou hodnotu priradíme proměnné CSP má rešení bez navracení vzhledem k uspořádání d, jestliže všechny listy v jeho grafu stavového prostoru reprezentují rešení. iS* v grafu nejsou žádné slepé vetve Hana Rudová, Omezující podmínky, 4. prosince 2018 124 Prohledávání a pohled dopredu Backtracking (BT) Prohledávání stavového prostoru do hloubky Dve fáze backtrackingu a dopredná fáze: promenné jsou postupne vybírány, rozširuje se cástecné rešení prirazením konzistentní hodnoty (pokud existuje) pro další promennou a zpetná fáze: pokud neexistuje konzistentní hodnota pro aktuální promennou algoritmus se vrací k predchozí prirazené hodnote Hana Rudová, Omezující podmínky, 4. prosince 2018 125 Prohledávání a pohled dop redu Backtracking (BT) Prohledávání stavového prostoru do hloubky Dve fáze backtrackingu a dopredná fáze: promenné jsou postupne vybírány, rozši r uje se cástecné r ešení p r i razením konzistentní hodnoty (pokud existuje) pro další promennou a zpetná fáze: pokud neexistuje konzistentní hodnota pro aktuální promennou algoritmus se vrací k p redchozí p r i razené hodnote Promenné delíme na & minulé - promenné, které už byly vybrány (a mají p r i razenu hodnotu) a aktuální - promenná, která je práve vybrána a je jí p r i r azována hodnota s budoucí - promenné, které budou vybrány v budoucnosti Hana Rudová, Omezující podmínky, 4. prosince 2018 125 Prohledávání a pohled dop redu Příklad: backtracking Hana Rudová, Omezující podmínky, 4. prosince 2018 126 Prohledávání a pohled dop redu Algoritmus backtrackingu procedure Backtracking((X,D, C)) i := 1 (inicializace CítaCe promenných) D- := Di (kopírování domény) while 1 < i < n prirazení xi := Select-Value if xi is null (žádná hodnota nebyla vrácena) i := i - 1 (zpetná fáze) else i := i + 1 (dopredná fáze) if i = 0 return ,,nekonzistentní'' else return prirazené hodnoty {x1,...,xn} end Backtracking Algoritmus vračí pouze první rešení Série domén D-: V i: D- q Di. Select-Value pracuje nad (promazává) D[ Hodnoty v D[ ješte netestovány vzhledem k aktuálnímu částečnému p r i razení Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 127 Prohledávání a pohled dop redu Uspořádání hodnot pro backtracking & procedure Select-Value while D- is not empty vyber a smaž libovolný a g D-if Consistent(ai-i,xi = a) return a return null JS> Backtracking overuje v každém kroku konzistenci podmínek vedoucích z minulých proměnných do aktuální promenné Backtracking tedy zajišťuje konzistenci podmínek it na všech minulých proměnných it na podmínkách mezi minulými proměnnými a aktuální promennou Hana Rudová, Omezující podmínky, 4. prosince 2018 128 Prohledávání a pohled dopredu Problémy a vylepšení backtrackingu -í* Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechu pri prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 129 Prohledávání a pohled dopredu Problémy a vylepšení backtrackingu -í* Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechu pri prohledávání & Algoritmy pohledu dopredu kontrolují podmínky dopredu -i- backtracking odhalí nesplnení podmínky teprve když priradí hodnoty jejím promenným príklad: A,B,C,D,E in 1..10, A=3*E konzistencními algoritmy lze predem upravit domény A a E Hana Rudová, Omezující podmínky, 4. prosince 2018 129 Prohledávání a pohled dopredu Problémy a vylepšení bačktračkingu -í* Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechu pr i prohledávání & Algoritmy pohledu dopredu kontrolují podmínky dop redu -i- backtracking odhalí nesplnení podmínky teprve když p r i radí hodnoty jejím promenným príklad: A,B,C,D,E in 1..10, A=3*E konzistencními algoritmy lze p r edem upravit domény A a E -í* Bačkjumping se vrací k puvodci chyby príklad: A,B,C,D,E in 1..10, A>E backtracking vyzkouší všechny možnosti pro B,C,D než odhalí A=1 hned po prvním neúspešném p r i razení E se lze vrátit k p r i razování A Hana Rudová, Omezující podmínky, 4. prosince 2018 129 Prohledávání a pohled dop redu Přoblémy a vylepšení backtřackingu £ Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechu pri prohledávání & Algořitmy pohledu dopředu kontrolují podmínky dopredu -i- backtracking odhalí nesplnení podmínky teprve když priradí hodnoty jejím promenným príklad: A,B,C,D,E in 1..10, A=3*E konzistencními algoritmy lze predem upravit domény A a E -i* Backjumping se vrací k puvodci chyby príklad: A,B,C,D,E in 1..10, A>E backtracking vyzkouší všechny možnosti pro B,C,D než odhalí A=1 hned po prvním neúspešném prirazení E se lze vrátit k prirazování A & Dynamický backtřacking: zmena uspořádání minulých promenných & Neúplná přohledávání: hledání pouze v nekterých cástech stavového prostoru Hana Rudová, Omezující podmínky, 4. prosince 2018 129 Prohledávání a pohled dop redu Algoritmy pohledu dopředu (look-ahead) LA Používají propagace omezení Vyvolány pred přiřazováním hodnoty další proměnné Snaží se zjistit, jak rozhodnutí o výberu promenných a hodnot ovlivní budoucí prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 130 Prohledávání a pohled dopredu Algoritmy pohledu dopředu (look-ahead) LA Používají propagace omezení Vyvolány pred přiřazováním hodnoty další proměnné Snaží se zjistit, jak rozhodnutí o výberu promenných a hodnot ovlivní budoucí prohledávání Po provedení propagace omezení lze mnohem lépe rozhodnout, kterou proměnnou p r i r adit vetšinou lepší priradit promenné, které nejvíce omezují zbytek stavového prostoru príklad: A,B,C,D,E in 1..10, D=A*B*C*E, E>5, lépe je zacít s E Hana Rudová, Omezující podmínky, 4. prosince 2018 130 Prohledávání a pohled dopredu Algoritmy pohledu dopredu (look-ahead) LA Používají propagace omezení Vyvolány pred prirazováním hodnoty další promenné Snaží se zjistit, jak rozhodnutí o výberu promenných a hodnot ovlivní budoucí prohledávání Po provedení propagace omezení lze mnohem lépe rozhodnout, kterou promennou přiřadit vetšinou lepší priradit promenné, které nejvíce omezují zbytek stavového prostoru príklad: A,B,C,D,E in 1..10, D=A*B*C*E, E>5, lépe je zacít s E a rozhodnout, kterou hodnotu priradit promenné snaha o výber hodnoty, která umožní nejvíce voleb v budoucích prirazeních príklad: A,B,C in 1..10, A*B<10, B=C*2, pro A je lepší vybrat 1 Hana Rudová, Omezující podmínky, 4. prosince 2018 130 Prohledávání a pohled dop redu Algoritmy pohledu dopredu (look-ahead) LA -í* Používají propagace omezení C- Vyvolány p r ed p r i razováním hodnoty další promenné & Snaží se zjistit, jak rozhodnutí o výberu promenných a hodnot ovlivní budoucí prohledávání JS> Po provedení propagace omezení lze mnohem lépe rozhodnout, kterou promennou přiřadit vetšinou lepší p r i radit promenné, které nejvíce omezují zbytek stavového prostoru príklad: A,B,C,D,E in 1..10, D=A*B*C*E, E>5, lépe je zacít s E a rozhodnout, kterou hodnotu priradit promenné snaha o výber hodnoty, která umožní nejvíce voleb v budoucích p r i razeních p r íklad: A,B,C in 1..10, A*B<10, B=C*2, pro A je lepší vybrat 1 Vylepšení složitosti nejhoršího p rípadu oproti naivnímu backtrackingu z rídka. Cílem je snaha o efektivní využití algoritmů propagace omezení. Hana Rudová, Omezující podmínky, 4. prosince 2018 130 Prohledávání a pohled dopredu Pohled dopredu pro výber hodnoty procedure Look-Ahead((X,D, C)) rozdíly od backtrackingu i := 1 (inicializace CítaCe proměnných) D- := Di pro 1 < i < n (kopírování domény) while 1 < i < n prirazení xi := Select-Value-XXX if xi is null (žádná hodnota nebyla vrácena) i := i - 1 (zpetná fáze) nastav všechny D'k, k> i na jejich hodnotu pred poslední instanciací xi else i := i+ 1 (dopredná fáze) if i = 0 return ,,nekonzistentní'' else return prirazené hodnoty {x1,...,xn} end Look-Ahead JS* Select-Value-XXX se liší dle typu LA algoritmu & Ukládáno n kopií každé D' S* pro každou úroven ve stavovém prostoru jedna kopie Hana Rudová, Omezující podmínky, 4. prosince 2018 131 Prohledávání a pohled dop redu Kontrola dopredu (forward checking) FC J5> procedure Select-Value-Forward-Checking while D- is not empty vyber a smaž libovolný a g D-for V k, i < k < n for V b g D'k if not Consistent(ai-1,xi = a,xk = b) smaž b z D'k if 3k,i< k < n: D'k is empty (xi = a vede do slepé vetve, nevybírej a) nastav všechny D'k ,i V2, c2: V2 = 3 x V3 Stavový prostor: 1 c1 => fail V2 c1 => V2=1 c2 => fail c1 => V2=1..2 c2 => fail 3 4 c1 => V2 =1..3 c2 => V2 = 3 V3= 1 V3 1 Hana Rudová, Omezující podmínky, 4. prosince 2018 135 Prohledávání a pohled dop redu Prohledávání s iniciální konzistencí Prohledávací algoritmus casto aplikován až po zajištení iniciální konzistence typicky: iniciální konzistence a pak kontrola dop redu nebo iniciální konzistence a pak pohled dop redu P ríklad: pohled dop redu + iniciální konzistence V1.V2.V3 in 1...4 c 1: Vi > V2, c 2: V2 = 3 x V3 v2 v3 4 cl => V in 2..4 V2 in 1..3 c2 => V2 = 3 V3 = 1 4 cl => V1= 4 3 1 Hana Rudová, Omezující podmínky, 4. prosince 2018 136 Prohledávání a pohled dop redu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky C(Vi ,Va),...,c(Va-1,Va) z minulých proměnných do aktuální promenné BT a +FC +LA n promenne aktuální Hana Rudová, Omezující podmínky, 4. prosince 2018 137 Prohledávání a pohled dopředu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky C(Vi ,Va),...,c(Va-1,Va) z minulých promenných do aktuální promenné Kontrola dop ředu (FC) kontroluje v kroku a podmínky c(Va+1,Va),...,c(Vn,Va) z budoucích promenných do aktuální promenné BT a +FC +LA n promenne aktuální Hana Rudová, Omezující podmínky, 4. prosince 2018 137 Prohledávání a pohled dop redu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky c(V1 ,Va),...,c(Va-1,Va) z minulýčh promennýčh do aktuální promenné Kontrola dopredu (FC) kontroluje v kroku a podmínky c(Va+1,Va),...,c(Vn,Va) z budoučíčh promennýčh do aktuální promenné BT a Pohled dopředu (LA) kontroluje v kroku a podmínky Vl(a < l < n), Vk(a < k < n), k = l: c(VkVi) z budoucích proměnných do aktuální promenné a mezi budoucími proměnnými +FC +LA n promenne aktuálni Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 137 Prohledávání a pohled dop redu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky C(Vi ,Va),...,c(Va-1,Va) z minulých proměnných do aktuální proměnné Kontrola dopredu (FC) kontroluje v kroku a podmínky C(Va+1,Va),...,C(Vn,Va) z budoucích proměnných do aktuální proměnné BT a Pohled dopředu (LA) kontroluje v kroku a podmínky Vl(a < l < n), Vk(a < k < n),k = l: c(Vk,Vi) z budoucích proměnných do aktuální proměnné a mezi budoucími proměnnými +FC +LA n promenne aktuálni Cvičení: porovnejte jednotlivé algoritmy pro príklad Vi, V2, V3 g {1,2, 3,4}, V = V2 * 2, V3 = V2 + 1, nakreslete odpovídající stavový prostor a u každého stavu uved'te, ke kterým propagacím omezení dochází. Hana Rudová, Omezující podmínky, 4. prosince 2018 137 Prohledávání a pohled dop redu Shrnutí: pohledu dopredu pro výber hodnoty & Kontrola dopredu (forward checking) FC & FC zajišťuje konzistenci mezi aktuální promennou a budoucími promennými, které jsou s ní spojeny dosud nesplnenými podmínkami JS> Opravdový úplný pohled dopredu (real full look-ahead) RFLA casto se odkazuje: LA algoritmus RFLA=LA nebo Maintaining Arč-Consistenčy MAC i* LA je rozšír ení FC, LA zajišťuje hranovou konzistenci LA navíc ove r uje i konzistenci všech hran mezi budoucími promennými Hana Rudová, Omezující podmínky, 4. prosince 2018 138 Prohledávání a pohled dop redu Shrnutí: pohledu dopredu pro výber hodnoty & Kontrola dopredu (forward checking) FC & FC zajišťuje konzistenci mezi aktuální promennou a budoucími promennými, které jsou s ní spojeny dosud nesplnenými podmínkami JS> Opravdový úplný pohled dopredu (real full look-ahead) RFLA casto se odkazuje: LA algoritmus RFLA=LA nebo Maintaining Arc-Consistency MAC i* LA je rozšírení FC, LA zajišťuje hranovou konzistenci LA navíc overuje i konzistenci všech hran mezi budoucími promennými & Úplný pohled dopredu (full look-ahead) FLA pouze jeden pruchod repeat until cyklem algoritmu Hana Rudová, Omezující podmínky, 4. prosince 2018 138 Prohledávání a pohled dopředu Shrnutí: pohledu dopredu pro výber hodnoty & Kontrola dopredu (forward checking) FC & FC zajišťuje konzistenci mezi aktuální promennou a budoucími promennými, které jsou s ní spojeny dosud nesplnenými podmínkami JS> Opravdový úplný pohled dopredu (real full look-ahead) RFLA casto se odkazuje: LA algoritmus RFLA=LA nebo Maintaining Arc-Consistency MAC i* LA je rozšírení FC, LA zajišťuje hranovou konzistenci LA navíc overuje i konzistenci všech hran mezi budoucími promennými & Úplný pohled dopredu (full look-ahead) FLA pouze jeden pruchod repeat until cyklem algoritmu -í* Cástecný pohled dopredu (partial look-ahead) PLA -** pouze jeden pruchod repeat until cyklem algoritmu -i- nahrazuje for V k,k = j,i < k < n výrazem for V k,ji na jejich hodnotu pred poslední instanciací xi else if i < n s :=mini bakalár ský kurz vyucovaný v anglictine na Hochschule Konstanz, Technik, Wirtschaft,und Gestaltung (Nemecko) v kvetnu 2009 ü> http://www.fi.muni.cz/~hanka/konstanz09/ & propagace, prohledávání, modelování, p ríklady -i* omezující podmínky ü> použití omezujících podmínek pro rozvrhování Cást p r ednášky Constraint Programming: Search ü> algoritmy v rekurzivním pseudokódu JS> p ríklady prohledávání stavového prostoru vcetne r ešení Hana Rudová, Omezující podmínky, 4. prosince 2018 145 Prohledávání a pohled dop redu Pohled zpět Prehled algoritmů pohledu zpet look-back & Algoritmy skoku zpet (backjumping) Jt pri backtrackingu se nevracíme pouze jeden krok it snažíme se vracet co nejdále až ke zdroji chyby -i* Algoritmy uCení (constraint recording, no-good learning) it no-good = chybné ccástecné prirazení it pridáme nová omezení, která zakazují nalezená chybná prirazení M Dynamický backtracking it pri skoku zpet se snažíme nezapomínat už udelanou práci it meníme hodnoty pouze u minulých promenných s konfliktem (ostatní nemeníme) it realizace: zmeníme usporádání promenných Backmarking it pamatuje si, kde testy na konzistenci neuspely it eliminuje opakování dríve provedených konzistencních testu Hana Rudová, Omezující podmínky, 4. prosince 2018 147 Pohled zpet pri prohledávání Konfliktní množina pevné usporádání promenných (x1,...,xn) Mejme cástecné konzistentní prirazení a = (aii,aik) libovolné podmnožiny promenných a uvažujme dosud neprirazenou promennou x. Jestliže neexistuje hodnota b z domény x tak, aby (a,x = b) bylo konzistentní, ríkáme, že a je konfliktní množina x a nebo, že a je v konfliktu s x. omezeni: ^ red .green.teal vyznacené prirazení je konfliktní množina vzhledem k x7 Hana Rudová, Omezující podmínky, 4. prosince 2018 148 Pohled zpet p ri prohledávání Konfliktní množina pevné usporádání promenných (x1,...,xn) Mejme cástecné konzistentní prirazení a = (ail,aik) libovolné podmnožiny promenných a uvažujme dosud neprirazenou promennou x .Jestliže neexistuje hodnota b z domény x tak, aby (a,x = b) bylo konzistentní, ríkáme, že a je konfliktní množina x a nebo, že a je v konfliktu s x. omezeni: ^ red .green.teal vyznacené prirazení je konfliktní množina vzhledem k x7 M Pokud a neobsahuje j-tici (j < k), která je v konfliktu s x, pak nazýváme a minimální konfliktní množina. {x1/red,x3/blue}: min.konf.množina vzhledem k x7 Hana Rudová, Omezující podmínky, 4. prosince 2018 148 Pohled zpet pri prohledávání Chybné přiřazení Mějme částečné konzistentní přiřazení ai-l = (alt..., ai-l). Jestliže je ai-l v konfliktu s xi, pak ho nazýváme list slepé vetve. přiřazení v předchozím příkladu je list slepé vetve Hana Rudová, Omezující podmínky, 4. prosince 2018 149 Pohled zpet při přohledávání Chybné p r i razení Mejme cástecné konzistentní prirazení ai-l = (alt..., ai-l). Jestliže je ai-l v konfliktu s xi, pak ho nazýváme list slepé vetve. Jt prirazení v predchozím príkladu je list slepé vetve Cástecné prirazení a, které se nevyskytuje v žádném rešení CSP, se nazývá chybné p r i razení (no-good). S> konfliktní množinyjsou chybná prirazení [xl/blue,X2/green,x5/blue] je chybné prirazení, ale nepatrí do žádné konfliktní množiny Hana Rudová, Omezující podmínky, 4. prosince 2018 149 Pohled zpet p ri prohledávání Chybné přiřazení Mějmě cástěcné konzistěntní p r i razění ai_1 = (ai,..., ai_i). Jěstližě jě ai_i v konfliktu s xi, pak ho nazývámě list slepé vetve. p r i razění v p rědchozím p ríkladu jě list slěpé větvě Cástěcné p r i razění a, ktěré sě něvyskytujě v žádném r ěšění CSP, sě nazývá chybné přiřazení (no-good). S> konfliktní množinyjsou chybná p r i razění [x1/bluě,x2/grěěn,x5/bluě] jě chybné p r i razění, alě něpat r í do žádné konfliktní množiny konflitní množina = chybné p r i razění vzhlěděm k jědiné proměnné Hana Rudová, Omězující podmínky, 4. prosincě 2018 149 Pohlěd zpět p ri prohlědávání Chybné p r i razení Mejme cástecné konzistentní prirazení at_1 = (a1,..., at_1). Jestliže je at_1 v konfliktu s xt, pak ho nazýváme list slepé vetve. přiřazení v předchozím príkladu je list slepé vetve Cástecné přiřazení a, které se nevyskytuje v žádném řešení CSP, se nazývá chybné p r i razení (no-good). S> konfliktní množinyjsou chybná prirazení -i- [x1/blue,x2/green,X5/blue] je chybné prirazení, ale nepatrí do žádné konfliktní množiny konflitní množina = chybné přiřazení vzhledem k jediné promenné -í* Minimální chybná p r i razení neobsahují chybná přiřazení méne proměnných. Hana Rudová, Omezující podmínky, 4. prosince 2018 149 Pohled zpet při prohledávání Konfliktní přomenná i) je bezpečná, nevynecháme žádné řešení 1 j C Mejme list slepé vetve di-l. Přomenná Xj (j < i -pokud je äj chybné přiřazení. také říkáme, že skok z xi na Xj je bezpecný Hana Rudová, Omezující podmínky, 4. přosince 2018 Pohled zpet p ři přohledávání Konfliktní proměnná Mejme list slepé vetve äi-1. Promenná Xj (j < i - 1) je bezpecná, pokud je äj chybné prirazení. -fc také ríkáme, že skok z xi na Xj je bezpecný nevynecháme žádné rešení -í* Mejme list slepé vetve äi-1. Promenná xb je konfliktní proměnná (culprit) vzhledem k äi-1, jestliže b = min{k < i | äk v konfliktu s xi}. na 1 b-1 ... a b- jnení v konfliktu s xi b......a b v konfliktu s x { k.......ak v konfliktu s x { j Hana Rudová, Omezující podmínky, 4. prosince 2018 Pohled zpet p ri prohledávání Konfliktní proměnná Mejme list slepé vetve äi-1. Promenná Xj (j < i - 1) je bezpecná, pokud je äj chybné prirazení. Jt také r íkáme, že skok z xi na Xj je bezpecný nevynecháme žádné r ešení -í* Mejme list slepé vetve äi-1. Promenná xb je konfliktní přomenná (culprit) vzhledem k äi-1, jestliže b = min{k < i | ak v konfliktu s xi}. na 1 b-1 ... a b- jnení v konfliktu s xi b......a b v konfliktu s x { k.......ak v konfliktu s x { j & Tvrzení: Skok ke konfliktní promenné je bezpecný. Hana Rudová, Omezující podmínky, 4. prosince 2018 150 Pohled zpet p r i prohledávání Gaschnigův skok zpět Gaschnig's backjumping (GBJ) J* když nedokážeme přiřadit hodnotu proměnné xi, vracíme se zpět (skáčeme zpět) ke konfliktní proměnné -i- určení konfliktní promenné pro každou hodnotu vi g xi nalezneme promennou s nejmenším indexem, která je s xi/vi v konfliktu (prirazení této promenné musíme určite zmenit, aby šla hodnota vi použít) i- konfliktní promennáje ta z nich, která má nejvetší index (když její hodnotu zmeníme, mužeme zrušit konflikt s odpovídající hodnotou) ví v2 au Hana Rudová, Omezující podmínky, 4. prosince 2018 151 Pohled zpet pri prohledávání Algoritmus GBJ Každá promenná xi uchovává v latesti index konfliktní promenné procedure GBJ((X,D, C)) rozdíly od backtrackingu i := 1 (inicializace CítaCe proměnných) D- := Di (kopírování domény) latesti := 0 (inicializace cítace na konfliktní promennou while 1 < i < n prirazení xi := Select-Value-GBJ if xi is null (žádná hodnota nebyla vrácena) i := latesti (skok zpet) else i := i+ 1 (dopredná fáze) D[ := Di latesti := 0 if i = 0 return ,,nekonzistentní'' else return prirazené hodnoty {x1,...,xn} end GBJ Hana Rudová, Omezující podmínky, 4. prosince 2018 152 Pohled zpet pri prohledávání GBJ: výběr hodnoty procedure Select-Value-GBJ while D- is not empty vyber a smaž libovolný v e D- ví T7 v2 consistent := true k := 1 while k latest i latesti := k if not Consistent(vk,xi = v) consistent := false else k := k+1 if consistent return v return null (v doméne xi neexistuje konzistentní hodnota) Hana Rudová, Omezující podmínky, 4. prosince 2018 153 Pohled zpět při prohledávání GBJ: príklad Xj__ x7 omezeni:^ -Ä* vyznačené p r i razení zároven r íká, že p r edčhozí hodnoty už jsme vyzkoušeli (a vyradili) x- = red vyr adí x1 (tj. /afesf7 = 1), x7 = blue vyr adí x3 =^ čelkem /afesf7 = 3 -Ä* vračíme se ke konfliktní promenné x3, ta už má ale prázdnou doménu & /afesf3 = 2, vračíme se tedy k x2 -i* x3=red dala /afesf3 na 1, x3=blue dala /afesf3 na 2 & lépe (až k x1) se ale vrátit neumíme, GBJ se v tomto okamžiku vračí k p r edčhozí promenné Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 154 Pohled zpet p r i prohledávání Konflikty r ízený skok zpet Conflict-directed backjumping CBJ -í* Pri skoku zpet na proměnnou Xj z listu slepé větve nemusíme nalézt v doméně Xj žádné hodnoty pro prirazení. äj-1 se pak nazývá vnitr ní slepá vetev. Hana Rudová, Omezující podmínky, 4. prosince 2018 155 Pohled zpet pri prohledávání Konflikty řízený skok zpět Conflict-directed backjumping CBJ ii> Pri skoku zpet na proměnnou Xj z listu slepé větve nemusíme nalézt v doméně Xj žádné hodnoty pro prirazení. äj_i se pak nazývá vnitřní slepá větev. & CBJ skáce zpet v listu slepé vetve i ve vnitřní slepé vetvi -i- udržujeme Ji množinu skoků zpět pro každou promennou pomocí nesplnených omezení promenná Xj(j < i) je bližší k xi než xk(k < i), jestliže j > k, naopak xk je vzdálenější -i- omezení R je vzdálenější než omezení S, jestliže je nejbližší promenná v rozsahu R vzdálenejší než nejbližší promenná v rozsahu S (pokud totožné promenné, rozhodují další promenné). Pro usporádání (x1,x2,...): rozsah R1: (x3,x5,x7), rozsah S1: (x2,x6,x8,x9) R1 je vzdálenejší než S1 od x10 Hana Rudová, Omezující podmínky, 4. prosince 2018 155 Pohled zpet pri prohledávání Konflikty rízený skok zpet Conflict-directed backjumping CBJ -í* Pr i skoku zpet na proměnnou Xj z listu slepé vetve nemusíme nalézt v doméne Xj žádné hodnoty pro p r i razení. äj-1 se pak nazývá vnitrní slepá vetev. & CBJ skáce zpet v listu slepé vetve i ve vnitr ní slepé vetvi -i- udržujeme Jt množinu skoku zpet pro každou promennou pomocí nesplnených omezení it promenná Xj(j < i) je bližší k xt než xk(k < t), jestliže j > k, naopak xk je vzdálenejší it omezení R je vzdálenejší než omezení S, jestliže je nejbližší promenná v rozsahu R vzdálenejší než nejbližší promenná v rozsahu S (pokud totožné promenné, rozhodují další promenné). Pro uspo rádání (x1,x2,...): rozsah R1: (x3,xs,x7), rozsah S1: (x2,x6,x8,x9) R1 je vzdálenejší než S1 od x10 rozsah R2: (x3,x5,x8,x9), rozsah S2: (x2,x6,x8,x9) R2 je vzdálenejší než S2 od x10 Hana Rudová, Omezující podmínky, 4. prosince 2018 155 Pohled zpet p ri prohledávání Konflikty r ízený skok zpet Conflict-directed backjumping CBJ -í* Pri skoku zpet na promennou Xj z listu slepé vetve nemusíme nalézt v doméne Xj žádné hodnoty pro prirazení. äj-l se pak nazývá vnitr ní slepá vetev. & CBJ skáce zpet v listu slepé vetve i ve vnitrní slepé vetvi -i- udržujeme Ji množinu skoků zpet pro každou promennou pomocí nesplnených omezení promenná Xj(j < i) je bližší k xi než xk(k < i), jestliže j > k, naopak xk je vzdálenejší -i- omezení R je vzdálenejší než omezení S, jestliže je nejbližší promenná v rozsahu R vzdálenejší než nejbližší promenná v rozsahu S (pokud totožné promenné, rozhodují další promenné). Pro usporádání (xl,x2,...): rozsah Rl: (x3,xs,x7), rozsah Sl: (x2,x6,x8,x9) Rl je vzdálenejší než Sl od xl0 rozsah R2: (x3,x5,x8,x9), rozsah S2: (x2,x6,x8,x9) R2 je vzdálenejší než S2 od xl0 S> mezi nesplnenými omezeními vybereme to nejvzdálenejší (ostatní omezení neumožní nejdelší možný skok zpet) Jt skocíme zpet na nejbližší promennou v tomto omezení (je bezpecné zmenit promennou, která byla nejpozdeji prirazená) Hana Rudová, Omezující podmínky, 4. prosince 2018 155 Pohled zpet pri prohledávání CBJ: výber hodnoty procedure Select-Value-CBJ while D- is not empty vyber a smaž libovolný v g D- consistent := true k := 1 while k X4 pred vstupem do Select-Value-CBJ pro proměnnou x7 je J7 = 0 x3 = x7 je nejvzdálenejší omezení, které vyřadilo x7 = red, tedy J7 = {x3} x\ = x7 je nejvzdálenejší omezení, které vyřadilo x7 =blue, tedy J7 = {xi,x3) skáCeme zpet na poslední promennou v J7, tedy na x3 do J3, která byla zatím prázdná, pridáme x1 doména x3 je prázdná, v J3 je jediná promenná x1 a na tu se vracíme Hana Rudová, Omezující podmínky, 4. prosince 2018 158 Pohled zpet pri prohledávání uceni C Množiny skoku zpetjsou chybná přiřazení vypocítaná behem přohledávání přohledávání a jsou znovu pocítána & Přidáme chybná přiřazení jako nová omezení při detekci slepé vetve i> nemá cenu uchovávat celou slepou vetev di v přomenné xi+l na toto přiřazení už pozdeji nenařazíme & uchováme chybná přiřazení na podmnožine přomenných {xl,.. .,xi} M Přořezávání stavového přostořu & cím menší chybná přiřazení se podaří uchovat, tím řychlejší bude přohledávání & Zvetšování množiny omezení -i- cena za přořezávání stavového přostořu nesmí přemst cenu za zvetšování množiny omezení Hana Rudová, Omezující podmínky, 4. přosince 2018 159 Pohled zpet p ři přohledávání Ucení skoku zpet (jumpback learning) Využijeme chybná prirazení, která jsme se naucili v CBJ Algoritmus ucení skoku zpet = CBJ + pridávání nových omezení Po dosažení listu slepé vetve di-1 pridáme omezení zakazující (zi-1 [Ji] projekce na Ji Hana Rudová, Omezující podmínky, 4. prosince 2018 160 Pohled zpet p ri prohledávání ucení skoku zpet (jumpback learning) Využijeme chybná přiřazení, která jsme se naucili v CBJ Algoritmus ucení skoku zpet = CBJ + přidávání nových omezení Po dosažení listu slepé vetve ai_1 přidáme omezení zakazující ai_1 [Ji] projekce na Ji po dosažení listu slepé vetve v x6 je J6 = {x2,x4,x5} <= red vyřadila x6 = x5, blue vyřadila x6 = x2, green vyřadila x6 = x4 Hana Rudová, Omezující podmínky, 4. prosince 2018 16G Pohled zpet p ri prohledávání ucení skoku zpět (jumpback learning) Využijěmě chybná p r i r azění, ktěrá jsmě sě naucili v CBJ Algoritmus ucění skoku zpět = CBJ + p r idávání nových omězění Po dosažení listu slepé vetve ai-1 p r idáme omezení zakazujíčí ai-1 [Ji] projekce na Ji po dosažění listu slěpé větvě v x6 jě J6 = {x2,x4,x5} <= rěd vyradila x6 = x5, bluě vyradila x6 = x2, grěěn vyradila x6 = x4 a5[J6] tedy zakazuje p r i razení [{x2,blue), (x4,green), (x5,red)] -i- pozdeji p r i pročházení stromu lze nap r . ze znalosti x2 =blue, x4 Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 160 green odvodit x5 =red Pohled zpet p ri prohledávání Další rozšírění backtrackingu Problémy skoku zpet C Pr i skoku zpět zapomínámě už udělanou práci M Pr íklad: Obarvětě graf trěmi barvami tak, žě mají sousědní vrcholy různou barvu (uvěděné hodnoty barěvjsmě už vyzkoušěli) Hana Rudová, Omězující podmínky, 4. prosincě 2018 162 Další rozšírění backtrackingu Problémy skoku zpět C Pri skoku zpet zapomínáme už udelanou práci M Príklad: Obarvete graf tremi barvami tak, že mají sousední vrcholy mznou barvu (uvedené hodnoty barevjsme už vyzkoušeli) Hana Rudová, Omezující podmínky, 4. prosince 2018 162 Další rozšírení backtrackingu Problémy skoku zpet C Pri skoku zpet zapomínáme už udelanou práci M Príklad: Obarvete graf tremi barvami tak, že mají sousední vrcholy mznou barvu (uvedené hodnoty barevjsme už vyzkoušeli) Hana Rudová, Omezující podmínky, 4. prosince 2018 162 Další rozšírení backtrackingu Problémy skoku zpět C Pri skoku zpet zapomínáme už udelanou práci M Príklad: Obarvete graf tremi barvami tak, že mají sousední vrcholy mznou barvu (uvedené hodnoty barevjsme už vyzkoušeli) Pri druhém ohodnocení C deláme zbytecnou práci, stacilo nechat původní hodnotu 2, zmenou B se nic neporušilo Hana Rudová, Omezující podmínky, 4. prosince 2018 162 Další rozšírení backtrackingu Dynamický backtřacking: příklad JS> Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + prenos důvodu konfliktu + zmena po radí promenných = dynamický backtřacking Hana Rudová, Omezující podmínky, 4. prosince 2018 163 Další rozšírení backtrackingu Dynamický backtracking: p r íklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + prenos duvodu konfliktu + zmena poradí promenných = dynamický backtracking Vrchol 1 2 3 A o B o vybraná barva: o C A o duvod konfliktu: AB D A B o E A B D Hana Rudová, Omezující podmínky, 4. prosince 2018 163 Další rozšírení backtrackingu Dynamický backtracking: p r íklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + prenos duvodu konfliktu + zmena poradí promenných = dynamický backtracking Vrchol 1 2 3 Vrchol 1 2 3 A o A o B o B o vybraná barva: o C A o C A o duvod konfliktu: AB D A B o D A B AB E A B D E A B skok zpet (na D) + prenos důvodu chyby (AB) Hana Rudová, Omezující podmínky, 4. prosince 2018 163 Další rozšírení backtrackingu Dynamický backtracking: příklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si dUvodu konfliktu + prenos duvodu konfliktu + zmena poradí proměnných = dynamický backtracking Vrchol 1 2 3 Vrchol 1 2 3 Vrchol 1 23 A o A o A o B o B o C A o vybraná barva: o C A o C A o B o A důvod konfliktu: AB D A B o D A B AB D A o E A B D E A B E A Do skok zpět (na D) + prenos důvodu chyby (AB) skok zpět (na B) + prenos důvodu chyby (A) + změna poradí (B,C) Hana Rudová, Omezující podmínky, 4. prosince 2018 163 Další rozšírení backtrackingu Dynamický backtracking: p r íklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + prenos duvodu konfliktu + zmena poradí promenných = dynamický backtracking Vrchol 1 2 3 Vrchol 1 2 3 Vrchol 1 23 A o A o A o B o B o C A o vybraná barva: o C A o C A o B o A duvod konfliktu: AB D A B o D A B AB D A o E A B D E A B E A Do skok zpet (na D) skok zpet (na B) + prenos důvodu chyby (AB) + prenos důvodu chyby (A) + zmena poradí (B,C) & Vrchol C, resp. celý graf, který na nem prípadne visel není nutno prebarvovat Hana Rudová, Omezující podmínky, 4. prosince 2018 163 Další rozšírení backtrackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := 0; Unlabelled := Variables while Unlabelled <> 0 do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints Hana Rudová, Omezující podmínky, 4. prosince 2018 164 Další rozšírení backtrackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := 0; Unlabelled := Variables while Unlabelled <> 0 do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints if ValuesX = 0 then necht' E je vysvetlení konfliktu (množina konfliktních promenných) if E = 0 then failure else necht' Y je nejbližší promenná v E zruš prirazení Y (z Labelled) s vysvetlením E-Y smaž všechna vysvetlení zahrnujícící Y Hana Rudová, Omezující podmínky, 4. prosince 2018 164 Další rozšírení backtrackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := 0; Unlabelled := Variables while Unlabelled <> 0 do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints if ValuesX = 0 then necht' E je vysvetlení konfliktu (množina konfliktních promenných) if E = 0 then failure else necht' Y je nejbližší promenná v E zruš prirazení Y (z Labelled) s vysvetlením E-Y smaž všechna vysvetlení zahrnujícící Y else vyber V z ValuesX Unlabelled := Unlabelled - {X} Labelled := Labelled u {X/V} return Labelled Hana Rudová, Omezující podmínky, 4. prosince 2018 164 Další rozšírení backtrackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := O; Unlabelled := Variables while Unlabelled <> O do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints if ValuesX = O then necht' E je vysvetlení konfliktu (množina konfliktních promenných) if E = O then failure else necht' Y je nejbližší promenná v E zruš prirazení Y (z Labelled) s vysvetlením E-Y smaž všechna vysvetlení zahrnujícící Y else vyber V z ValuesX Unlabelled := Unlabelled - {X} Labelled := Labelled u {X/V} return Labelled Nevýhody algoritmu: preusporádáváním promenných rušíme efekt heuristik výberu promenných Hana Rudová, Omezující podmínky, 4. prosince 2018 164 Další rozšírení backtrackingu Redundance backtrackingu Redundantní práce: opakování výpoctu, jehož výsledek už máme k dispozici A,B,C,D: {1,2,...,10}, A+8 BackTo Mark(Y,b) BackTo(Y) BackTo(Y) Mark(Y,b) Y/b je nekonzistentní Y/b je s X/a stále s X/a (konzistentní nekonzistentní, se vším nad X) Y=b tedy nezkoušíme přiřazovat Hana Rudová, Omezující podmínky, 4. prosince 2018 166 zde je Y/b v po ráku zde je t reba Y/b znovu zkontrolovat Y=b Y/b je nekonzistení s X/a (ale je konzistentní se vším p redtím) Další rozšíření backtrackingu Backmařking: příklad Problém N králověn 1 m 2 i W 3 2 1 2 m 4 #■ 5 4 2 i 2 3 ľ 6 3 2 3 1 2 3 7 8 1. Dámy p ri razujěmě po rádcích, tj. pro každou dámu hlědámě sloupěc 2. Vědlě šachovnicě píšěmě úrovně návratu (BackTo). Na zacátku všudě 1. 3. Do polícka zapisujěmě císla nějvzdálěnějších konfliktních dam (Mark). Na zacátku všudě 1. Hana Rudová, Omězující podmínky, 4. prosincě 2018 167 Další rozší rění backtrackingu Backmařking: příklad Problém N královen 1. Dámy prirazujeme po rádcích, tj. pro 1 každou dámu hledáme sloupec 1 2. Vedle šachovnice píšeme úrovne návratu 1 (BackTo). Na zacátku všude 1. 1 3. Do polícka zapisujeme císla nejvzdálenejších konfliktních dam (Mark). Na zacátku všude 1. 5 4. Dámu v rádku 6 nelze p r i radit. 1 5. Vracíme se na 5, opravíme BackTo. 1 6. Když znova p r ijdeme na 6, všechny pozice jsou stále špatné (Mark Je možné prohledat jen omezený prostor => Neúplná stromová prohledávání Hana Rudová, Omezující podmínky, 4. prosince 2018 171 Neúplná stromová prohledávání Neúplná stromová prohledávání Neprohledáváme celý stavový prostor Nemáme záruku, že rešení neexistuje, i když ho algoritmus nenalezne -** ztráta úplnosti -i- u nekterých algoritmu lze obecně zaruat úplnost, i když s vyšší složitostí než mel původní algoritmus V rade prípadů najdeme rešení rychleji Hana Rudová, Omezující podmínky, 4. prosince 2018 172 Neúplná stromová prohledávání Neúplná střomová přohledávání & Něprohlědávámě cělý stavový prostor C Němámě záruku, žě r ěšění něěxistujě, i když ho algoritmus něnalězně -** ztráta úplnosti -i- u něktěrých algoritmů lzě obecně zarucit úplnost, i když s vyšší složitostí něž měl původní algoritmus -í* V radě p rípadu najděmě rěšění rychlěji Něúplné algoritmy casto odvozěny od algoritmu úplného (DFS) & přeřušení behu algořitmu (cutoff) po vycěrpání p r idělěného přostředku (cas, pocět návratů, ...) algoritmus p r ěrušímě prost rěděk můžě být globální (pro cělý strom) i lokální (pro daný podstrom něbo uzěl) a opakovaní behu algořitmu (restart) běh p rěděšlého něúplného prohlědávání opakujěmě s jiným nastavěním paramětru p r i opakování běhu lzě využívat algoritmy ucění Hana Rudová, Omězující podmínky, 4. prosincě 2018 172 Něúplná stromová prohlědávání Randomizovaný backtracking & Časově omezený backtřacking (přerušení) it beh (úplného) algoritmu ukoncíme po zadaném casovém intervalu (prostr edek=cas) -4» casový interval lze pro další behy zvetšit == p r i dostatecném poctu kroků máme úplný algoritmus JS> Náhodný výbeř hodnot a přomenných (opakování) i* pokud máme možnost volby p r i výberu hodnot nebo promenných (vzhledem k dané heuristice uspo rádání hodnot a promenných) náhodne zvolíme nekterou z nich Hana Rudová, Omezující podmínky, 4. prosince 2018 173 Neúplná stromová prohledávání Randomizovaný backtracking & Casove omezený backtracking (p rerušení) -i- beh (úplného) algoritmu ukoncíme po zadaném casovém intervalu (prostredek=cas) -4» casový interval lze pro další behy zvetšit == pri dostatecném poctu kroků máme úplný algoritmus JS> Náhodný výber hodnot a promenných (opakování) & pokud máme možnost volby pri výberu hodnot nebo promenných (vzhledem k dané heuristice usporádání hodnot a promenných) náhodne zvolíme nekterou z nich Randomizovaný backtracking s učením A chybná prirazení predchozích behů uchováme a využíváme -4» takto lze také dosáhnout úplnosti, protože chybných prirazení je konecne mnoho Hana Rudová, Omezující podmínky, 4. prosince 2018 173 Neúplná stromová prohledávání Omezení poctu návratů & Bounded-backtrack search (BBS) Omezený pocet návratů (p rerušení) a návrat do bodů volby, kde už nelze vybrat novou hodnotu nezapocítáváme Jt „omezený pocet navštívených listu" & Pri neúspechu zvetšíme pocet návratů o jedna (opakování) C Príklad: BBS(6) ^ Hana Rudová, Omezující podmínky, 4. prosince 2018 174 Neúplná stromová prohledávání Omezení počtu návratů & Bounded-backtrack search (BBS) Omezený pocet návratů (p rerušení) a návrat do bodů volby, kde ůž nelze vybrat novoů hodnotu nezapočítáváme a „omezený počet navštívených listů" & Pri neúspechu zvetšíme počet návratů o jedna (opakování) C Príklad: BBS(6) ^ & Implementace ± pocítáme pocet návratů (neúspechu) a pri prekrocení meze se prohledávání ůkoncí Hana Růdová, Omezující podmínky, 4. prosince 2018 174 Neúplná stromová prohledávání Omezení hloubky Depth-bounded search (DBS) Omezíme hloubku prohledávaného stromu (p rerušení) s> do dané hloubky stromu se zkouší všechny alternativy & ve zbytku stromu se muže použít jiná neúplná metoda Pri neúspechu zvetšíme hloubku prohledávání o jedna (opakování) Príklad: DBS(1,BBS(0)) Hana Rudová, Omezující podmínky, 4. prosince 2018 175 Neúplná stromová prohledávání Omezení hloubky Depth-bounded search (DBS) Omezíme hloubku prohledávaného stromu (přerušení) s> do dané hloubky stromu se zkouší všechny alternativy & ve zbytku stromu se muže použít jiná neúplná metoda Pri neúspechu zvetšíme hloubku prohledávání o jedna (opakování) Príklad: DBS(1,BBS(0)) C Implementace J* udržujeme poradové ccíslo prirazované promenné -i- je-li poradové ccíslo vetší než daná mez, zkouší se pouze jedna alternativa - BBS(0) Hana Rudová, Omezující podmínky, 4. prosince 2018 175 Neúplná stromová prohledávání Prohledávání s kreditem & Credit search (CS) & Omezený kredit (pocet návratU) pro prohledávání (p rerušení) a kredit se rovnomerne delí mezi alternativní vetve prohledávání a jednotkový kredit zakazuje možnost volby (hodnoty) & Pri neúspechu navýšíme kredit o jedna (opakování) Hana Rudová, Omezující podmínky, 4. prosince 2018 176 Neúplná stromová prohledávání Prohledávání s kreditem & Credit search (CS) & Omezený kredit (poCet návratů) pro prohledávání (prerušení) it kredit se rovnomerne delí mezi alternativní vetve prohledávání it jednotkový kredit zakazuje možnost volby (hodnoty) & Pr i neúspechu navýšíme kredit o jedna (opakování) it v každém uzlu se nejednotkový kredit (rovnomerne) rozdelí mezi alternativní podstromy it p r i jednotkovém kreditu se neberou alternativy Hana Rudová, Omezující podmínky, 4. prosince 2018 176 Neúplná stromová prohledávání řozsiřováni JS> Iterative broadening IB C- Omězěný maximální pocět volěb (hodnot) p r i každém výběru proměnné (přeřuSení) a v každém bodě volby větvění omězěno konstantou a p r i p r ěkrocění max. poctu volěb pokracujěmě p r ědchozím boděm volby & Pr i něúspěchu zvýšímě povolěný pocět volěb ojědna (opakování) C Príklad: IB(2) ř^^_ Implěměntacě S> po výběru proměnné umožnímě pouzě výběr urcěného poctu jějích hodnot Hana Rudová, Omězující podmínky, 4. prosincě 2018 177 Něúplná stromová prohlědávání Stromová prohledávání a heuristiky -i* Pri rešení reálných problému casto existuje nápoveda odvozená ze zkušeností s „rucním" rešením problému & Heuristiky - radí, jak pokracovat v prohledávání -i- doporucují hodnotu pro prirazení casto vedou prímo k rešení C Co delat, když heuristika neuspeje? J* DFS se stará hlavne o konec prohledávání (spodní cást stromu) -i- DFS tedy spíše opravuje poslední použité heuristiky než první S> DFS predpokládá, že dríve použité heuristiky ho navedly dobre Hana Rudová, Omezující podmínky, 4. prosince 2018 178 Neúplná stromová prohledávání Stromová prohledávání a heuristiky -i* Pri rešení reálných problému casto existuje nápoveda odvozená ze zkušeností s „rucním" rešením problému & Heuristiky - radí, jak pokracovat v prohledávání it doporucují hodnotu pro prirazení Jt casto vedou prímo k rešení C Co delat, když heuristika neuspeje? -** DFS se stará hlavne o konec prohledávání (spodní cást stromu) it DFS tedy spíše opravuje poslední použité heuristiky než první S> DFS predpokládá, že dríve použité heuristiky ho navedly dobre -í* Pozorování: A pocet porušení heuristiky na úspešné ceste je malý J> heuristiky jsou méne spolehlivé na zacátku prohledávání než na jeho konci (na konci máme více informací a méne možností) Hana Rudová, Omezující podmínky, 4. prosince 2018 178 Neúplná stromová prohledávání Zotavení se z chyb heuristiky Heuristika doporucuje hodnotu pro přiřazení Diskrepance = porušení heuristiky a použita jiná hodnota, než doporucila heuristika Pozorování: málo chyb heuristiky na ceste k řešení => cesty s méne diskrepancemi jsou prozkoumány dříve Pozorování: chyby heuristiky hlavne na zacátku cesty => cesty s diskrepancemi na zacátku jsou prozkoumány dříve Hana Rudová, Omezující podmínky, 4. prosince 2018 179 Neúplná stromová prohledávání Omezené diskrepanče & Limited discrepancy search (LDS) -i* Omezený maximální pocet diskrepancí na ceste (p rerušení) -fc cesty s diskrepancemi na zacátků jsoů prozkoůmány dríve JS> Pri neúspechů navýšíme pocet povolených diskrepancí o jedna (opakování) tj. nejprve jdeme tak, jak doporůcůje heůristika; potom jdeme po cestách s maximálne jednoů diskrepancí; pak maximálne se dvema diskrepancemi, atd. J§> Príklad: LDS-PROBE(l), heůristika doporůcůje vydat se levoů vetví * Diskrepanče pro nebinární domény S> nedoporůcené hodnoty se beroů jako jedna diskrepance (zde) -i- výber každé další hodnoty promenné je jedna diskrepance (tj. tretí hodnota = dve diskrepance, ctvrtá hodnota = tri diskrepance, ...) Hana Růdová, Omezující podmínky, 4. prosince 2018 180 Neúplná stromová prohledávání Algoritmus LDS procedure LDS(Variables,Constraints) for D=0 to |Variables| do % D urCuje max. poCet povolených diskrepancí R := LDS-PROBE(Variables,{},Constraints,D) if R = fail then return R return fail Hana Rudová, Omezující podmínky, 4. prosince 2018 181 Neúplná stromová prohledávání Algoritmus LDS procedure LDS(Variables,Constraints) for D=0 to |Variables| do % D urCuje max. poCet povolených diskrepancí R := LDS-PROBE(Variables,{},Constraints,D) if R = fail then return R return fail procedure LDS-PROBE(Unlabelled,Labelled,Constraints,D) if Unlabelled = {} then return Labelled select X g Unlabelled Values^ := - {values inconsistent with Labelled using Constraints} if Values^ = {} then return fail else select HV g Values^ using heuristic if D>0 then for VV g Values*-{HV} do R := LDS-PROBE(Unlabelled-{X}, Labelled u {X/V}, Constraints, D-1) if R = fail then return R return LDS-PROBE(Unlabelled-{X}, Labelled u {X/HV}, Constraints, D) end LDS-PROBE Hana Rudová, Omezující podmínky, 4. prosince 2018 181 Neúplná stromová prohledávání Omezené diskrepance - zlepšení -i* LDS v každé další iteraci prochází i vetve z předchozí iterace, tj. opakuje již provedený výpocet a navíc se v rámci iterace musí vracet do již prošlých cástí & Improved limited discrepancy search (ILDS) daný pocet diskrepancí na ceste (prerušení) cesty s diskrepancemi na konci prozkoumány dríve M Pri neúspechu navýšíme pocet diskrepancí o jedna (opakování) -í* Príklad: ILDS-PROBE(1), heuristika doporucuje vydat se levou vetví Hana Rudová, Omezující podmínky, 4. prosince 2018 182 Neúplná stromová prohledávání Algoritmus ILDS procedure ILDS(Variables,Constraints) % analogie LDS(Variables,Constraints) procedure ILDS-PROBE(Unlabelled,Labelled,Constraints,D) Rozdíly od LDS if Unlabelled = {} then return Labelled select X g Unlabelled Values^ := - {values inconsistent with Labelled using Constraints} if Values^ = {} then return fail else select HV g Values^ using heuristic if D<|Unlabelled| then R := ILDS-PROBE(Unlabelled-{X}, Labelled u {X/HV}, Constraints, D) if R = fail then return R if D>0 then for VV g Values^-{HV} do R := ILDS-PROBE(Unlabelled-{X}, Labelled u {X/V}, Constraints, D-1) if R = fail then return R end ILDS-PROBE Hana Rudová, Omezující podmínky, 4. prosince 2018 183 Neúplná stromová prohledávání Hloubkou omezené diskrepance JS> ILDS bere cesty s diskrepancemi na konci drive & Depth-bounded discrepancy search (DDS) & Diskrepance povoleny pouze do dané hloubky (prerušení) v této hloubce je vždy diskrepance, tj. zabráni se procházeni vetvi z předchozí iterace -fc hloubka zároven omezuje maximální pocet diskrepanci -i- cesty s diskrepancemi na zacátku prozkoumány drive JS> Pri neúspechu navýšime hloubku o jedna (opakování) -i* Priklad: DDS(3), heuristika doporucuje vydat se levou vetvi 3 1 2 3 4 Hana Rudová, Omezujici podminky, 4. prosince 2018 184 Neúplná stromová prohledáváni Lokální prohledávání Lokální prohledávání (LS) -í* Princip s> pracuje s úplnými nekonzistentními p r i razeními promenných & snaží se lokálními opravami snížit pocet konfliktu ii> Příklad: umístení n dam na šachovnici iniciální p ř i řazení umístí každou královnu do každého sloupce a řádku bez ohledu na diagonální omezení -4» p ř esunujeme královnu v jejím sloupci do jiného řádku tak, abychom odstranili co nejvíce konfliktu -fc LS vyř eší řádove vetší problémy než algoritmy založené na prohledávání do hloubky Hana Rudová, Omezující podmínky, 4. prosince 2018 186 Lokální prohledávání Lokální prohledávání (LS) -í* Princip it pracuje s úplnými nekonzistentními přiřazeními proměnných it snaží se lokálními opravami snížit pocet konfliktu ii> Príklad: umístení n dam na šachovnici it iniciální p r i razení umístí každou královnu do každého sloupce a rádku bez ohledu na diagonální omezení it p r esunujeme královnu v jejím sloupci do jiného rádku tak, abychom odstranili co nejvíce konfliktu it LS vyr eší rádove vetší problémy než algoritmy založené na prohledávání do hloubky -i* Pr ibližná metoda prohledávání it neúplná metoda it nezarucuje nalezení (vyloucení existence) r ešení i když existuje (neexistuje) it malé pamet'ové nároky Hana Rudová, Omezující podmínky, 4. prosince 2018 186 Lokální prohledávání Terminologie lokálního prohledávání U* Stav 6: ohodnocení všech proměnných Evaluace E: hodnota objektivní funkce (poCet nesplněných podmínek=poCet konfliktů) -Ä* Globální optimum: stav s nejlepší evaluací Terminologie lokálního prohledávání U* Stav 6: ohodnocení všech proměnných Evaluace E: hodnota objektivní funkce (poCet nesplněných podmínek=poCet konfliktů) -Ä* Globální optimum: stav s nejlepší evaluací JS> Lokální zmena: zmena hodnoty (jedné) promenné JS> Okolí o: množina stavů lišící se od daného stavu o jednu lokální zmenu Ü> Lokální optimum: stav, vjehož okolí jsou stavy s horší evaluací; není globálním optimum Terminologie lokálního prohledávání Stav 6: ohodnocení všech promenných Evaluace E: hodnota objektivní funkce (pocet nesplnených podmínek=pocet konfliktu) Globální optimum: stav s nejlepší evaluací Lokální zmena: zmena hodnoty (jedné) promenné Okolí o: množina stavů lišící se od daného stavu o jednu lokální zmenu Lokální optimum: stav, vjehož okolí jsou stavy s horší evaluací; není globálním optimum Striktní lokální optimum: stav, vjehož okolí jsou pouze stavy s horší evaluací; není globálním optimum Ne-striktní lokální optimum: stav, vjehož okolí exisují stavy se stejnou evaluací; není globálním optimum Plateau: množina stavů se stejnou evaluací lokální minimum globáli ne-striktní lokální minimum Hana Rudová, Omezující podmínky, 4. prosince 2018 187 Lokální prohledávání Algoritmus lokálního prohledávání -í* Algoritmy lokálního prohledávání mají společnou kostru 6 := náhodné ohodnoceni proměnných for i := 1 to MaxPokusu while GPodminka do for j := 1 to MaxZmen while LPodminka do if E(6)=0 then return 6 procedure LS(MaxPokusu,MaxZmen) parametry algoritmu vyber ô e o(0) if akceptovatelne(ô) then 0 : = ô 0 := novyStav(6) return nejlepší 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 188 Lokální prohledávání Algoritmus lokálního prohledávání -í* Algoritmy lokálního prohledávání mají spolecnou kostru procedure LS(MaxPokusu,MaxZmen) parametry algoritmu 6 := náhodné ohodnocení proměnných for i := 1 to MaxPokusu while GPodminka do for j := 1 to MaxZmen while LPodminka do if E(6)=0 then return 6 vyber ô g o(6) if akceptovatelne(ô) then 6 := ô 6 := novyStav(6) return nejlepší 6 & Jak stanovit MaxPokusu,MaxZmen? A pokracovat dokud existuje prirazení s lepší evaluací & restart (MaxPokusu>1) v nekterých prípadech diskutabilní Hana Rudová, Omezující podmínky, 4. prosince 2018 188 Lokální prohledávání Metoda nejvetšího stoupání (hill climbing) HC JS> Zacíná v náhodne vybraném stavů C Hledá vždy nejlepší stav v okolí ii> Okolí = hodnota libovolné promenné je zmenena, velikost okolí n x (d - 1) JS> Útek ze striktního lokálního minima pomocí restartů proceduře HC(MaxZmen) restart: 6 := náhodné ohodnocení proměnných for j := 1 to MaxZmen do if E(6) = 0 then return 6 if 6 je striktní lokální optimum then goto restart else 6 := stav z o(6) s nejlepší evaluací goto restart end HC Hana Růdová, Omezůjící podmínky, 4. prosince 2018 189 Lokální prohledávání Metoda minimalizace konfliktů (MC) Okolí u HC je pomerne velké: n x (d - 1) ale pouze zmena konfliktní promenné muže p ř inést zlepšení J* konfliktní promenná = vystupuje v nekterých nesplnených podmínkách -i- okolí = hodnota zvolené proměnné je změněna, velikost okolí d - 1 procedure MC(MaxZmen) 6 := náhodné ohodnocení proměnných PocetZmen := 0 while E(6) > 0 a PocetZmen 0 a PocetZmen (1 - p) 0.02 < p < 0.1 vyber náhodne hodnotu a pro V else vyber hodnotu a, která minimalizuje pocet konfliktu pro V if a=současná hodnota V then pri raď a do V PocetZmen := PocetZmen+1 return 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 192 Lokální prohledávání Nejvetší stoupání s náhodnou procházkou proceduře HCRW(MaxZmen,p) Rozdíly od MCRW 6 := náhodné ohodnocení proměnných PocetZmen := 0 while E(6) > 0 a PocetZmen (1 - p) vyber náhodne konfliktní promennou V vyber náhodne hodnotu a pro V else vyber (V,a) s nejlepší evaluací if a=soucasná hodnota V then pri raď a do V PocetZmen := PocetZmen+1 return 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 193 Lokální prohledávání Tabu seznam Setrvání v lokálním optimu je speciálním prípadem cyklu Jak se obecne zbavit cyklu? S> stací si pamatovat predchozí stavy a zakázat opakování stavu pameťove príliš nárocné (mnoho stavů) -i- můžeme si zapamatovat pouze nekolik posledních stavu (zabrání krátkým cyklům) Hana Rudová, Omezující podmínky, 4. prosince 2018 194 Lokální prohledávání Tabu seznam JS> Setrvání v lokálním optimu je speciálním prípadem cyklu JS> Jak se obecne zbavit cyklů? S> stací si pamatovat predchozí stavy a zakázat opakování stavu pamet'ove príliš nárocné (mnoho stavů) -i- můžeme si zapamatovat pouze nekolik posledních stavu (zabrání krátkým cyklum) JS> Tabu seznam = seznam tabu (zakázaných) stavů i> stav lze popsat význacným atributem (není nutné uchovávat celý stav) (promenná,hodnota): zachycuje zmenu stavu (uložíme původní hodnoty) -í* tabu seznam má fixní délku {tabu tenure) „staré" stavy ze seznamu vypadávají s pricházejímími novými stavy Hana Rudová, Omezující podmínky, 4. prosince 2018 194 Lokální prohledávání Tabu seznam JS> Setrvání v lokálním optimu je speciálním případem cyklu JS> Jak se obecne zbavit cyklU? S> stací si pamatovat předchozí stavy a zakázat opakování stavu pamet'ove příliš nárocné (mnoho stavů) -i- mUžeme si zapamatovat pouze nekolik posledních stavU (zabrání krátkým cyklUm) JS> Tabu seznam = seznam tabu (zakázaných) stavů i> stav lze popsat význacným atributem (není nutné uchovávat celý stav) (promenná,hodnota): zachycuje zmenu stavu (uložíme puvodní hodnoty) -í* tabu seznam má fixní délku (tabu tenure) „staré" stavy ze seznamu vypadávají s pricházejímími novými stavy & AspiraCní kritérium = odtabuizování stavu -i- do stavu lze přejít, i když je v tabu seznamu (napr. krok vede k celkove lepšímu stavu) Hana Rudová, Omezující podmínky, 4. prosince 2018 194 Lokální prohledávání Tabu seznam JS> Setrvání v lokálním optimů je speciálním případem cyklů JS> Jak se obecne zbavit cyklů? S> stací si pamatovat predchozí stavy a zakázat opakování stavů pamet'ove príliš nárocné (mnoho stavů) -i- můžeme si zapamatovat poůze nekolik posledních stavů (zabrání krátkým cyklům) JS> Tabu seznam = seznam tabu (zakázaných) stavů i> stav lze popsat význacným atribůtem (není nůtné ůchovávat celý stav) (promenná,hodnota): zachycůje zmenů stavů (ůložíme původní hodnoty) tabů seznam má fixní délku (tabu tenure) „staré" stavy ze seznamů vypadávají s pricházejímími novými stavy & Aspirační kritérium = odtabůizování stavů -i- do stavů lze přejít, i když je v tabů seznamů (napr. krok vede k celkove lepšímů stavů) Tabů seznam je poůžíván samostatne i v kombinaci s jinými metodami LS Hana Růdová, Omezůjící podmínky, 4. prosince 2018 194 Lokální prohledávání Algoritmus prohledávání s tabu seznamem Tabu seznam zabraňuje krátkému cyklení B Povoleny jsou pouze tahy mimo tabu seznam a tahy splnující aspiracní kritérium & Tabu seznam (TS) v kombinaci s metodou stoupání (HC): proceduře TSHC(MaxZmen) 6 := náhodné ohodnocení proměnných PocetZmen := 0 while E(6) > 0 a PocetZmen s nejlepší evaluací tak, že není v tabu seznamu a nebo spinuje aspiracní kriterium přidej (V,c> do tabu seznamu, kde c je soucasná hodnota V smaž nejstarší položku v tabu seznamu pri raď a do V PocetZmen := PocetZmen+1 return 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 195 Lokální prohledávání Výber souseda: p řehled & Metoda stoupání (HC) -i- soused s nejlepší evaluací vybrán & Tabu prohledávání (TS+HC) soused s nejlepší evaluací vybrán (metoda stoupání) J* sousedé z tabu seznamu nemohou být vybráni Hana Rudová, Omezující podmínky, 4. prosince 2018 196 Lokální prohledávání Výber souseda: p řehled & Metoda stoupání (HC) -i- soused s nejlepší evaluací vybrán & Tabu prohledávání (TS+HC) soused s nejlepší evaluací vybrán (metoda stoupání) J* sousedé z tabu seznamu nemohou být vybráni Minimální konflikt (MC) -i- soused je omezen na náhodne vybranou konfliktní promennou výber její hodnoty s nejlepší evaluací Náhodná procházka (RW) soused vybrán náhodne Hana Rudová, Omezující podmínky, 4. prosince 2018 196 Lokální prohledávání Výber souseda: p řehled & Metoda stoupání (HC) -i- soused s nejlepší evaluací vybrán & Tabu prohledávání (TS+HC) soused s nejlepší evaluací vybrán (metoda stoupání) J* sousedé z tabu seznamu nemohou být vybráni Minimální konflikt (MC) -i- soused je omezen na náhodne vybranou konfliktní promennou výber její hodnoty s nejlepší evaluací Náhodná procházka (RW) soused vybrán náhodne Min. konflikt (metoda stoupání) s náhodnou procházkou MC+RW (HC+RW) A s malou pravdepodobností: náhodný výber souseda Jt jinak: minimální konflikt (metoda stoupání) Hana Rudová, Omezující podmínky, 4. prosince 2018 196 Lokální prohledávání Simulované žíhání (simulated annealing) SA -í* Myšlenka: simulace procesu ochlazování kovů A na zacátku pri vyšší teplote atomy více kmitají a pravdepodobnost zmeny krystalické mrížkyje vyšší -i* postupným ochlazováním se atomy usazují co „nejlepší polohy" s nejmenší energií a pravdepodobnost zmenyje menší == na zacátku je tedy pravdepodobnost toho, že akceptujeme zhoršování rešení, vyšší Hana Rudová, Omezující podmínky, 4. prosince 2018 197 Lokální prohledávání Simulované žíhání (simulated annealing) SA -í* Myšlenka: simulace procesu ochlazování kovu A na zacátku pri vyšší teplote atomy více kmitají a pravdepodobnost zmeny krystalické mrížkyje vyšší -i* postupným ochlazováním se atomy usazují co „nejlepší polohy" s nejmenší energií a pravdepodobnost zmenyje menší == na zacátku je tedy pravdepodobnost toho, že akceptujeme zhoršování rešení, vyšší & Akceptování nového stavu -fc vždy pri zlepšení -i- pri zhoršení pouze za dané pravdepodobnosti, která klesá se snížením teploty & Cykly algoritmu -i- vnejší: simulace procesu ochlazování snižováním teploty T cím nižší bude teplota, tím nižší bude pravdepodobnost akceptování zhoršení A vnitrní: pocítáme, kolikrát jsme neakceptovali zhoršení (dán limit MaxIter) Hana Rudová, Omezující podmínky, 4. prosince 2018 197 Lokální prohledávání Metropolisovo kritérium Rozdíl mezi kvalitou nového (5) a existujícího (6) rešení M AE = E(5) - E(6) JS> E (chybovost) musí být minimalizováno Metropolisovo kritérium & lepší (nekdy p rípadne i stejne kvalitní) r ešení akceptováno: AE > 0 & horší rešení (AE > 0) akceptováno pokud U < e-AE/T & U náhodné císlo z intervalu (0,1) Hana Rudová, Omezující podmínky, 4. prosince 2018 198 Lokální prohledávání Metropolisovo kritérium Rozdíl mezi kvalitou nového (5) a existujícího (0) rešení M AE = E(5) - E(0) JS> E (chybovost) musí být minimalizováno Metropolisovo kritérium & lepší (nekdy prípadne i stejne kvalitní) rešení akceptováno: AE > 0 & horší rešení (AE > 0) akceptováno pokud U < e-AE/T & U náhodné císlo z intervalu (0,1) pomůcka: porovnej e-10/100 vs. e-100/100 Hana Rudová, Omezující podmínky, 4. prosince 2018 198 Lokální prohledávání Metropolisovo kritérium Rozdíl mezi kvalitou nového (5) a existujícího (0) řešení M AE = E(5) - E(0) JS> E (chybovost) musí být minimalizováno Metropolisovo kritérium & lepší (nekdy p řípadne i stejne kvalitní) ř ešení akceptováno: AE > 0 & horší rešení (AE > 0) akceptováno pokud U < e-AE/T & U náhodné Číslo z intervalu (0,1) t pomůcka: porovnej e-10/100 vs. e-100/100 a e-10/100 vs. e-10/1 Hana Rudová, Omezující podmínky, 4. prosince 2018 198 Lokální prohledávání Algoritmus simulovaného žíhání procedure SA( TInit, TEnd, MaxIter ) 6 := náhodné ohodnocení proměnných a := 6 for T := TInit to TEnd PocetChyb := 0 while PocetChyb < MaxIter vyber lokální zmenu z 6 do ô if E(ô) SAT problém: splnitelnost logické formule v konjunktivní normální forme ± CNF = konjunkce klauzulí A klauzule = disjunkce literálu (podmínka) i> literál = atom nebo negace atomu príklad: (A v B) a (-B v C) a (-C v -A) => CSP nad disjunkcemi boolean promenných C SAT je NP-úplný Hana Rudová, Omezující podmínky, 4. prosince 2018 200 Lokální prohledávání Lokální prohledávání pro SAT problém JS> SAT problém: splnitelnost logické formule v konjunktivní normální forme ± CNF = konjunkce klauzulí A klauzule = disjunkce literálu (podmínka) i> literál = atom nebo negace atomu příklad: (A v B) A (-B v C) A (-C v -A) => CSP nad disjunkcemi boolean promenných C SAT je NP-úplný & LS řeší pomerne velké formule -i- formulace LS je velice přirozená a jeho použití je velice populární lokální zmena je p reklápením (flipping) hodnoty promenné M Algoritmus GSAT (greedy SAT) J* postupné p ř eklápení promenných -i- evaluace udává, jaký je (vážený) pocet nesplnených klauzulí Hana Rudová, Omezující podmínky, 4. prosince 2018 200 Lokální prohledávání Algoritmus GSAT procedúre GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 6 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 6 then return 6 V := proměnná, jejíž zmena hodnoty nejvíce sníží pocet nesplnených klauzulí 6 := prirazení, které se liší od 6 zmenou hodnoty V return nejlepší 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 201 Lokální prohledávání Algoritmus GSAT procedure GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 6 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 6 then return 6 V := proměnná, jejíž zmena hodnoty nejvíce sníží poCet nesplnených klauzulí 6 := prirazení, které se liší od 6 zmenou hodnoty V return nejlepší 6 Ä Príklad: {-C, -A v -B v C, -A v D v E, -B v-C} it iniciální p ř i razení (všechny proměnné mají hodnotu 1) nesplňuje první a poslední klauzuli it zmena A,D,E nemá vliv na pocet nesplnených klauzulí it zmena C na 0 splní první i poslední klauzuli ale nesplní -A v -B v C (evaluace=1) it zmena B má evaluaci 1 také, pokud ale zmeníme C a pak B, pak dostáváme evaluaci 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 201 Lokální prohledávání Heuristiky pro GSAT GSAT lze kombinovat s ruznými heuristikami, které zvyšují jeho efektivitu obzvlášte pri rešení strukturovaných problémů Použití náhodné procházky spolu s minimalizací konfliktů Vážení klauzulí .0 nekteré klauzule zůstávají po radu iterací nesplnené, klauzule tedy mají mznou důležitost splnení „težké" klauzule lze preferovat pridáním váhy váhu muže systém odvodit na zacátku mají všechny klauzule stejnou váhu po každém pokusu zvyšujeme váhu u nesplnených klauzulí Hana Rudová, Omezující podmínky, 4. prosince 2018 202 Lokální prohledávání Heuristiky pro GSAT GSAT lze kombinovat s ruznými heuristikami, které zvyšují jeho efektivitu J* obzvlášte pri rešení strukturovaných problémů Použití náhodné procházky spolu s minimalizací konfliktů Vážení klauzulí .0 nekteré klauzule zustávají po radu iterací nesplnené, klauzule tedy mají mznou duležitost splnení „težké" klauzule lze preferovat pridáním váhy váhu muže systém odvodit na zacátku mají všechny klauzule stejnou váhu po každém pokusu zvyšujeme váhu u nesplnených klauzulí J* Pmmerováni rešeni J> standardne každý pokus zacíná z náhodného rešení & spolecné cásti predchozích rešení lze zachovat restartovací stav se vypocte ze dvou posledních výsledků bitovým srovnáním stejné bity zachovány, ostatní nastaveny náhodne Hana Rudová, Omezující podmínky, 4. prosince 2018 202 Lokální prohledávání Hybridní prohledávání -í* Príklady kombinace lokálního prohledávání ± prohledává úplná nekonzistentní prirazení a stromového prohledávání A rozširuje cástecné konzistentní prirazení Hana Rudová, Omezující podmínky, 4. prosince 2018 203 Lokální prohledávání Hybridní prohledávání -í* Príklady kombinace lokálního prohledávání ± prohledává úplná nekonzistentní prirazení a stromového prohledávání A rozširůje cástecné konzistentní prirazení 1. Lokální prohledávání p red nebo po stromovém prohledávání napr: pred: lokální prohledávání nám poskytne heůristiků na ůsporádání hodnot & po: lokálním prohledáváním se snažíme lokálne vylepšit spocítané rešení (optimalizace) 2. Stromové prohledávání je doplneno lokálním prohledávání C v listech prohledávacího stromů i v jeho ůzlech -i* nap r . lokální prohledávání pro výber hodnoty nebo vylepšení spocítaného r ešení 3. Lokální prohledávání je doplneno stromovým prohledáváním ii> pro výber soůseda z okolí a nebo pro pro r ezávání stavového prostorů Hana Růdová, Omezůjící podmínky, 4. prosince 2018 203 Lokální prohledávání Iterativní dopredné prohledávání JS> Iterative Forward Search (IFS) & Hybridní prohledávání: konstruktivní nesystematický algoritmus i* pracuje nad modelem s pevnými a mekkými omezujícími podmínkami -i- pevné podmínky: musí být splneny mekké podmínky: reprezentují úcelové funkce, jejichž vážený soucet je minimalizován JS> Pracuje s konzistentními prirazeními £ Základní myšlenky (blízký dynamickému backtrackingu) -** zacíná s prázdným prirazením -i- vybere novou promennou k prirazení S> pokud nalezne konflikt, zruší prirazení všech promenných v konfliktu s vybranou promennou A výber hodnot pomocí konfliktní statistiky & výber promenných není pro algoritmus kritický, protože lze promenné priradit opakovane Hana Rudová, Omezující podmínky, 4. prosince 2018 204 Lokální prohledávání IFS: algoritmus procedure IFS() iteration = 0; % CítaC iterací current = 0; % aktuální r ešení best = 0; % nejlepší rešení while canContinue (current, iteration) do iteration = iteration + 1; variable = selectVariable (current); value = selectValue (current, variable); unassign(current, conflictingVariables(current, variable, value)); assign(current, variable, value); if better (current, best) then best = current return best end IFS procedure conflictingVariables: kontroluje konzistenci tak, aby byla splnena omezení na p r i razených promenných, a vrací konfliktní promenné unassign: odstraní p r i razení konfliktních promenných Hana Rudová, Omezující podmínky, 4. prosince 2018 205 Lokální prohledávání IFS: konfliktní statistika Predpoklad: pri výberu hodnoty a promenné A je nutné zrušit prirazení hodnoty b promenné B, tj. [A = a — - B = b] V průbehu výpoctu si tedy lze pamatovat: A = a == 3 x- B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a Hana Rudová, Omezující podmínky, 4. prosince 2018 206 Lokální prohledávání IFS: konfliktní statistika & Př edpoklad: p ř i výberu hodnoty a promenné A [A = a —► —i B = b] & V průbehu výpoctu si tedy lze pamatovat: A = a => 3 x- B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a & P r i výberu hodnoty a vybíráme hodnoty s nejnižším poctem konfliktů vážených jejich frekvencí konflikt zapocítáme pouze tehdy, pokud to vede k odstranení p r i razení A = b => 1 x- B = a, 3 x- B = b, 2 x- C = a Máme p r i r azení B = c, C = a,D = b a vybíráme hodnotu pro A: necht' A/a vede ke konfliktu s B/c: vyhodnoceno jako 4 • není konflikt s C/a, tak se nezapocítává necht' A/b vede ke konfliktu s C/a: vyhodnoceno jako 2 tj. vybereme hodnotu b pro promennou A p ř . A = a => 3 x- B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a Hana Rudová, Omezující podmínky, 4. prosince 2018 206 Lokální prohledávání Srovnání prohledavačích algoritmů Srovnání prohledávacích algoritmů J* A — B znamená, že uzly prohledávacího stromu B jsou i v strome A Hana Rudová, Omezující podmínky, 4. prosince 2018 208 Srovnání prohledávacích algoritmu Srovnání prohledávacích algoritmů A — B znamená, že uzly prohledávacího stromu B jsou i v strome A it za predpokladu stejného uspořádání hodnot i promenných Existuje srovnání i pro další algoritmy? Jaké algoritmy používat pro daný problém? Experimentální porovnání na mznýc / forward sadách problé mů (benchmarks) \* checking it reálné problémy it nahodne vygenerované problémy it aplikaCne založené náhodné problémy Kriteria CPU Cas it velikost generovaného prohledávacího stromu it pocet volání procedury (napr. Consistent) Hana Rudová, Omezující podmínky, 4. prosince 2018 208 Srovnání prohledávacích algoritmu Experimenty na reálných problémech & Sady reálných problémů (benchmarks), na kterých lze algoritmy porovnávat & CSPLib http://www.csplib.org -i- knihovna problému pro omezující podmínky (otevrená pro nové problémy) -fc kolem 130 problému z oblasti jako je rozvrhování, návrh a konfigurace, kombinatorika, bioinformatika, hry popis problému, reference na jeho rešení, data, výsledky nekdy i rešení nebo podrobné studie mzných možností rešení -i- príklady dopravní signalizace v case na zadaných križovatkách, výrobní linka, problém batohu, sledování cíle v distribuovaných senzorických sítích, ... ii> Problém: výsledky lze stále velice obtížne zobecnit na další problémy -i- pro jeden problém je lepší jeden algoritmus, pro další problém jiný algoritmus Hana Rudová, Omezující podmínky, 4. prosince 2018 209 Srovnání prohledávacích algoritmu Náhodné problémy -í* Algoritmy porovnávány na umelých, náhodne vygenerovaných problémech Jt lze generovat problémy různé obtížnosti (fáze prechodu) J* libovolný pocet datových instancí A lze testovat, co se stane (nap r . s parametry algoritmu) p r i zmenách problému & Náhodné binární CSP (random binary CSP) parametry (n,m,p1,p2) J* n pocet promenných -i- m pocet hodnot v doméne promenných A p1 pravdepodobnost, že existuje omezení na páru promenných it p2 pravdepodobnost, že omezení povoluje daný pár hodnot Hana Rudová, Omezující podmínky, 4. prosince 2018 210 Srovnání prohledávacích algoritmu AplikaCne založené náhodné problémy -í* Identifikace problémové domény lze definovat parametrizovatelné problémy problémy mají p r itom specifickou (z aplikace vycházející) strukturu Jť problémy lze náhodne generovat s různým nastavením parametrů JS> Výhody zamerené na reálné problémy 3 generování rady problému umožnuje statistické porovnání & Príklad: shop scheduling problémy -i- m strojů S> n úloh, každá úloha se skládá z m operací provádených na odlišných strojích -i- operace jedné úlohy nesmí být provádeny zároven -fc podmínky na sekvencování operací úlohy (žádné, dáno po radí, stejné po radí pro všechny) S minimalizace dokoncení poslední úlohy, minimalizace nejvetšího zpoždení úlohy, ... Hana Rudová, Omezující podmínky, 4. prosince 2018 211 Srovnání prohledávacích algoritmu Fáze prechodu Náhodný k-SAT problém J* formule pevné délky jsou generovány výberem m klauzulí -i- každá klauzule délky k je uniformne náhodne generována z množiny všech klauzulí JS> Obtížnost nalezení rešení i> pri malém poctu klauzulí je vetšina problému splnitelná a snadno rešitelná A pri velkém poctu klauzulí je detekována snadno nesplnitelnost vetšiny problémů J> nalezení rešení je nejobtížnejší za predpokladu, že cca 50% problému je splnitelných Hana Rudová, Omezující podmínky, 4. prosince 2018 212 Srovnání prohledávacích algoritmu Fáze p rechodu Náhodný k-SAT problém J* formůle pevné délky jsoů generovány výberem m klaůzůlí -i- každá klaůzůle délky k je ůniformne náhodne generována z množiny všech klaůzůlí Obtížnost nalezení r ešení i> pri malém poctů klaůzůlí je vetšina problémů splnitelná a snadno rešitelná A pri velkém poctů klaůzůlí je detekována snadno nesplnitelnost vetšiny problémů J> nalezení rešení je nejobtížnejší za predpokladů, že cca 50% problémů je splnitelných Fenomén fáze p redchodu (phase transition) M fáze prechodů z obtížne rešitelných problémů na snadno rešitelné problémů pocet volání Hana Růdová, Omezůjící podmínky, 4. prosince 2018 Vyůžití fáze prechodů: lze generovat problémy různé obtížnosti pomer poctů klaůzůlí vůci poctů promených 212 Srovnání prohledávacích algoritmů Optimalizace & soft omezení: modely Optimalizacní problém s podmínkami (COP) Problém splnováni podminek (X,D,C) it promenné X ={x1,...,xn} it domény D = {D1,... ,Dn} 3f omezeni C = {C1,Cn} Ci je definováno na Yi c X, Yi = {xh,...,xh} Ci je podmnožina Di1 x ... x Dik Hana Rudová, Omezujici podminky, 4. prosince 2G18 214 Optimalizace & soft omezeni: modely Optimalizační problém s podmínkami (COP) Problém splnování podmínek (X,D,C) J» promenné X ={x1,...,xn} %> domény D = {D1,... ,Dn} 30 omezení C = {C1,Cn} Ci je definováno na Yi q X, Yi = {xh,...,xh} Ci je podmnožina Di1 x ... x Dik Objektivní funkce obj : Sol — W Základní definice: Optimalizační problém s podmínkami (constraint optimization problém) M nalezení řešení d pro (X,D, C) takové, že obj(d) je optimální optimální = maximální nebo minimální Hana Rudová, Omezující podmínky, 4. prosince 2018 214 Optimalizace & soft omezení: modely COP: operační výzkum & Pevné (hard, required) omezení Ch = (Q,Cn} relace Ci je definováno na Yi c X, Yi = (xh,...,xik} it Ci je podmnožina Dix x ... x Dik & Mekké (soft) omezení Cs = (Fi,...,Fl} funkce it Fj je definované nad Qj c X, Qj = (x$x,... ,xjt} it Fj je funkce do reálných Čísel Djx x ... x Djl — R+ JS> Optimalizační problém s podmínkami (COP): (X,D,Ch,Cs) Hana Rudová, Omezujici podminky, 4. prosince 2G18 215 Optimalizace & soft omezeni: modely COP: operaCní výzkum & Pevné (hard, required) omezení Ch = (Cl ,Cn} relace Ci je definováno na Yi c X, Yi = (xíl,...,Xik} it Ci je podmnožina DiL x ... x Dik & Mekké (soft) omezení Cs = (Fl,...,F1} funkce it Fj je definované nad Qj c X, Qj = (xj,... ,xJí} it Fj je funkce do reálných ccísel DjL x ... x Djl — JS> OptimalizaCní problém s podmínkami (COP): (X,D,Ch,Cs) & Objektivní funkce zjednodušení na £ ^ l ^ ^ ^ F(d) = ^ Fj(íi[Qj]) d[Qj]... projekce d na Qj j=i Hana Rudová, Omezující podmínky, 4. prosince 2018 215 Optimalizace & soft omezení: modely COP: operacní výzkum & Pevné (hard, required) omezení Ch = {C1,Cn} relace Ci je definováno na Yi c X, Yi = {xt1 ,...,xtk} a Ci je podmnožina Di1 x ... x Dik -i* Mekké (soft) omezení Cs = {^,...,17} funkce a Fj je definované nad Qj c X, Qj = {xj,... ,Xj} Jt Fj je funkce do reálných císel Dj1 x ... x Djl — JS> Optimalizacní problém s podmínkami (COP): (X,D,Ch,Cs) M Objektivní funkce zjednodušení na £ F(d) = ^ Fj(d[Qj]) d[Qj]... projekce d na Qj j=1 -í* Řešení COP: do splnující všechna omezení z Ch tak, že F(do) = maxdF(d) nebo F(do) = mnyFd) Hana Rudová, Omezující podmínky, 4. prosince 2018 215 Optimalizace & soft omezení: modely Použití soft omezení -í* Problémy optimalizacní, príliš podmínené, špatne definované problémy, ... Fuzzy preference, pravdepodobnosti, ceny, váhy, úrovne požadavku,... -í* Príliš podmínené problémy: rešení CSP neexistuje F1 Prednaska < Cvičeni @ 10 tj. pokud PrednaskaCviceni pak F1=10 F2 Prednaska in 4..5 @6 tj. pokud Prednaskae{4,5} pak F2=0 pokud Prednaska^{4,5} pak F2=6 F3 Cvičeni in 1..4 @4 Hana Rudová, Omezující podmínky, 4. prosince 2018 216 Optimalizace & soft omezení: modely Použití soft omezení -í* Problémy optimalizacní, príliš podmínené, špatne definované problémy, ... Fuzzy preference, pravdepodobnosti, ceny, váhy, úrovne požadavku,... -í* Pr íliš podmínené problémy: rešení CSP neexistuje F1 Prednaska < Cviceni @ 10 tj. pokud PrednaskaCviceni pak F1=10 F2 Prednaska in 4..5 @6 tj. pokud Prednaskae{4,5} pak F2=0 pokud Prednaska^{4,5} pak F2=6 F3 Cviceni in 1..4 @4 & Problémy s nejistotou -i* Je 0.7 nezbytné, abych prišla do stredy. po..st 0.7, ct..ne 0 Je nezbytné, abych neprišla príliš pozdeji než ve stredu. po..st 0.7, ct 0.5, pa 0.3, so..ne 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 216 Optimalizace & soft omezení: modely Použití soft omezení -í* Problémy optimalizacní, p ríliš podmínené, špatne definované problémy, ... Fuzzy preference, pravdepodobnosti, ceny, váhy, úrovne požadavku,... -í* Pr íliš podmínené problémy: r ešení CSP neexistuje F1 Prednaska < Cvičeni @ 10 tj. pokud PrednaskaCviceni pak F1=10 F2 Prednaska in 4..5 @6 tj. pokud Prednaskae{4,5} pak F2=0 pokud Prednaska^{4,5} pak F2=6 F3 Cvičeni in 1..4 @4 & Problémy s nejistotou -i* Je 0.7 nezbytné, abych p r išla do st redy. po..st 0.7, ct..ne 0 & Je nezbytné, abych nep r išla p ríliš pozdeji než ve stredu. po..st 0.7, ct 0.5, pa 0.3, so..ne 0 Špatne definované problémy: není z r ejmé, která omezení definují CSP Zitra = pekne @ 80% Zitra = zamračeno @ 30% Hana Rudová, Omezující podmínky, 4. prosince 2018 216 Optimalizace & soft omezení: modely P ř ístupy pro soft omezení C Vybrané prístupy -fc základní: MAX-CSP, omezení s váhami, fuzzy omezení M zobecnující: omezení nad polookruhy (semiring-based) Hana Rudová, Omezující podmínky, 4. prosince 2018 217 Optimalizace & soft omezení: modely P r ístupy pro soft omezení Vybrané prístůpy a základní: MAX-CSP, omezení s váhami, fůzzy omezení J* zobecnůjící: omezení nad polookrůhy (semiring-based) Rozlišení systémů na základe: (v závorkách popis pro CSP) omezení - rozšírení klasického omezení (c = relace) problém - rozšírení CSP (trojice (V,D,C)) J» úroven splnení - jak prirazení hodnot splnůje problém (Ac0) & rešení - které prirazení je (optimálním) rešením (splnůjí všechna omezení) Jr úroven konzistence problému - jak je možné nejlépe splnit problém tj. jak (optimální) rešení splnůje problém (trne) Hana Růdová, Omezůjící podmínky, 4. prosince 2018 217 Optimalizace & soft omezení: modely Omezení s váhami, MAX-CSP ii> Omezení s váhami: Váha/cena spojená s každým omezením it Omezení - dvojice (c,w(c)) i* Problém - trojice (V,D,Cw) Jr Úroven splnení - funkce na množine prirazení co(9) = X#h-c w(c) ^ soucet vah nesplnených omezení a Rešení - prirazení 0 s minimální co(#) Úroven konzistence - úroven splnení rešení Hana Rudová, Omezující podmínky, 4. prosince 2018 218 Optimalizace & soft omezení: modely Omezení s váhami, MAX-CSP ii> Omezení s váhami: Váha/cena spojená s každým omezením Jt Omezení - dvojice (c,w(c)) Jt Problém - trojice (V,D,Cw) Jr Úroven splnení - funkce na množine př i řazení co(9) = X6^-cw(c) => součet vah nesplnených omezení Jt Rešení - p ř i řazení 6 s minimální co(6) Jt Úroven konzistence - úroven splnení r ešení MAX-CSP (maximální CSP) Váha je rovna jedné => maximalizace počtu splnených omezení Hana Rudová, Omezující podmínky, 4. prosince 2018 218 Optimalizace & soft omezení: modely Omezení s váhami: p r íklad Prednaska < Cviceni @ 10 Prednaska in 4..5 @6 Cviceni in 1..4 @ 4 -í* Prirazení: a = {Prednaska/3, Cviceni/4} -í* Úroven splnení a odpovídá souctu vah nesplnených omezení pri a, tj. 6 Hana Rudová, Omezující podmínky, 4. prosince 2018 219 Optimalizace & soft omezení: modely Omezení s váhami: príklad Přednáška < Cvičeni @ 10 Přednáška in 4..5 @6 Cvičeni in 1..4 @ 4 & Přiřazení: a = {Prednaska/3, Cviceni/4} JS> Úroven splnění a odpovídá souCtu vah nesplněných omezení při a, tj. 6 C Řešení: 9 = {Prednaska/4, Cviceni/5} ii> Úroven splnení 9: 4 ií> Úroven konzistence odpovídá úrovni splnení 9: 4 Hana Rudová, Omezující podmínky, 4. prosince 2018 219 Optimalizace & soft omezení: modely Fuzzy CSP Fuzzy množiny: příslušnost prvku k množine zadána císlem z intervalu [0,1] & Fuzzy omezení: fuzzy relace ic(d1,... ,dk) g (0,1) udává úroven preference Da = Db = (1, 2, 3} cl: A = 1 @(1,0.7) tj. pokud A=1, pak |/c1=1 pokud A=1, pak |/c1=0.7 c2: min( abs(A - B) ), abs(A - B) = 0 => @1 tj. |c2=1 = 1 => @0.5 tj. |c2=0.5 = 2 => @0.1 tj. |c2=0.1 c3: max(A + B) @(A + B)/10 tj. |c3=(A + B)/10 Hana Rudová, Omezujici podminky, 4. prosince 2G18 22G Optimalizace &soft omezeni: modely Fuzzy CSP Fuzzy množiny: p ríslušnost prvku k množine zadána číslem z intervalu [0,1] & Fuzzy omezení: fuzzy relace ic(d1,... ,dk) g (0,1) udává úroven preference Da = Db = {1, 2, 3} cl: A = 1 @(1,0.7) tj. pokud A=1, pak |/c1=1 pokud A=1, pak |/c1=0.7 c2: min( abs(A - B) ), abs(A - B) = 0 => @1 tj. = 1 => @0.5 tj. = 2 => 00.1 tj. c3: max(A + B) @(A + B)/10 tj. |c3=(A + B)/10 M Fuzzy CSP (X,D,Cf) a Cf je množina fuzzy omezení -fc X uspo rádaná množina promenných Hana Rudová, Omezující podmínky, 4. prosince 2018 220 Optimalizace & soft omezení: modely Ic2=1 Ic2=0.5 Ic2=0.1 Kombinace a projekce omezení Projekce n-tic (di,...,di) iX p ríklad: (1,2,3,4,S) i^j^0,1^ (4,1,S) Hana Rudová, Omezující podmínky, 4. prosince 2G18 221 Optimalizace & soft omezení: modely Kombinace a projekce omezení J> Projekce n-tic (du...,di) iX p r íklad: (1, 2, 3,4, 5) i(A;B,C)D,E) = (4,1, 5) £ Kombinace c = cX e cY, dom(c) = Z = X U Y c,cX,cY omezení nad Z,X, Y lÁc(d1,...,dk) = min(jUcX((d!,...,dk) iX),£kY((d1,...,dk) iZ)) Jť udává, jaká je úroven splnení všech p r i r azení Z vzhledem k cX a cY & p r íklad (pokracování): kombinace cl e c2 e c3 pro (1, 3) /iciec2ec3(1, 3) = min(^ci((1)),^c2((1, 3)),^s((1, 3))) = min(1,0.1,0.4) = 0.1 Hana Rudová, Omezující podmínky, 4. prosince 2018 221 Optimalizace & soft omezení: modely Kombinace a projekce omezení J> Projekce n-tic (di,...,di) iYX príklad: (1, 2, 3,4, 5) i^f^ (4,1, 5) £ Kombinace c = cX e cY, dom(c) = Z = X U Y c,cX,cY omezení nad Z,X, Y IAc(di,...,dk) = mm(\AcX((di,...,dk) \X),HcY((di,... ,dk) iZ)) Jť udává, jaká je úroven splnení všech prirazení Z vzhledem k cX a cY J* príklad (pokracování): kombinace cl e c2 e c3 pro (i, 3) Iiciec2ec3(i, 3) = min(|ci((i)),Ic2((i, 3)),|cs((i, 3))) = min(i, 0.i, 0.4) = 0.i & Projekce c = cY ^X, dom(c) = X,X c Y c,cX,cY omezení nad X,X, Y Ic(dxi,... ,dxk) = max icY(dy i,...,dyi) ((dy i,...,dyi)(EDy ix---xDyi)A((dy i,...,dyi) iYY=(dxi,...,dxk)) Jť udává, jaká je úroven splnení všech prirazení X vzhledem k cY J* príklad (pokracování): projekce c3 ^(B) na (i) Ic3^(B)(D = max(|c3(i, i),Ic3(2, i),ic3(3, i)) = max(0.2,0.3,0.4) = 0.4 Hana Rudová, Omezující podmínky, 4. prosince 2018 221 Optimalizace & soft omezení: modely Řešení fuzzy CSP Úroven splnení prirazení (d1,...,dn) dána jako ^C(d1,... ,dn) Hana Rudová, Omezující podmínky, 4. prosince 2018 222 Optimalizace & soft omezení: modely Řešení fuzzy CSP iS* Úroven splnění p r i r azení (di,...,dn) dána jako ^0 c(di,... ,dn) & Řešení - p r i r azení (di,..., dn) takové, že max ^c(di ,...,dn) = Cp) (di,...,dn)eDiX---xDn Hana Rudová, Omezující podmínky, 4. prosince 2018 222 Optimalizace & soft omezení: modely Řešení fuzzy CSP iS* Úroven splnení prirazení (di,...,dn) dána jako ^0 c(di,... ,dn) & Řešení - prirazení (di,dn) takové, že max H®c(di ,...,dn) = Cp) (di,...,dn)eDix---xDn a príklade 0 C = cl e c2 e c3 pro všechna (A, B) (3, 3) ... 0.6, (2, 2)... 0.4, (i, i)... 0.2 (2, 3) a (3, 2) ... 0.5, (2, i) a (i, 2)... 0.3 (i, 3) a (3, i)... 0.i Hana Růdová, Omezůjící podmínky, 4. prosince 2018 222 Optimalizace & soft omezení: modely Řešení fuzzy CSP iS* Úroveň splnění p ř i ř azení (d1,...,dn) dána jako ^0 c(d1,... ,dn) & Řešení - p ř i ř azení (di,dn) takové, že max ^c(di ,...,dn) = Cp) (di,...,dn)eDiX---xDn s» p ř íklad: 0 C = cl e c2 e c3 pro všechna (A, B) (3, 3) ... 0.6, (2, 2)... 0.4, (1,1)... 0.2 (2, 3) a (3, 2) ... 0.5, (2,1) a (1, 2)... 0.3 (i, B) a (b, 1)... 0.1 Hana Rudová, Omezující podmínky, 4. prosince 2018 222 Optimalizace & soft omezení: modely ŘeSení fuzzy CSP iS* Úroven splnení prirazení (di,...,dn) dána jako iáq C(di,... ,dn) & Řešení - prirazení (di,dn) takové, že max Ii®c(di ,...,dn) = C(Pi) (di,...,dn)eDix---xDn a príklade 0 C = cl e c2 e c3 pro všechna (A, B) (3, 3) ... 0.6, (2, 2)... 0.4, (i, i)... 0.2 (2, 3) a (3, 2) ... 0.5, (2, i) a (i, 2)... 0.3 JS> Úroven nekonzistence i - C(Pi) JS> C(Pi) je úroven konzistence také jako projekce na prázdnou množinu promenných 0 C ^0 (1, B) a (B, 1)... 0.1 Hana Rudová, Omezující podmínky, 4. prosince 2018 222 Optimalizace & soft omezení: modely P r íklad: rešení fuzzy CSP £ Viz drive: © C = c1 e c2 e c3 pro všechna (A, B) (B, B) ... 0.6, (Z, Z)... 0.4, (1,1)... 0.Z, (Z, B) a (B, Z) ... 0.5, (Z, 1) a (1, Z)... 0.B, (1, B) a (B, 1)... 0.1 ■» e C = e C %,b} e C U{a,b} (B, B) = max(^ec(B, B)) = 0.6, eC ^{a,b} (Z,Z) = 0.4,... Hana Rudová, Omezujici podminky, 4. prosince 2G18 223 Optimalizace & soft omezeni: modely P r íklad: rešení fuzzy CSP M Viz d ríve: © C = cl e c2 e c3 pro všechna (A, B) (B, B) ... 0.6, (Z, Z)... 0.4, (1,1)... 0.Z, (Z, B) a (B, Z) ... 0.5, (Z, 1) a (1, Z)... 0.B, (1, B) a (B, 1)... 0.1 * e C = e C U{a,b} e C U{a,b} (B, B) = max(iec(B, B)) = 0.6, eC V{a,b} (Z,Z) = 0.4,... e C nw e C U{a} (1) = max(iec(l, 1),H(bc(l, Z),H(bc(l, B)) = max(0.Z, 0.B, 0.1) = 0.B e C U{a} (Z) = max(iec(Z, l),nec(Z, Z),nec(Z, B)) = max(0.B,0.4,0.5) = 0.5 e C U{a} (B) = max(^c(B, l),n®c(B, Z),i*®c(B, B)) = max(0.l,0.5,0.6) = 0.6 Hana Rudová, Omezující podmínky, 4. prosince 2G18 223 Optimalizace & soft omezení: modely P ř íklad: řešení fuzzy CSP M Viz dříve: © C = cl e c2 e c3 pro všechna (A, B) (3,3) ... 0.6, (2,2)... 0.4, (1,1)... 0.2, (2,3) a (3,2) ... 0.5, (2,1) a (1,2)... 0.3, (1, 3) a (3,1)... 0.1 ■» © C = © C U (1) = max(/u©c(1, 1),!*©c(1, 2),u©c(1, 3)) = max(0.2,0.3,0.1) = 0.3 © C U{a} (2) = max(/u©c(2, 1),n©c(2, 2),u©c(2, 3)) = max(0.3,0.4,0.5) = 0.5 © C U{a> (3) = max(/u©c(3, 1),n©c(3, 2),u©c(3, 3)) = max(0.1,0.5,0.6) = 0.6 © C ^0 ©C ^0 () = max(£/©c(1, 1),£í©c(1, 2),n©c(1, 3),£/©c(2, 1),ia©c(2,2), £/©c(2, 3),£/©c(3, 1),£/©c(3, 2),n©c(3, 3)) = 0.6 Hana Rudová, Omezující podmínky, 4. prosince 2018 223 Optimalizace & soft omezení: modely Omezení nad polookruhy £ Semiring-based CSP & c-polookruh (A, +, x, 0,1) A množina polookruhu (množina preferencí) 0 g A (úplné nesplnení), 1 g A (úplné splnení) it + komutativní, idempotentní, asociativní operace s jednotkovým prvkem 0, s absorbujím prvkem 1 it x komutativní, asociativní operace, distributivní nad +, s jednotkovým prvkem 1, s absorbujím prvkem 0 £ x se používá ke kombinaci preferencí několika omezení min u fuzzy CSP 0 minimum (nesplnení), 1 maximum (splnení) & CásteCné uspo rádání max min 0 1 CSP s váhami N u { + 00} min + +0 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 225 Optimalizace & soft omezení: modely Instance omezení nad polookruhy P rístup A + x O l uspo rádání kombinace CSP {O,i} V A O i Fuzzy CSP (O,i) max min O i CSP s váhami N u { + 00} min + +0 O Duležité vlastnosti: A striktní monotonie: Ma, b,c g A : ((a < c) A (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) p r . a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie Hana Rudová, Omezující podmínky, 4. prosince 2018 225 Optimalizace & soft omezení: modely Instance omezení nad polookruhy P rístup A + x o 1 uspo rádání kombinace CSP {G,i} V A G 1 Puzzy CSP (G,i) max min G 1 CSP s váhami N u { + 00} min + +0 G Duležité vlastnosti: A striktní monotonie: Ma, b,c g A : ((a < c) A (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) p r . a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie A idempotence: Ma g A : a x a = a (platí pro fuzzy CSP) omezení, které je v problému obsaženo, muže být do nej p r idáno beze zmeny významu p r . x > 1@10,x > 1@10,x = 0@oo, p r i razení x = 0 má pro CSP s váhami úroven konz. 20 Hana Rudová, Omezující podmínky, 4. prosince 2018 225 Optimalizace & soft omezení: modely Instance omezení nad polookruhy P rístup A + x o 1 uspo rádání kombinace CSP {O,l} v A O l Fuzzy CSP (0, l> max min O l CSP s váhami N u { + 00} min + +0 O Duležité vlastnosti: A striktní monotonie: Ma, b,c g A : ((a < c) A (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) p r . a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie A idempotence: Ma g A : a x a = a (platí pro fuzzy CSP) omezení, které je v problému obsaženo, může být do nej p r idáno beze zmeny významu p r . x > 1@10,x > 1@10,x = 0@oo, p r i razení x = 0 má pro CSP s váhami úroven konz. 20 Jt striktní monotonie a idempotence x zároven pouze pro dvouprvkové A, tj. jen pro CSP Hana Rudová, Omezující podmínky, 4. prosince 2018 225 Optimalizace & soft omezení: modely Instance omezení nad polookruhy Prístup A + X 0 1 usporádání kombinace CSP (0,1} V A 0 1 Fuzzy CSP (0,1> max min 0 1 CSP s váhami N u { + 00} min + +0 0 Duležité vlastnosti: A striktní monotonie: Ma, b,c g A : ((a < c) A (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) pr. a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie A idempotence: Ma g A : a x a = a (platí pro fuzzy CSP) omezení, které je v problému obsaženo, muže být do nej pridáno beze zmeny významu pr. x > 1@10,x > 1@10,x = 0@oo, prirazení x = 0 má pro CSP s váhami úroveň konz. 20 Jt striktní monotonie a idempotence x zároveň pouze pro dvouprvkové A, tj. jen pro CSP JS> Existující vztahy: CSP = fuzzy CSP na dvouprvkové A fuzzy CSP lze polynomiálne transformovat na CSP s váhami Hana Rudová, Omezující podmínky, 4. prosince 2018 225 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V uspo rádaná množina promenných -á* Soft omezení (def, con): rozsah omezení con c V, def : D|con| — A & Soft problém je (C, con) nad (S,D, V), kde con c V, C množina omezení Hana Rudová, Omezující podmínky, 4. prosince 2018 226 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V uspo řádaná množina proměnných -á* Soft omezení (def, con): rozsah omezení con ^ V, def : Dlconl — A & Soft problém je (C, con) nad (S,D, V), kde con ^ V, C množina omezení & Projekce n-tic t iX 1- p r íklad: (1, 2, 3,4, 5) i(A'B'E)D,E)= (4,1, 5) Hana Rudová, Omezující podmínky, 4. prosince 2018 226 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V uspo rádaná množina proměnných -á* Soft omezení (def, con): rozsah omezení con c V, def : D|con| — A & Soft problém je (C, con) nad (S,D, V), kde con c V, C množina omezení Projekce n-tic t iX 1- p r íklad: (1, 2, 3,4, 5) i(A,B,E)D,E) = (4,1, 5) M Kombinace c = c1 0 c2 c1 = (def 1, con1) and c2 = (def2, con2) c = (def, con), con = con1 u con2, def (t) = def 1(ř icon,) x def2(t i™) Hana Rudová, Omezující podmínky, 4. prosince 2018 226 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V usporádaná množina proměnných -á* Soft omezení (def, con): rozsah omezení con c V, def : D|con| — A & Soft problém je (C, con) nad (S,D, V), kde con c V, C množina omezení Projekce n-tic t iX 1- príklad: (1, 2, 3,4, 5) i(A,B,E)D,E) = (4,1, 5) M Kombinace c = c1 0 c2 c1 = (def 1, con1) and c2 = (def2, con2) c = (def, con), con = con1 u con2, def (t) = def 1(t ) x def2(t ) A príklad: CSP s váhami: A = N u {o}, + = min, x = +, +o, 0 zadáno omezení c1 na xy: aa 2, ab 4, ba 1, bb 0, zadáno omezení c2 na x: a 0, b 1 kombinace c = c1 0 c2: aa 2(=2+0) ab 4(=4+0) ba 2(=1+1) bb 1(=0+1) Hana Rudová, Omezující podmínky, 4. prosince 2018 226 Optimalizace & soft omezení: modely Rešení pro omezení nad polookruhy Projekce c ^ c = (def, con), I c V c' = (def, con'), con' = con n J def '(ŕ) = X def (t) ^/ ticon f L/L+7 ncon L A príklad (pokracování): ci na xy: aa 2, ab 4, ba 1, bb 0, projekce ci a 2, b 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 227 Optimalizace & soft omezení: modely Řešení pro omezení nad polookruhy Projekce c ^ c = (def, con), I c V c' = (def, cori), con' = con n J def 'ď) = X def (t) ^/ ticon f L/L+7 ncon L A p r íklad (pokracování): ci na xy: aa 2, ab 4, ba 1, bb 0, projekce ci ^{X}: a 2, b 0 Úroven splnení problémů P = (C, con) ůdává omezení Sol (P) = ((g)C) ^ con a kombinace všech omezení v C a následovne projekce na promenné v con s» pro každé prirazení proměnných v con vrací omezení Sol(P) jeho úroven splnení Jt p r íklad (pokracování): ci na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém Pi = ({ci, c2}, {x,y}): Sol(Pi) = (ci <8> c2) ^{x,y}- aa 2, ab 4, ba 2, bb 1 Hana Růdová, Omezůjící podmínky, 4. prosince 2018 227 Optimalizace & soft omezení: modely Řešení pro omezení nad polookruhy Projekce c ^ c = (def, con), I c V c' = (def, cori), con' = con n J def '(ř) = X def (t) *7 ti con t> L/L+7 ncon L a p r íklad (pokraCování): ci na xy: aa 2, ab 4, ba 1, bb 0, projekce ci a 2, b 0 Úroven splnení problému P = (C, con) udává omezení Sol (P) = ((g)C) ^ con a kombinace všech omezení v C a následovne projekce na promenné v con s» pro každé přiřazení proměnných v con vrací omezení Sol(P) jeho úroven splnení Jt p r íklad (pokraCování): c1 na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém P1 = ({c1, c2}, {x,y}): Sol(P1) = (c1 0 c2) ^{x,y}- aa 2, ab 4, ba 2, bb 1 problém P2 = ({c1, c2}, {x}): Sol(P2) = (c1 0 c2) ^{xy. a 2, b 1 Hana Rudová, Omezujici podminky, 4. prosince 2G18 227 Optimalizace ä soft omezeni: modely Rešení pro omezení nad polookruhy St Projekce c ^ c = (def, con), I c V c' = (def, con'), con' = con n I def '(ŕ) = X def (t) ^/ ticon f L'L*I ncon L A príklad (pokracování): c1 na xy: aa 2, ab 4, ba 1, bb 0, projekce c1 ^{X}: a 2, b 0 & Úroven splnení problému P = (C, con) udává omezení Sol (P) = ((g)C) ^ con a kombinace všech omezení v C a následovne projekce na promenné v con s» pro každé p r i razení promenných v con vrací omezení Sol(P) jeho úroven splnení A príklad (pokracování): c1 na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém P1 = ({c1, c2}, {x,y}): Sol(P1) = (c1 0 c2) ^{Xy}: aa 2, ab 4, ba 2, bb 1 problém P2 = ({c1, c2}, {x}): Sol(P2) = (c1 0 c2) ^{X}: a 2, b 1 & Úroven konzistence: blevel(P) = Sol(P) ^0 -4» príklad (pokracování): blevel(P1) = blevel(P2) = 1 Hana Rudová, Omezující podmínky, 4. prosince 2018 227 Optimalizace & soft omezení: modely Optimalizace & soft omezení: algoritmy Soft propagace C Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných & Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných -i- snaha o získání realistictejších preferencí -fc výpocet realistictejších príspevku pro cenovou funkci Hana Rudová, Omezující podmínky, 4. prosince 2018 229 Optimalizace ä soft omezení: algoritmy Soft propagace C Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných & Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných -i- snaha o získání realistictejších preferencí A výpocet realistictejších p ríspevku pro cenovou funkci & C je soft k-konzistentní, jestliže pro všechny podmnožiny (k - 1) proměnných W a libovolnou další proměnnou y platí 0{ct | ct g C a cont c W} = (0{ct | c g C a cont c (W u {y})}) iť cont oznacuje promenné v omezení ct uvažování (def) pouze omezení ve W stejné jako: uvažování (def) omezení ve W a omezení spojující y s W, s následnou projekcí na W Hana Rudová, Omezující podmínky, 4. prosince 2018 229 Optimalizace & soft omezení: algoritmy Soft hranová konzistence (SAC) C k = 2,W = {x} : cx = (®{cy,cxy,cx}) ^{x} Hana Rudová, Omezující podmínky, 4. prosince 2G18 23G Optimalizace ä soft omezení: algoritmy Soft hranová konzistence (SAC) C k = 2,W = {x} : cx = (®{cy,cXy,cx}) } & CSP: libovolná hodnota v doméne x může být rozšír ena o hodnotu v doméne y tak, že je cxy splneno J* hodnoty a v doméne x, které nelze rozšír it na y, mají def ((a)) = 0 Hana Rudová, Omezující podmínky, 4. prosince 2018 23G Optimalizace & soft omezení: algoritmy Soft hranová konzistence (SAC) k = 2,W = {x} : cx = (®{cy,cxy,cx}) ^{x} CSP: libovolná hodnota v doméne x muže být rozšír ena o hodnotu v doméne y tak, že je cxy splneno J* hodnoty a v doméne x, které nelze rozšír it na y, mají def ((a)) = 0 Fuzzy CSP: úroven preference všech hodnot x v cx je stejná jako úroven preference daná (®{cy,cxy,cx}) ^{x} Hana Rudová, Omezující podmínky, 4. prosince 2018 23G Optimalizace & soft omezení: algoritmy Soft hranová konzistence (SAC) C k = 2, W = (x} : cx = (0{cy,cxy,cx}) } -i* CSP: libovolná hodnota v doméne x muže být rozšírena o hodnotu v doméne y tak, že je cxy splneno J* hodnoty a v doméne x, které nelze rozšírit na y, mají def ((a)) = 0 & Fuzzy CSP: úroven preference všech hodnot x v cx je stejná jako úroven preference daná (®{cy,cxy,cx}) ^{x} JS* Príklad na fuzzy CSP: A = (0, i), + = max, x = min, 0, i A- x,y g (a, b} -í* cx : a... 0.9, b... 0.i, cy : a... 0.9, b... 0.5, cxy : aa... 0.8, ab... 0.2, ba... 0, bb... 0 není SAC: cx dává 0.9 na x = a, ale (®{cy,cxy,cx}) ^{x} dává 0.8 na x = a ®{cy, cxy, cx} dává na (a, a) : min(0.9,0.8,0.9) = 0.8 ®{cy, cxy, cx} dává na (a, b) : min(0.5,0.2,0.9) = 0.2 projekce (®{cy,cxy,cx}) ^{x} dávána (a) : max(0.8,0.2) = 0.8 Hana Rudová, Omezující podmínky, 4. prosince 2018 230 Optimalizace & soft omezení: algoritmy Výpocet SAC JS> Základní algoritmus pro výpocet SAC: pro každé x a y změnit definici cx tak, aby korespondovala s (®{cy,cxy,cx}) ^{x} a iterace až do dosažení stability Hana Rudová, Omezující podmínky, 4. prosince 2018 2B1 Optimalizace & soft omezení: algoritmy Výpocet SAC JS> Základní algoritmůs pro výpocet SAC: Jt pro každé x a y zmenit definici cx tak, aby korespondovala s (®{cy,cxy,cx}) ^{x} a iterace až do dosažení stability & x idempotentní (fůzzy CSP) Jt zajištena ekvivalence, tj. původní i nový (po dosažení SAC) problém mají stejné rešení Jt zajišteno ůkoncení algoritmů Hana Růdová, Omezůjící podmínky, 4. prosince 2018 231 Optimalizace & soft omezení: algoritmy Výpocet SAC JS> Základní algoritmus pro výpocet SAC: pro každé x a y zmenit definici cx tak, aby korespondovala s (0{cy,cxy,cx}) ^{x} iterace až do dosažení stability idempotentní (fuzzy CSP) zajištena ekvivalence, tj. puvodní i nový (po dosažení SAC) problém mají stejné rešení zajišteno ukoncení algoritmu -í* x není idempotentní (CSP s váhami) pro každé u, v g A existuje w g A taková, že v x w = u w se nazývá rozdíl mezi u a v, maximální rozdíl se znací u - v nutno požadovat novou vlastnost pro systém (a rozšírit projekci a kombinaci) Jt s novou vlastností zajištena ekvivalence, pri striktní monotonii zajišteno i ukoncení tato vlastnost platí pro CSP s váhami Hana Rudová, Omezující podmínky, 4. prosince 2018 231 Optimalizace & soft omezení: algoritmy Řešení COP Cíl: nalezení úplného ř ešení s optimální hodnotou cenové funkce Prohledávání lokální prohledávání p římé zahrnutí optimalizacního kriteria do evaluace (hodnota obj. funkce) -fc stromové prohledávání metoda vetví a mezí + její rozšír ení Hana Rudová, Omezující podmínky, 4. prosince 2018 232 Optimalizace & soft omezení: algoritmy Řešení COP JS> Cíl: nalezení úplného rešení s optimální hodnotou cenové funkce & Prohledávání lokální prohledávání prímé zahrnutí optimalizacního kriteria do evaluace (hodnota obj. funkce) -fc stromové prohledávání metoda vetví a mezí + její rozšírení CSP s omezeními: minimalizace souctu vah omezení minXcGCc(d) -** velmi castá optimalizacní úloha -i- váha (cena) omezení: 0 = úplné splnení, (0, o) cástecné nesplnení, oo úplné nesplnení J* hodnota cenové funkce: cena p r i razení/rešení -i- maximalizace je duální problém S> algoritmy pro fuzzy CSP na podobných principech Hana Rudová, Omezující podmínky, 4. prosince 2018 232 Optimalizace & soft omezení: algoritmy COP jako série CSP problémů Triviální metoda r ešení Řešení COP jako CSP a nalezení iniciální hodnoty cenové funkce W1 Opakované r ešení CSP (i = 1...) s p r idáním omezení Xc^Cc(d) < Wi Když r ešení nového CSP neexistuje, pak poslední Wi dává optimum Hana Rudová, Omezujici podminky, 4. prosince 2G18 233 Optimalizace & soft omezeni: algoritmy COP jako série CSP problémů Triviální metoda r ešení Rešení COP jako CSP a nalezení iniciální hodnoty cenové funkce W1 Opakované rešení CSP (i = 1...) s přidáním omezení XcGCc(d) < Wi Když r ešení nového CSP neexistuje, pak poslední Wi dává optimum Výpocetne zbytecne nárocné Efektivní rozšír ení obtížné Hana Rudová, Omezující podmínky, 4. prosince 2018 233 Optimalizace & soft omezení: algoritmy Metoda větví a mezí (brcmch&bound) BB C Prohledávání stromu do hloubky -í* p r i razené=minulé promenné P, nep r i razené=budoucí promenné F Jť omezení pouze na minulých promenných CP, omezení na minulých i budoucích promenných CPF, omezení pouze na budoucích promenných CF Hana Rudová, Omezující podmínky, 4. prosince 2018 234 Optimalizace & soft omezení: algoritmy Metoda vetví a mezí (branch&bound) BB C Prohledávání stromu do hloubky -í* p ř i řazené=minulé promenné P, nep r i razené=budoucí promenné F & omezení pouze na minulých promenných CP, omezení na minulých i budoucích promenných CPF, omezení pouze na budoucích promenných CF JS> Výpocet mezí J* horní mez UB: cena nejlepšího dosud nalezeného r ešení Hana Rudová, Omezující podmínky, 4. prosince 2018 234 Optimalizace & soft omezení: algoritmy Metoda větví a mezí (brcmch&bound) BB C Prohledávání stromu do hloubky -í* p r i razené=minulé promenné P, nep r i razené=budoucí promenné F Jť omezení pouze na minulých promenných CP, omezení na minulých i budoucích promenných CPF, omezení pouze na budoucích promenných CF JS> Výpocet mezí J* horní mez UB: cena nejlepšího dosud nalezeného r ešení Jt dolní mez LB: dolní odhad minimální ceny pro soucasné cástecné p r i razení O rezávání: LB > UB (cíl: minimalizace) Jt víme, že rozšír ení soucasného cástecného r ešení už bude mít horší (vyšší) cenu LB než dosud nalezené r ešení UB Jt lze proto o r ezat tuto cást prohledávacího prostoru ± p r íklad: pokud nalezneme r ešení s cenou 10 od rízneme všechny vetve, které mají cenu vyšší než 9 Hana Řudová, Omezující podmínky, 4. prosince 2018 234 Optimalizace & soft omezení: algoritmy Metoda vetví a mezí: výber hodnoty M Algorimus metody vetví a mezí a generický algoritmůs rozširitelný jako implementace backtrackingů %> možná rozšírení zejména o: pohled dopredů, výpocet dolní meze LB(d) vrací dolní odhad ceny pro každé cástecné prirazení d *» poůžití pri rozšírení o jednů promennoů LB(ät-i,a) Hana Růdová, Omezůjící podmínky, 4. prosince 2018 235 Optimalizace & soft omezení: algoritmy Metoda větví a mezí: výběr hodnoty M Algorimus metody vetví a mezí a generický algoritmus rozši r itelnýjako implementace backtrackingu %> možná rozšír ení zejména o: pohled dop r edu, výpocet dolní meze LB(d) vrací dolní odhad ceny pro každé cástecné p r i razení d *» použití p r i rozšír ení o jednu proměnnou LB(at-1,a) & Optimistický výber hodnoty proceduře Select-Value-BB while D- is not empty vyber a smaž libovolný a g D- takový, že min LB(at-1,a) if Consistent(at-1,xt = a) a LB(at-1,a) < UB return a (jinak ořezej a) return null (konzistentní hodnota neexistuje) Hana Rudová, Omezující podmínky, 4. prosince 2018 235 Optimalizace ä soft omezení: algoritmy Algoritmus metody větví a mezí procedure Branch-Bound((X,D, C), UB,f) rozdíly od backtrackingu i := 1, D- := Di (inicializace CítaCe proměnných, kopírování domény) Reseni := null (rešení dosud nenalezeno) repeat while 1 < i < n prirazení xi := Select-Value-BB if xi is null (žádná hodnota nebyla vrácena) i := i - 1 (zpetná fáze) else i := i + 1 (dopredná fáze) Di := Di if i = 0 if Reseni is not null return UB, Reseni else return ,,nekonzistentní'' else Reseni := x1,...,xn (uložení hodnot dosud nejlepšího prirazení) spoCítej cenu souCasného p r i razení W = XceCc(x), UB:=min{W, UB} i := 1, nastav na Dk pro k = 1 ...n until true end Branch-Bound Hana Rudová, Omezující podmínky, 4. prosince 2018 236 Optimalizace & soft omezení: algoritmy min £cGcc(d) Dolní mez & Kvalita dolní meze: velmi důležitá pro efektivitu BB -í* Dolní mez lze ovlivnit pomocí s» ceny minulých promenných vzdálenost (soucet vah omezení na minulých promenných) a lokální ceny budoucích promenných vzhledem k minulým promenným NC* a lokální ceny budoucích promenných AC* Jt globální ceny budoucích promenných prohledávání ruská panenka Hana Rudová, Omezující podmínky, 4. prosince 2018 237 Optimalizace & soft omezení: algoritmy NC* algoritmus Projekce ceny hodnot (j, *) pro každou proměnnou j do dolní hranice LB ceny r ešení j j (ji) 0,3) 2 o 5 s LB=6 LB=8 Hodnotu a promenné j znacíme (j,a) obrázek: promenná j má nejprve t r i hodnoty (j, 2), (j, 3), jejichž cena je 2,4 a 5 Všechny hodnoty promenné j znacíme (j, *) Hana Rudová, Omezující podmínky, 4. prosince 2018 2B8 Optimalizace & soft omezení: algoritmy NC* algoritmus Projekce ceny hodnot (j, *) pro každou proměnnou j do dolní hranice LB ceny ř ešení Smazání hodnot (j,a) p ř evyšující (nebo rovné) horní hranici UB j (ji) 0,3) 2 5 LB=6 j o s LB=8 Hodnotu a promenné j znacíme (j,a) /©\ LB=8 UB=10 LB=8 UB=10 -4» obrázek: promenná j má nejprve t ř i hodnoty (j, 2), (j, 3), jejichž cena je 2,4 a 5 Všechny hodnoty promenné j znacíme (j, *) Hana Rudová, Omezující podmínky, 4. prosince 2018 238 Optimalizace & soft omezení: algoritmy AC* algoritmus (A) Projekce ceny hrany (i,a)(j,b) do ceny hodnoty (i, a), pokud je tato cena zahrnuta ve všech hranách (i,a)(j, *) i j i j UB=11 UB=11 (i, 2)(j, 1) (i, 2)(j, 2) (i, 2) (i, 2)(j, 3) Hana Rudová, Omezující podmínky, 4. prosince 2018 239 Optimalizace & soft omezení: algoritmy AC* algoritmus (A) Projekce ceny hrany (i,a)(j,b) do ceny hodnoty (i, a), pokůd je tato cena zahrnůta ve všech hranách (i,a)(j, *) NC* algoritmůs (B) projekce ceny hodnot pro každoů promennoů (C) smazání hodnot s cenoů > UB i j i i LB=6 UB=11 LB=6 UB=11 LB=9 UB=11 (i, Z)(j, 1) (i, Z)(j, Z) (i, Z)(j, B) (i,Z) LB=9 UB=11 Hana Růdová, Omezůjící podmínky, 4. prosince 2018 239 Optimalizace & soft omezení: algoritmy Prohledávání ruská panenka (Russion doll search) n po sobe jdoucích BB prohledávání, každé má navíc jednu proměnnou , , - statické uspo rádání promenných A první podproblém obsahuje pouze n-tou promennou t-tý podproblém obsahuje posledních t promenných ((n - t + 1) ...n) S> podproblémy r ešeny pomocí BB s využitím LB a UB z p r edchozích behu Hana Rudová, Omezující podmínky, 4. prosince 2018 240 Optimalizace & soft omezení: algoritmy Prohledávání ruská panenka (Russion doll search) & n po sobe jdoucích BB prohledávání, každé má navic jednu promennou , , - statické uspo rádáni promenných it prvni podproblém obsahuje pouze n-tou promennou i-tý podproblém obsahuje poslednich i promenných ((n - i + 1) ...n) it podproblémy r ešeny pomoci BB s využitim LB a UB z p r edchozich behu -í* Pr i rešení podproblému (n - i + 1) it problém zahrnuje promenné xi,xi+1, ...,xn it mejme cástecné p r i razeni pro tento podproblém (ai,ai+1,ai+j) s nep r i razenými promennými xi+j+1,. ..,xn Hana Rudová, Omezujici podminky, 4. prosince 2G18 24G Optimalizace & soft omezeni: algoritmy Prohledávání ruská panenka (Russion doll search) & n po sobe jdoucích BB prohledávání, každé má navíc jednů promennoů . , „ statické ůsporádání promenných A první podproblém obsahůje poůze n-toů promennoů i-tý podproblém obsahůje posledních i promenných ((n - i + i) ...n) S> podproblémy rešeny pomocí BB s vyůžitím LB a UB z predchozích behů & Pri rešení podproblému (n - i + i) A problém zahrnůje promenné xi,xi+i, ...,xn J> mejme cástecné prirazení pro tento podproblém (ai,ai+i,ai+j) s neprirazenými promennými xi+j+i,. ..,xn J* do dolní meze lze zahrnoůt optimální cenů (n - i - j) podproblémů optim(xi+j+i,xn) ^ LB((ai,ai+i,...,ai+j)) = dist((ai,ai+i,...,ai+j)) + optim(xi+j+i,...,xn) dist ((ai, ai+i,ai+j)) vzdálenost (soůcet vah omezení na minůlých promenných) it optimální rešení prechozích problémů poůžita pro: výber hodnoty, pro zlepšení iniciální horní meze Hana Růdová, Omezůjící podmínky, 4. prosince 2018 240 Optimalizace & soft omezení: algoritmy Prohledávání ruská panenka (Russion doll search) & n po sobe jdoucích BB prohledávání, každé má navíc jednu proměnnou , , „ statické uspo rádání proměnných A první podproblém obsahuje pouze n-tou proměnnou í-tý podproblém obsahuje posledních i proměnných ((n - i + 1) ...n) S> podproblémy r ešeny pomocí BB s využitím LB a UB z p r edchozích behu -í* Pr i rešení podproblému (n - i + 1) A problém zahrnuje promenné xi,xi+1, ...,xn J> mejme cástecné p r i razení pro tento podproblém (ai,ai+1,ai+j) s nep r i razenými promennými xi+j+1,. ..,xn J* do dolní meze lze zahrnout optimální cenu (n - i - j) podproblému optim(xi+j+1,xn) ^ LB((ai,ai+1,...,ai+j)) = dist((ai,ai+1,...,ai+j)) + optim(xi+j+1,...,xn) dist ((ai, ai+1,ai+j)) vzdálenost (soucet vah omezení na minulých promenných) -i- optimální r ešení p r echozích problémů použita pro: výber hodnoty, pro zlepšení iniciální horní meze -í* Vno ř ená prohledávání se vyplatí vzhledem k pro ř ezání stavového prostoru Hana Rudová, Omezující podmínky, 4. prosince 2018 240 Optimalizace & soft omezení: algoritmy Opakování Vzorové písemné práce -í* 2 vzorové písemné práce na webu predmetu -i* Struktura písemné práce: 7 otázek 1. 1 prehledová otázka 2. otázky na propagaci a konzistencní algoritmy 3. otázky na stromové prohledávání prohledávání 4. otázky na lokální prohledávání a optimalizace 5. 1 otázka na rešení problému v OPL Hana Rudová, Omezující podmínky, 4. prosince 2018 242 Opakování Vzorové písemné práce -í* 2 vzorové písemné práce na webu predmetu -i* Struktura písemné práce: 7 otázek 1. 1 prehledová otázka 2. otázky na propagaci a konzistencní algoritmy 3. otázky na stromové prohledávání prohledávání 4. otázky na lokální prohledávání a optimalizace 5. 1 otázka na rešení problému v OPL & Hlavní typy otázek pro 2,3,4 -i- p r íklady k vypocítání (jako vzorové p r íklady - nekdy kratší verze) -k pojem (a p r íklad) kód algoritmu (a p r íklad) M porovnání pojmu/algoritmů (a p r íklady) Hana Rudová, Omezující podmínky, 4. prosince 2018 242 Opakování P r íklady s řešeními na webu I. P ř íklady 1. binarizace it AC-1 vs. AC-3 & konzistence mezí vs. hranová konzistence P ř íklady 2. J5> strom stavového prostoru: backtracking vs. kontrola dop r edu vs. pohled dop r edu P ř íklady 3. & omezení s váhami P ř íklady 4. JS* p rehled konzistencních algoritmů Ä algoritmus AC-4 JS* algoritmus DAC Hana Rudová, Omezující podmínky, 4. prosince 2018 243 Opakování P ríklady s rešeními na webu II. P r íklady 5. & strom stavového prostoru: backtracking vs. kontrola dop r edu M pohled zpet: Gaschniguv skok zpet P r íklady 6. & prehled prohledávacích algoritmu & problém rozvrhování výuky v OPL P r íklady 7. JS* binarizace J5> podpora hodnoty & konzistence mezí vs. hranová konzistence & algoritmus DAC, nalezení rešení bez navracení Hana Rudová, Omezující podmínky, 4. prosince 2018 244 Opakování P ríklady s rešeními na webu III. P r íklady 8. Ä strom stavového prostoru: backtracking vs. kontrola dop r edu vs. pohled dop r edu & problém plánování projektu v OPL P r íklady 9. & stromový CSP, nalezení rešení bez navracení J5> algoritmus PC-2 JS> problém rozvrhování výuky jedné místnosti v OPL & strom stavového prostoru: kontrola dop r edu vs. pohled dop redu bez iniciální konzistence M rozvrhování úkolu pro zaměstnance na smeny Domácí úkol 1 nalezení podpory JS> algoritmus DAC a nalezení r ešení bez navracení & problém p r i razení pobocek k obchodum v OPL Hana Rudová, Omezující podmínky, 4. prosince 2018 245 Opakování Pojem: smerová konzistence a šírka grafu Co to je šírka grafu a jaký je její význam? Použité pojmy objasnete. & Šírka grafu je minimum z šírek všech jeho usporádaných grafu. JS> Šírka usporádaného grafu je maximum z šírek jeho vrcholu. -í* Šírka vrcholu v usporádaném grafu je pocet hran vedoucích z tohoto vrcholu do predchozích vrcholu. JS> Usporádaný graf je graf s lineárním usporádáním vrcholu. JS> Šírka grafu nám ríká, jak silnou úroveň smerové i-konzistence potrebujeme, rešení problému bez navracení. Hana Rudová, Omezující podmínky, 4. prosince 2018 246 Opakování Algoritmus: lokální prohledávání JS> Napište (nebo alespon slovne popište) algoritmus prohledávání s tabu seznamem. Je Váš algoritmus kombinován s nejakou další metodou lokálního prohledávání? proceduře TSHC(MaxZmen) 6 := náhodné ohodnocení promenných % iniciální přiřazení PocetZmen := 0 while E(6) > 0 a PocetZmen s nejlepší evaluací tak, že není v tabu seznamu a nebo splnuje aspiracní kriterium přidej (V,c> do tabu seznamu, kde c je soucasná hodnota V smaž nejstarší položku v tabu seznamu pri raď a do V PocetZmen := PocetZmen+1 return 6 Algoritmus je kombinován s metodou stoupání/hill climbing. Hana Rudová, Omezující podmínky, 4. prosince 2018 247 Opakování P r íklady strucneji: omezení s váhami Jaká je úroven konzistence pro následující CSP problém s váhami s omezeními cl a c2? P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Výsledek: blevel(P)=1. Nutno uvést strucný postup, nap r . Hana Rudová, Omezující podmínky, 4. prosince 2018 248 Opakování P r íklady struCneji: omezení s váhami Jaká je úroven konzistence pro následující CSP problém s váhami s omezeními c1 a c2? P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Výsledek: blevel(P)=1. Nutno uvést strucný postup, nap r . Spocítáme (c1 0 c2) ^0 () = = mirínd®c2(r, r),^1 ®c2(r, s),^q®c2(s, r),^1 ®c2(s, s)) = Hana Řudová, Omezující podmínky, 4. prosince 2018 248 Opakování Príklady strucneji: omezení s váhami Jaká je úroven konzistence pro následující CSP problém s váhami s omezeními c1 a c2? P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Výsledek: blevel(P)=1. Nutno uvést strucný postup, napr. Spocítáme (c1 0 c2) ^0 () = = min(^d®c2(r, r),^q®c2(r, s),^1 ®c2(s, r),^q®c2(s, s)) = = min(1 + 0, 2 + 1,4 + 0,6 + 1) = 1 Hana Rudová, Omezující podmínky, 4. prosince 2018 248 Opakování P ríklady strucneji: omezení s váhami II. A jaká je úroven splnení pro problém P1=({c1,c2},{Y})? výsledek: úroven splnení pro Y=r: 1, pro Y=s: 3, postup: P=({c1,c2},{X,Y» dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=Q, def(s)=1 Hana Rudová, Omezující podmínky, 4. prosince 2018 249 Opakování Príklady strucneji: omezení s váhami II. A jaká je úroven splnení pro problém P1=({c1,c2},{Y})? výsledek: úroven splnení pro Y=r: 1, pro Y=s: 3, postup: Spocítáme (c1 0 c2) (r) = min(^c1®c2(r, r),^®^(s, r)) = min(1 + 0,4 + 0) = 1 (c1 0 c2) (s) = min(^d®c2(r, s),^q®c2(s, s)) = min(2 + 1,6 + 1) = 3 P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Hana Rudová, Omezující podmínky, 4. prosince 2018 249 Opakování Doménové promenné Celocíselné promenné dvar int+ Sudoku: hodnota pole Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Doménové promenné Celocíselné promenné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[l..Size][l..Size] in l..Size; Hana Rudová, Omezující podmínky, 4. prosince 2G18 25G Opakování Doménové promenné Celocíselné promenné dvar int+ 3* Sůdoků: hodnota pole dvar int+ sůdoků[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sůdoků[i][j]); //různe pro kazdy radek Hana Růdová, Omezůjící podmínky, 4. prosince 2018 250 Opakování Doménové promenné Celocíselné promenné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a p r i razení pracovníku:pracovník vyrábí produkt Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování promenné & Celocíselné promenné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a p r i razení pracovníku:pracovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProducts; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování promenne & Celocíselné promenné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a p r i razení pracovníku:pracovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProducts; total == sum (w in 1..nbWorkers) effectivity[w][W[w]]; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Doménové promenné Celocíselné promenné dvar int+ 3* Sůdoků: hodnota pole dvar int+ sůdoků[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sůdoků[i][j]); //různe pro kazdy radek a prirazení pracovníků:pracovník vyrábí prodůkt dvar int+ W[1..nbWorkers] in 1..nbProdůcts; total == sům (w in 1..nbWorkers) effectivity[w][W[w]]; Binární promenné dvar boolean problém baťohů: je predmet v baťohů? Hana Růdová, Omezůjící podmínky, 4. prosince 2018 250 Opakování Doménové proměnné Celočíselné proměnné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean J* problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Doménové proměnné Celočíselné proměnné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek it p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Doménové proměnné Celočíselné proměnné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek it prirazení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je predmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; Sudoku: hodnota pole Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Doménové proměnné Celočíselné proměnné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean J* problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; *> Sudoku: hodnota pole dvar boolean sudoku[1..Size][1..Size][1..Size]; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Doménové proměnné Celočíselné proměnné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean J* problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; *> Sudoku: hodnota pole dvar boolean sudoku[1..Size][1..Size][1..Size]; forall (i,k in 1..Size) sum (j in 1..Size) sudoku[i][j][k] == 1; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování proměnné & Celočíselné proměnné dvar int+ 3* Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek a prirazení pracovníku:pracovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProducts; total == sum (w in 1..nbWorkers) effectivity[w][W[w]]; & Binární promenné dvar boolean J* problém bat'ohu: je predmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; *> Sudoku: hodnota pole dvar boolean sudoku[1..Size][1..Size][1..Size]; forall (i,k in 1..Size) sum (j in 1..Size) sudoku[i][j][k] == 1; navíc: forall (i, j in 1..Size) sum(k in 1..Size) sudoku[i][j][k] == 1; Hana Rudová, Omezující podmínky, 4. prosince 2018 250 Opakování Rozvrhování: zdroje -í* Jeden zdroj Jr jednotková doba trvání úlohy: dvar int, allDifferent(casy) a odlišné doby trvání úloh: dvar interval, dvar sequence, noOverlap(casy) Hana Rudová, Omezující podmínky, 4. prosince 2018 251 Opakování Rozvrhování: zdrojě Jeden zdroj Jr jednotková doba trvání úlohy: dvar int, allDifferent(časy) & odlišné doby trvání úloh: dvar interval, dvar sequence, noOverlap(časy) Víče zdroju it nepožadujeme určení zdroje pro úlohu bez doménových promennýčh pro určení zdroje úlohy čumulFunčtion, pulse(časy[uloha], zdroju[uloha]) Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 251 Opakování Rozvrhování: zdrojě Jeden zdroj Jr jednotková doba trvání úlohy: dvar int, allDifferent(časy) it odlišné doby trvání úloh: dvar interval, dvar sequence, noOverlap(časy) Víče zdroju it nepožadujeme určení zdroje pro úlohu bez doménových promennýčh pro určení zdroje úlohy čumulFunčtion, pulse(časy[uloha], zdroju[uloha]) it požadujeme určení zdroje pro úlohu včetne doménovýčh promennýčh pro určení zdroje úlohy dvar interval prirazeni ... optional alternative(časy[uloha], ... prirazeni[uloha][zdroje], zdroju[uloha]) Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 251 Opakování Rozvrhování II. & Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); Hana Růdová, Omezůjící podmínky, 4. prosince 2018 252 Opakování Rozvrhování II. & Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); M Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..üloh][1..Stroju] optional; Hana Rudová, Omezující podmínky, 4. prosince 2018 252 Opakování Rozvrhování II. & Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); M Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..üloh][1..Stroju] optional; forall (u in L.üloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.üloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; Hana Rudová, Omezující podmínky, 4. prosince 2018 252 Opakování Rozvrhování II. & Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); M Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..üloh][1..Stroju] optional; forall (u in 1..Uloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.Uloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; & Dovolená: práce lidí se nepřekrývá s jejich dovolenou Hana Rudová, Omezující podmínky, 4. prosince 2018 252 Opakování Rozvrhování II. & Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Zavislost { int Pred; int Po; } {Zavislost} zavislosti = forall (zav in zavislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); M Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..Uloh][1..Stroju] optional; forall (u in L.Uloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.Uloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; & Dovolená: práce lidí se neprekrývá s jejich dovolenou rešení: pridáme dodatecné intervalové promenné dvar interval casy[u in L.Prace+Dovolene] size trvani[u]; forall (u in L.Prace+Dovolene) noOverlap(casy); Hana Rudová, Omezující podmínky, 4. prosince 2018 252 Opakování Rozvrhování II. & Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); M Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..üloh][1..Stroju] optional; forall (u in L.üloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.üloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; & Dovolená: práce lidí se nep r ekrývá s jejich dovolenou rešení: p r idáme dodatecné intervalové promenné dvar interval casy[u in L.Prace+Dovolene] size trvani[u]; forall (u in L.Prace+Dovolene) noOverlap(casy); cumulFunction nastroje = sum (p in L.Prace) pulse( casy[p],nastroju[p] ); Hana Rudová, Omezující podmínky, 4. prosince 2018 252 Opakování Optimalizace -í* Problém baťohů: maximalizace soůctů cen predmetů v baťohů Hana Růdová, Omezůjící podmínky, 4. prosince 2018 253 Opakování Optimalizace -í* Problém baťohu: maximalizace součtu cen předmětů v baťohu maximize sum (i in nbItems) (take[i] * prices[i] ); Hana Rudová, Omezující podmínky, 4. prosince 2018 253 Opakování Optimalizace -í* Problém bat'ohu: maximalizace souctu cen p ředmetů v bat'ohu maximize sum (i in nbItems) (take[i] * prices[i] ); -i* Minimalizace casu dokoncení poslední úlohy Hana Rudová, Omezující podmínky, 4. prosince 2018 253 Opakování Optimalizace -í* Problém bat'ohu: maximalizace souctu cen p redmetu v bat'ohu maximize sum (i in nbItems) (take[i] * prices[i] ); -i* Minimalizace casu dokoncení poslední úlohy minimize sum (u in 1..Pocet) endOf( casy[u] ); zadány poslední operace úlohy: Hana Rudová, Omezující podmínky, 4. prosince 2018 253 Opakování Optimalizace -í* Problém bat'ohu: maximalizace součtu čen p redmetu v bat'ohu maximize sum (i in nbltems) (take[i] * pričes[i] ); -i* Minimalizace času dokončení poslední úlohy minimize sum (u in 1..Počet) endOf( časy[u] ); zadány poslední operače úlohy: minimize sum (u in 1..Počet) endOf( časy[u][Posledni] ); Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 253 Opakování Optimalizace -í* Problém bat'ohu: maximalizače součtu čen p redmetu v bat'ohu maximize sum (i in nbltems) (take[i] * pričes[i] ); -i* Minimalizače času dokončení poslední úlohy minimize sum (u in 1..Počet) endOf( časy[u] ); zadány poslední operače úlohy: minimize sum (u in 1..Počet) endOf( časy[u][Posledni] ); & Maximaliče (váženého) počtu realizovanýčh úloh Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 253 Opakování Optimalizace -í* Problém bat'ohu: maximalizace součtu čen predmetu v bat'ohu maximize sum (i in nbltems) (take[i] * pričes[i] ); -i* Minimalizace času dokončení poslední úlohy minimize sum (u in 1..Počet) endOf( časy[u] ); zadány poslední operače úlohy: minimize sum (u in 1..Počet) endOf( časy[u][Posledni] ); ii> Maximaliče (váženého) počtu realizovanýčh úloh maximize sum (u in 1..Počet) (vahy[u] * presenčeOf(časy[u])); Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 253 Opakování UrCete Cas a místnost pro výuku množiny p ředmetů. Datová instance: 1. rozvrh tvoříte pro 3 vyuCovací dny a každý den má 10 hodin 2. máte zadáno 14 předmětů 3. délka výuky předmetu je 4 nebo 5 hodin (urCeno pro každý předmet předem) 4. máte k dispozici 3 místnosti 5. máte zadány 3 třídy (skupiny žáku) 6. každá třída má v zadání urCeno 4 až 5 předmetu, které bude navštevovat Omezující podmínky: 7. výuka předmetu musí probíhat souvisle bez přerušení (tj. nesmí např. zacínat jeden den vecer a koncit druhý den ráno) 8. v každé místnosti je nejvýše jeden předmet v danou dobu 9. pro každou třídu je zadána množina jejích předmetu; každá třída muže mít vždy nejvýše jeden z techto předmetu v danou dobu Úcelová funkce: 10. Jednotlivé předmety by mely být do rozvrhu umísteny tak, aby výuka všech tříd skonala co nejdříve (např. třetí den dopoledne). Tj. minimalizujte soucet koncových casu výuky posledních předmetu všech tříd. Hana Růdová, Omezůjící podmínky, 4. prosince 2018 254 Opakování Školní rozvrh: vstupní proměnné int Dny = 3; int Hodin = 10; int Predmetu = 14; int Mistnosti = 3; int Tridy = 3; Hana Rudová, Omezující podmínky, 4. prosince 2018 255 Opakování Školní rozvrh: vstupní proměnné int Dny = 3; int Hodin = 10; int Predmetu = 14; int Mistnosti = 3; int Tridy = 3; range rTridy = L.Tridy; range rMistnosti = L.Mistnosti; Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 255 Opakování Školní rozvrh: vstupní proměnné int Dny = 3; int Hodin = 10; int Predmetu = 14; int Mistnosti = 3; int Tridy = 3; range rTridy = L.Tridy; range rMistnosti = L.Mistnosti; tuple predmetyTrid{ key int predmet; int trida; int trvani;} // napr. trida 1 ma predmety 1,2,3; trida 2 ma predmety 4,5, ... // predmety 1,2,3,4,5 maji trvani 4,4,5,5,4 // predmet je klic, tj. napr. <2> odkazuje na cely tuple <2,1,4> {predmetyTrid} PredmetyTrid = {<1,1,4>,<2,1,4>,<3,1,5>,<4,2,5>,<5,2,4>,...}; Hana Rudová, Omezující podmínky, 4. prosince 2018 255 Opakování Školní rozvrh: model Doménové proměnné Hana Rudová, Omezující podmínky, 4. prosince 2018 256 Opakování Školní rozvrh: model Doménové proměnné // přiřazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; Hana Rudová, Omezující podmínky, 4. prosince 2018 256 Opakování Školní rozvrh: model Doménové proměnné // přiřazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetU a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Hana Rudová, Omezující podmínky, 4. prosince 2018 256 Opakování Školní rozvrh: model Doménové proměnné // přiřazení Casu předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetů a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý předmět je vyučován právě v jedné místnosti Hana Rudová, Omezující podmínky, 4. prosince 2018 256 Opakování Školní rozvrh: moděl Doménové proměnné // přiřazení Casu předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetU a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý p rědmět jě vyučován právě v jědné místnosti forall(p in PredmetyTrid) alternative(casy[p.predmet], all(m in rMistnosti) prirazeni[p][m]); Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 256 Opakování Školní rozvrh: model Doménové promenné ^ prirazení casu predmetúm v maximálním rozmezí Dny*Hodin, zajištení trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; 77 volitelný interval pro prirazení predmetú a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý predmet je vyuCován práve v jedné místnosti forall(p in PredmetyTrid) alternative(casy[p.predmet], all(m in rMistnosti) prirazeni[p][m]); V každé místnosti je nejvýše jeden predmet v danou dobu Hana Rudová, Omezující podmínky, 4. prosince 2G18 256 Opakování Školní rozvrh: model Doménové promenné XX prirazení casu predmetúm v maximálním rozmezí Dny*Hodin, zajištení trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; XX volitelný interval pro prirazení predmetu a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý p redmet je vyucován práve v jedné místnosti forall(p in PredmetyTrid) alternative(casy[p.predmet], all(m in rMistnosti) prirazeni[p][m]); V každé místnosti je nejvýše jeden p redmet v danou dobu XX sekvence rozvrhu místností z dúvodu neprekrývání dvar sequence rozvrhMistnosti[m in rMistnosti] in all (p in PredmetyTrid) prirazeni[p][m]; forall(m in rMistnosti) noOverlap(rozvrhMistnosti[m]); Hana Rudová, Omezující podmínky, 4. prosince 2G18 256 Opakování Školní rozvrh: model II. Každý p redmět je vyuCován pro konkrétní t r ídu (skupinu žáku), tj. pro každou t ř ídu je zadána množina jejích p r edmetu Hana Rudová, Omezující podmínky, 4. prosince 2018 257 Opakování Školní rozvrh: model II. Každý p redmět je vyučován pro konkrétní t r ídu (skupinu žákU), tj. pro každou t r ídu je zadána množina jejích p r edmetů // sekvence rozvrhu tríd z dUvodu neprekrývaní dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá trída muže mít vždy nejvýše jeden p r edmet v danou dobu Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 257 Opakování Školní rozvrh: model II. Každý p redmet je vyuCován pro konkrétní t r ídu (skůpinů žáků), tj. pro každoů trídů je zadána množina jejích predmetů // sekvence rozvrhu tříd z důvodu neprekrývaní dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá trída může mít vždy nejvýše jeden predmet v danoů dobů forall (t in rTridy) noOverlap(rozvrhTridy[t]); Hana Růdová, Omezůjící podmínky, 4. prosince 2018 257 Opakování Školní rozvrh: model II. Každý předmět je vyučován pro konkrétní třídu (skupinu žákU), tj. pro každou trídu je zadána množina jejích predmetu // sekvence rozvrhu tríd z dUvodu neprekrývání dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá trída může mít vždy nejvýše jeden predmet v danou dobu forall (t in rTridy) noOverlap(rozvrhTridy[t]); Výuka predmetu musí probíhat bez prerušení Hana Rudová, Omezující podmínky, 4. prosince 2018 257 Opakování Školní rozvrh: moděl II. Každý p redmet je vyuCován pro konkrétní t r ídu (skupinu žáku), tj. pro každou t ř ídu je zadána množina jejích p r edmetu // sekvence rozvrhu tríd z důvodu neprekrývaní dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá třída může mít vždy nejvýše jeden p r edmet v danou dobu forall (t in rTridy) noOverlap(rozvrhTridy[t]); Výuka p redmetu musí probíhat bez p rerušení forall (p in PredmetyTrid) startOf(casy[p]) % Hodin <= (Hodin-p.trvani); alternativne: forall (p in PredmetyTrid) endOf(casy[p]) % Hodin <= Hodin; Hana Rudová, Omezující podmínky, 4. prosince 2018 257 Opakování Školní rozvrh: optimalizace Jednotlivé p redmety by mely být do rozvrhu umístěny tak, aby výuka všech tríd skončila co nejd ríve (nap r . tr etí den dopoledne). Tj. minimalizujeme souCet koncových Casů výuky posledních p ředmetů všech tr íd. Hana Rudová, Omezující podmínky, 4. prosince 2018 258 Opakování Školní rozvrh: optimalizace Jednotlivé p redmety by mely být do rozvrhu umísteny tak, aby výuka všech tríd skoncila co nejd ríve (nap r . tr etí den dopoledne). Tj. minimalizujeme souCet koncových Casů výuky posledních predmetu všech tríd. // cas konce posledního předmětu každé třídy dexpr int maxTřidy[t in řTřidy] = max(p in PředmetyTřid : p.třida == t) endOf(casy[p]); // souCet koncových CasU posledních hodin všech tříd minimize sum(t in řTřidy) maxTřidy[t]; Hana Rudová, Omezující podmínky, 4. prosince 2018 258 Opakování Rozvrhování úkolů pro zaměstnance na smeny Je zadán pocet dnu a pocet zamestnanců, kterí každý den pracují na jedné smene. Všechny smeny jsou stejne dlouhé a nepřekrývají se. Každý zamestnanec má pritom urceno predem, kdy jeho smena behem dne zacíná, a každý zamestnanec pracuje každou smenu práve na jednom z nekolika alternativních úkolu. Pro každý úkol máme urceno: & jakou má preferenci, £ maximální pocet hodin, který na nem může každý zamestnanec za celou dobu pracovat, ii> maximální pocet zamestnanců, kterí můžou na úkolu pracovat zároven. Prirad'te úkol každé smene zamestnance tak, aby byly minimalizován soucet preferencí realizovaných hodin úkolu za celou dobu. Hana Rudová, Omezující podmínky, 4. prosince 2018 259 Opakování Smeny: data & Počet dnů 5 Délka dne: 24 Délka smeny: 8 -í* Počet zaměstnanců: 9 C- Počáteční čas směny pro jednotlivé zaměstnance: 6, 6,14,14, 6, 14,6, 14,6 úkol 12 3 4 preference max. počet hodin max. počet zamestnanču 12 3 4 8 16 8 16 12 12 Hana Růdová, Omezůjíčí podmínky, 4. prosinče 2018 26G Opakování Smeny: vstupní promenné int pocetZamestnancu = int pocetDnu = int pocetUkolu = int trvani = range Zamestnanci = L.pocetZamestnancu; range Dny = L.pocetDnu; range Ukoly = L.pocetUkolu; Hana Rudová, Omezující podmínky, 4. prosince 2G18 261 Opakování Směny: vstupní proměnné int pocetZamestnancu = int pocetDnu = int pocetUkolu = int trvani = range Zamestnanci = L.pocetZamestnancu; range Dny = L.pocetDnu; range Ukoly = L.pocetUkolu; tuple Ukol { key int id; int pocet; int hodin; int preference; } tuple Zamestnanec { key int id; int od; } Hana Rudová, Omezující podmínky, 4. prosince 2018 261 Opakování Smeny: vstupní proměnné int pocetZamestnancu = int pocetDnu = int pocetUkolu = int trvani = range Zamestnanci = L.pocetZamestnancu; range Dny = L.pocetDnu; range Ukoly = L.pocetUkolu; tuple Ukol { key int id; int pocet; int hodin; int preference; } tuple Zamestnanec { key int id; int od; } Ukol ukoly[Ukoly] = Zamestnanec zamestnanci[Zamestnanci] = Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 261 Opakování Smeny: model Doménové promenné Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 262 Opakování Smeny: model Doménové proměnné dvar interval casy[z in Zamestnanci][d in Dny] in zamestnanci[z].od .. (zamestnanci[z].od+trvani) size trvani; Hana Rudová, Omezující podmínky, 4. prosince 2018 262 Opakování Směny: moděl Doménové proměnné dvar interval casy[z in Zamestnanci][d in Dny] in zamestnanci[z].od .. (zamestnanci[z].od+trvani) size trvani; dvar interval prirazeni[z in Zamestnanci][d in Dny][u in Ukoly] optional; Hana Rudová, Omezující podmínky, 4. prosince 2018 262 Opakování Směny: model Doménové promenné dvař inteřval casy[z in Zamestnanci][d in Dny] in zamestnanci[z].od .. (zamestnanci[z].od+třvani) size třvani; dvař inteřval přiřazeni[z in Zamestnanci][d in Dny][u in Ukoly] optional; Každou smenu pracuje zamestnanec na jednom z úkolu Hana Rudová, Omezující podmínky, 4. prosince 2018 262 Opakování Smeny: model Doménové promenné dvar interval casy[z in Zamestnanci][d in Dny] in zamestnanci[z].od .. (zamestnanci[z].od+trvani) size trvani; dvar interval prirazeni[z in Zamestnanci][d in Dny][u in Ukoly] optional; Každou smenu pracuje zamestnanec na jednom z úkolů forall (z in Zamestnanci, d in Dny) alternative(casy[z][d], all (u in Ukoly) prirazeni[z][d][u]); Hana Rudová, Omezující podmínky, 4. prosince 2G18 262 Opakování Smeny: model Doménové promenné dvar interval casy[z in Zamestnanci][d in Dny] in zamestnanci[z].od .. (zamestnanci[z].od+trvani) size trvani; dvar interval prirazeni[z in Zamestnanci][d in Dny][u in Ukoly] optional; Každou smenu pracuje zamestnanec na jednom z úkolu forall (z in Zamestnanci, d in Dny) alternative(casy[z][d], all (u in Ukoly) prirazeni[z][d][u]); Minimalizace souctu preferencí realizovaných úkolu Hana Rudová, Omezující podmínky, 4. prosince 2018 262 Opakování Směny: moděl Doménové promenne dvar interval casy[z in Zamestnanci][d in Dny] in zamestnanci[z].od .. (zamestnanci[z].od+trvani) size trvani; dvar interval prirazeni[z in Zamestnanci][d in Dny][u in Ukoly] optional; Každou smenu pracuje zamestnanec na jednom z úkolů forall (z in Zamestnanci, d in Dny) alternative(casy[z][d], all (u in Ukoly) prirazeni[z][d][u]); Minimalizace souctu preferencí realizovaných úkolu minimize sum (z in Zamestnanci, d in Dny, u in Ukoly) presenceOf(prirazeni[z][d][u])*ukoly[u].preference; Hana Rudová, Omezující podmínky, 4. prosince 2018 262 Opakování Směny: moděl (dokončění) Každý zamestnaneč pracuje na jednom úkolu Hana Rudová, Omezujíčí podmínky, 4. prosinče 2018 263 Opakování Smeny: model (dokončení) Každý zamestnaneč pračůje na jednom úkolů cumulFunction pocetUkol[u in Ukoly][d in Dny] = sum (z in Zamestnanci) pulse(prirazeni[z][d][u],1); a počet zpračovávání každého úkolů zároven je omezen Hana Růdová, Omezůjíčí podmínky, 4. prosinče 2018 263 Opakování Směny: model (dokončení) Každý zamestnanec pracuje na jednom úkolu cumulFunction pocetUkol[u in Ukoly][d in Dny] = sum (z in Zamestnanci) pulse(prirazeni[z][d][u],1); a pocet zpracovávání každého úkolu zároven je omezen forall (u in Ukoly, d in Dny) pocetUkol[u][d] <= ukoly[u].pocet; Hana Rudová, Omezující podmínky, 4. prosince 2018 263 Opakování Směny: model (dokončení) Každý zamestnanec pracuje na jednom úkolu cumulFunction pocetUkol[u in Ukoly][d in Dny] = sum (z in Zamestnanci) pulse(přiřazeni[z][d][u],1); a pocet zpracovávání každého úkolu zároven je omezen fořall (u in Ukoly, d in Dny) pocetUkol[u][d] <= ukoly[u].pocet; Každý úkol zpracovává zamestnanec po dobu jeho trvání cumulFunction hodinUkol[u in Ukoly][z in Zamestnanci] = sum (d in Dny) pulse(přiřazeni[z][d][u],třvani); Hana Rudová, Omezující podmínky, 4. prosince 2018 263 Opakování Smeny: model (dokončení) Každý zamestnanec pracuje na jednom úkolu cumulFunction pocetUkol[u in Ukoly][d in Dny] = sum (z in Zamestnanci) pulse(prirazeni[z][d][u],1); a pocet zpracovávání každého úkolu zároven je omezen forall (u in Ukoly, d in Dny) pocetUkol[u][d] <= ukoly[u].pocet; Každý úkol zpracovává zamestnanec po dobu jeho trvání cumulFunction hodinUkol[u in Ukoly][z in Zamestnanci] = sum (d in Dny) pulse(prirazeni[z][d][u],trvani); a pocet hodin je pro každý úkol zamestnance omezen Hana Rudová, Omezující podmínky, 4. prosince 2018 263 Opakování Smeny: model (dokonCení) Každý zamestnanec pracůje na jednom úkolů cumulFunction pocetUkol[u in Ukoly][d in Dny] = sum (z in Zamestnanci) pulse(prirazeni[z][d][u],1); a pocet zpracovávání každého úkolů zároven je omezen forall (u in Ukoly, d in Dny) pocetUkol[u][d] <= ukoly[u].pocet; Každý úkol zpracovává zamestnanec po dobů jeho trvání cumulFunction hodinUkol[u in Ukoly][z in Zamestnanci] = sum (d in Dny) pulse(prirazeni[z][d][u],trvani); a pocet hodin je pro každý úkol zamestnance omezen forall (z in Zamestnanci, u in Ukoly) hodinUkol[u][z] <= ukoly[u].hodin; Hana Růdová, Omezůjící podmínky, 4. prosince 2018 263 Opakování Zdroje, ze kterých průsvitky cerpají V prúsvitkách jsou použity obrázky a texty z uvedených zdrojú: Barták R., MFF UK, Praha. Prusvitky k prednášce Programování s omezujícími podmínkami http://kti.ms.mff.cuni.cz/~bartak/podminky/prednaska.html ü> Apt K., CWI, Holandsko. Prusvitky ke knize Principles of Constraint Programming http://homepages.cwi.nl/~apt/books.html Dechter R., University of California, USA. Prúsvitky ke knize Constraint processing http://www.ics.uci.edu/~dechter/books/materials.html JS> Laborie P., Introduction to CP Optimizer for Scheduling. Tutoriál prezentovaný na 27th International Conference on Automated Planning and Scheduling, 2017. http://icaps17.icaps-conference.org/tutorials/#tut3 Hana Rudová, Omezující podmínky, 4. prosince 2018 264 Zdroje