CLP(F D) program. Základní struktura CLP programu solve( Variables ) :- 1. definice proměnných a jejich domén declare_variables( Variables),

Podobné dokumenty
Logické programování s omezujícími podmínkami. Constraint Logic Programming: CLP

Optimalizace & soft omezení: algoritmy

Umělá inteligence I. Roman Barták, KTIML.

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

PA163 Programování s omezujícími podmínkami

IB013 Logické programování I Hana Rudová. jaro 2011

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

ILOG (aisa:/software/ilog/solver51/doc/index.html)

Binární vyhledávací stromy pokročilé partie

Úvod do teorie grafů

1. července 2010

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

3. ANTAGONISTICKÉ HRY

SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

Numerické metody a programování. Lekce 8

Dynamické rozvrhování

ANTAGONISTICKE HRY 172

Automatizované řešení úloh s omezeními

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Optimizing Limousine Service with AI. David Marek

Programování. s omezujícími podmínkami. Roman Barták. roman.bartak@mff.cuni.cz

Matematika pro informatiky

1 Úvod do celočíselné lineární optimalizace

Obecná úloha lineárního programování. Úloha LP a konvexní množiny Grafická metoda. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

TGH02 - teorie grafů, základní pojmy

Programování. s omezujícími podmínkami. Roman Barták. rová hranová konzistence

Plánováníá a rozvrhování

Kombinatorická minimalizace

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Numerické metody optimalizace - úvod

4EK311 Operační výzkum. 5. Teorie grafů

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

Teorie her a ekonomické rozhodování. 2. Maticové hry

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

4EK213 LINEÁRNÍ MODELY

IB112 Základy matematiky

MĚŘENÍ STATISTICKÝCH ZÁVISLOSTÍ

4EK311 Operační výzkum. 1. Úvod do operačního výzkumu

analytické geometrie v prostoru s počátkem 18. stol.

Dynamické programování

Třídy složitosti P a NP, NP-úplnost

Parametrické programování

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Přiřazovací problém. Přednáška č. 7

Dijkstrův algoritmus

Celočíselné lineární programování(ilp)

4EK213 Lineární modely. 12. Dopravní problém výchozí řešení

Schéma identifikační procedury

12. Globální metody MI-PAA

Metody síťové analýzy

Optimalizace úvěrových nabídek. EmbedIT Tomáš Hanžl

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Rozhodovací procedury a verifikace Pavel Surynek, KTIML

3. Podmíněná pravděpodobnost a Bayesův vzorec

Vzdálenost uzlů v neorientovaném grafu

NPRG030 Programování I, 2018/19 1 / :03:07

f(x) = arccotg x 2 x lim f(x). Určete všechny asymptoty grafu x 2 2 =

7. přednáška Systémová analýza a modelování. Přiřazovací problém

Využití principů, ale vlastní naprogramování řešících

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

OPTIMALIZACE A MULTIKRITERIÁLNÍ HODNOCENÍ FUNKČNÍ ZPŮSOBILOSTI POZEMNÍCH STAVEB D24FZS

Operační výzkum. Teorie her. Hra v normálním tvaru. Optimální strategie. Maticové hry.

5. Lokální, vázané a globální extrémy

Učební texty k státní bakalářské zkoušce Matematika Skalární součin. študenti MFF 15. augusta 2008

Logické programování I

Stromy, haldy, prioritní fronty

12. Lineární programování

Lineární programování

Popis zobrazení pomocí fuzzy logiky

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

FRAMEWORK PRO ŘEŠENÍ VÝPOČETNÍCH ÚLOH S OMEZUJÍCÍMI PODMÍNKAMI

Plánování projektu. 3. dubna Úvod. 2 Reprezentace projektu. 3 Neomezené zdroje. 4 Variabilní doba trvání. 5 Přidání pracovní síly

Příklady ke cvičením. Modelování produkčních a logistických systémů

Binární soubory (datové, typované)

5 Orientované grafy, Toky v sítích

Numerická matematika. Zadání 25. Řešení diferenciální rovnice Rungovou Kuttovou metodou

Vraťme se k základům: DFS = Depth First Search

DEFINICE,VĚTYADŮKAZYKÚSTNÍZKOUŠCEZMAT.ANALÝZY Ib

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

Diferenciální počet funkcí jedné reálné proměnné LOKÁLNÍ A GLOBÁLNÍ EXTRÉMY FUNKCÍ JEDNÉ REÁLNÉ PROMĚNNÉ LOKÁLNÍ EXTRÉMY

13. Lineární programování

4EK201 Matematické modelování. 2. Lineární programování

Úvod do celočíselné optimalizace

Algoritmizace prostorových úloh

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce

Booleova algebra. ZákonyBooleovy algebry Vyjádření logických funkcí

Matematické modelování 4EK201

Diskrétní matematika. DiM /01, zimní semestr 2016/2017

Transkript:

CLP(F D) program Základní struktura CLP programu solve( Variables ) :- 1. definice proměnných a jejich domén declare_variables( Variables), 2. definice omezení post_constraints( Variables ), 3. hledání řešení labeling( Variables ). (1) a (2) deklarativní část modelování problému (3) řídící část prohledávání stavového prostoru řešení procedura pro hledání řešení (enumeraci) se nazývá labeling umožní nalézt jedno, všechna nebo optimální řešení Programování s omezujícími podmínkami I, 18. prosince 2003 1 Logické programování s omezujícími podmínkami

Implementace vlastních omezení Mechanismus používaný v SICStus Prologu Vestavěný predikát fd_global(+c,+s,+v) sešle omezení C s iniciálním stavem S fd_global(my_constr(a,b),term,[min(a)]) V říká, kdy se má omezení probudit dom(x) při libovolné změně domény proměnné X min(x)/max(x) při změně minima/maxima proměnné X minmax(x) při změně minima nebo maxima proměnné X val(x) v případě, že proměnná je instanciována na konkrétní hodnotu Programování s omezujícími podmínkami I, 18. prosince 2003 2 Logické programování s omezujícími podmínkami

Implementace vlastních omezení Mechanismus používaný v SICStus Prologu Vestavěný predikát fd_global(+c,+s,+v) sešle omezení C s iniciálním stavem S fd_global(my_constr(a,b),term,[min(a)]) V říká, kdy se má omezení probudit dom(x) při libovolné změně domény proměnné X min(x)/max(x) při změně minima/maxima proměnné X minmax(x) při změně minima nebo maxima proměnné X val(x) v případě, že proměnná je instanciována na konkrétní hodnotu Uživatel definuje: clpfd:dispatch_global(+c,+s0,-s,-a) vyvoláno při propagaci omezení C se stavem S0 výsledkem je nový stav S (pomocí stavů lze předat informace z minulého volání dispatch_global, např. jaká byla doména některé proměnné v posledním volání) seznam A požadavků na řešič (např. X in NewMinX..NewMaxX, call(goal)) implementace nesmí obsahovat rekurzivní volání řešice, tj. omezení (k tomu je určeno A) Programování s omezujícími podmínkami I, 18. prosince 2003 2 Logické programování s omezujícími podmínkami

Příklad: dispatch_global less_then(a,b) :- fd_global(a2b(a,b),no_state,[min(a)]), fd_global(b2a(a,b),no_state,[max(b)]). Implementace podmínky A<B pomocí propagace mezí dispatch_global(a2b(a,b),s,s,actions) :- A #< B => fd_min(a,mina), fd_max(a,maxa), fd_min(b,minb) ( MaxA<MinB -> Actions = [exit] ; LowerBoundB is MinA+1, min(b) = min(a)+1 Actions = [B in LowerBoundB..sup] ). dispatch_global(b2a(a,b),s,s,actions) :- fd_max(a,maxa), fd_min(b,minb), fd_max(b,maxb), ( MaxA<MinB -> Actions = [exit] ; UpperBoundA is MaxB-1, max(a) = max(b)-1 Actions = [A in inf..upperbounda] ). Programování s omezujícími podmínkami I, 18. prosince 2003 3 Logické programování s omezujícími podmínkami

Příklad: houpačka Zadání: Adam (36kg), Boris (32kg) a Cecil (15kg) se chtějí usadit na houpačku s deseti sedátky tak, aby byla houpačka vyvážená a měli mezi sebou vždy alespoň dvě sedačky. Programování s omezujícími podmínkami I, 18. prosince 2003 4 Logické programování s omezujícími podmínkami

Příklad: houpačka Zadání: Adam (36kg), Boris (32kg) a Cecil (15kg) se chtějí usadit na houpačku s deseti sedátky tak, aby byla houpačka vyvážená a měli mezi sebou vždy alespoň dvě sedačky. CSP model: A, B, C in 5..5 pozice na houpačce 36 A + 32 B + 16 C = 0 vyvážený stav A B > 2, A C > 2, B C > 2 minimální vzdálenosti Programování s omezujícími podmínkami I, 18. prosince 2003 4 Logické programování s omezujícími podmínkami

Houpačka: implementace houpacka(sol):- Sol = [A,B,C], domain(sol,-5,5), 36*A+32*B+16*C #= 0, abs(a-b)#>2,abs(a-c)#>2,abs(b-c)#>2, labeling([ff],sol). Programování s omezujícími podmínkami I, 18. prosince 2003 5 Logické programování s omezujícími podmínkami

Houpačka: implementace houpacka(sol):- Sol = [A,B,C], domain(sol,-5,5), 36*A+32*B+16*C #= 0, abs(a-b)#>2,abs(a-c)#>2,abs(b-c)#>2, labeling([ff],sol).?- houpacka(x). X = [-4,2,5]? ; X = [-4,4,1]? ; X = [-4,5,-1]? ; X = [4,-5,1]? ; X = [4,-4,-1]? ; X = [4,-2,-5]? ; no Programování s omezujícími podmínkami I, 18. prosince 2003 5 Logické programování s omezujícími podmínkami

Houpačka: implementace houpacka(sol):- Sol = [A,B,C], domain(sol,-5,5), 36*A+32*B+16*C #= 0, A #< 0, abs(a-b)#>2,abs(a-c)#>2,abs(b-c)#>2, labeling([ff],sol).?- houpacka(x). X = [-4,2,5]? ; X = [-4,4,1]? ; X = [-4,5,-1]? ; X = [4,-5,1]? ; X = [4,-4,-1]? ; X = [4,-2,-5]? ; no Programování s omezujícími podmínkami I, 18. prosince 2003 5 Logické programování s omezujícími podmínkami

Houpačka: implementace houpacka(sol):- Sol = [A,B,C], domain(sol,-5,5), 36*A+32*B+16*C #= 0, A #< 0, abs(a-b)#>2,abs(a-c)#>2,abs(b-c)#>2, labeling([ff],sol).?- houpacka(x). s A #< 0 X = [-4,2,5]? ; X = [-4,4,1]? ; X = [-4,5,-1]? ; no?- houpacka(x). X = [-4,2,5]? ; X = [-4,4,1]? ; X = [-4,5,-1]? ; X = [4,-5,1]? ; X = [4,-4,-1]? ; X = [4,-2,-5]? ; no Programování s omezujícími podmínkami I, 18. prosince 2003 5 Logické programování s omezujícími podmínkami

Houpačka: implementace houpacka(sol):- Sol = [A,B,C], domain(sol,-5,5), 36*A+32*B+16*C #= 0, A #< 0, abs(a-b)#>2,abs(a-c)#>2,abs(b-c)#>2, labeling([ff],sol).?- houpacka(x). X = [-4,2,5]? ; X = [-4,4,1]? ; X = [-4,5,-1]? ; X = [4,-5,1]? ; X = [4,-4,-1]? ; X = [4,-2,-5]? ; no?- houpacka(x). s A #< 0 X = [-4,2,5]? ; X = [-4,4,1]? ; X = [-4,5,-1]? ; no Odstranění symetrií nejen odstranění symetrických řešení zároveň odstranění částí stavového prostoru v případě, že byla prozkoumána symetrická část a nebylo nalezeno řešení př. A 5 A 5 velice důležité pro zmenšení prohledávacího prostoru Programování s omezujícími podmínkami I, 18. prosince 2003 5 Logické programování s omezujícími podmínkami

Houpačka: globální omezení Omezení pro vzdálenosti: množina podobných omezení nezávislá propagace pomocí hranové konzistence lze vylepšit použitím globálního omezení Programování s omezujícími podmínkami I, 18. prosince 2003 6 Logické programování s omezujícími podmínkami

Houpačka: globální omezení Omezení pro vzdálenosti: množina podobných omezení nezávislá propagace pomocí hranové konzistence lze vylepšit použitím globálního omezení Každý člověk na houpačce představuje "úlohu s dobou trvání 3" minimální vzdálenost mezi dvěma lidmi je 2 navzájem si do této vzdálenosti nesmí zasahovat, tj. nesmí se překrývat absolutní hodnoty nahradíme: serialized([a,b,c],[3,3,3]). serialized(starts,durations): úlohy se navzájem nesmí překrývat úlohy zadány startovními časy (1.seznam) a dobou trvání (2.seznam) Programování s omezujícími podmínkami I, 18. prosince 2003 6 Logické programování s omezujícími podmínkami

Houpačka: globální omezení Omezení pro vzdálenosti: množina podobných omezení nezávislá propagace pomocí hranové konzistence lze vylepšit použitím globálního omezení Každý člověk na houpačce představuje "úlohu s dobou trvání 3" minimální vzdálenost mezi dvěma lidmi je 2 navzájem si do této vzdálenosti nesmí zasahovat, tj. nesmí se překrývat absolutní hodnoty nahradíme: serialized([a,b,c],[3,3,3]). serialized(starts,durations): úlohy se navzájem nesmí překrývat úlohy zadány startovními časy (1.seznam) a dobou trvání (2.seznam) Domény proměnných před labeling pro abs: A in -4..0, B in -1..5, C in -5..5 při použití serialized: A in -4..0, B in -1..5, C in (-5..-3)\/(-1..5) Programování s omezujícími podmínkami I, 18. prosince 2003 6 Logické programování s omezujícími podmínkami

Příklad: přiřazovací problém Zadání: Přiřad te čtyři pracovníky na výrobu čtyř produktů tak, že každý pracovní dělá jeden produkt a každý produkt je vyráběn jedním pracovníkem. Efektivita výrovy je dána následující tabulkou a celková efektivita musí být minimálně 19. P1 P2 P3 P4 W1 7 1 3 4 W2 8 2 5 1 W3 4 3 7 2 W4 3 1 6 3 Programování s omezujícími podmínkami I, 18. prosince 2003 7 Logické programování s omezujícími podmínkami

Příklad: přiřazovací problém Zadání: Přiřad te čtyři pracovníky na výrobu čtyř produktů tak, že každý pracovní dělá jeden produkt a každý produkt je vyráběn jedním pracovníkem. Efektivita výrovy je dána následující tabulkou a celková efektivita musí být minimálně 19. P1 P2 P3 P4 W1 7 1 3 4 W2 8 2 5 1 W3 4 3 7 2 W4 3 1 6 3 CSP model: W 1, W 2, W 3, W 4 in 1..4 all_dif f er ent([w 1, W 2, W 3, W 4] T [1,W1] + T [2,W2] + T [3,W3] + T [4,W4] 19 produkt pro pracovníka různé produkty celková efektivita Programování s omezujícími podmínkami I, 18. prosince 2003 7 Logické programování s omezujícími podmínkami

Přiřazovací problém: implementace prirazovani(sol) :- Sol = [W1,W2,W3,W4], domain(sol,1,4), all_distinct(sol), element(w1,[7,1,3,4],ew1), element(w2,[8,2,5,1],ew2), element(w3,[4,3,7,2],ew3), element(w4,[3,2,6,3],ew4), EW1+EW2+EW3+EW4 #>= 19, labeling([ff],sol). Programování s omezujícími podmínkami I, 18. prosince 2003 8 Logické programování s omezujícími podmínkami

Přiřazovací problém: implementace prirazovani(sol) :- Sol = [W1,W2,W3,W4], domain(sol,1,4), all_distinct(sol), element(w1,[7,1,3,4],ew1), element(w2,[8,2,5,1],ew2), element(w3,[4,3,7,2],ew3), element(w4,[3,2,6,3],ew4), EW1+EW2+EW3+EW4 #>= 19, labeling([ff],sol).?- prirazovani(x). cena: X = [1,2,3,4]? ; 19 X = [2,1,3,4]? ; 19 X = [4,1,2,3]? ; 21 X = [4,1,3,2]? ; 21 no Programování s omezujícími podmínkami I, 18. prosince 2003 8 Logické programování s omezujícími podmínkami

Přiřazovací problém: implementace prirazovani(sol) :- Sol = [W1,W2,W3,W4], domain(sol,1,4), all_distinct(sol), element(w1,[7,1,3,4],ew1), element(w2,[8,2,5,1],ew2), element(w3,[4,3,7,2],ew3), element(w4,[3,2,6,3],ew4), EW1+EW2+EW3+EW4 #>= 19, labeling([ff],sol). Optimalizace metodou větví a mezí při hledání optimálního řešení není nutné měnit model náhrada labeling EW1+EW2+EW3+EW4 #= E, maximize(labeling([ff],sol),e).?- prirazovani(x). cena: X = [1,2,3,4]? ; 19 X = [2,1,3,4]? ; 19 X = [4,1,2,3]? ; 21 X = [4,1,3,2]? ; 21 no Programování s omezujícími podmínkami I, 18. prosince 2003 8 Logické programování s omezujícími podmínkami

Přiřazovací problém: implementace prirazovani(sol) :- Sol = [W1,W2,W3,W4], domain(sol,1,4), all_distinct(sol), element(w1,[7,1,3,4],ew1), element(w2,[8,2,5,1],ew2), element(w3,[4,3,7,2],ew3), element(w4,[3,2,6,3],ew4), EW1+EW2+EW3+EW4 #>= 19, labeling([ff],sol).?- prirazovani(x). cena: X = [1,2,3,4]? ; 19 X = [2,1,3,4]? ; 19 X = [4,1,2,3]? ; 21 X = [4,1,3,2]? ; 21 no Optimalizace metodou větví a mezí při hledání optimálního řešení není nutné měnit model náhrada labeling EW1+EW2+EW3+EW4 #= E, maximize(labeling([ff],sol),e).?- prirazovani(x). X = [4,1,2,3]? ; no Programování s omezujícími podmínkami I, 18. prosince 2003 8 Logické programování s omezujícími podmínkami

Přiřazování: duální model Role proměnných a hodnot lze často přehodit Primární a duální model se někdy spojují dohromady pro zlepšení propagace Současný model: proměnné pro pracovníky, hodnoty definují produkt Duální model: proměnné pro produkty, hodnoty určují pracovníka prirazovani(sol) :- Sol = [P1,P2,P3,P4], domain(sol,1,4), all_distinct(sol), element(p1,[7,8,4,3],ep1), element(p2,[1,2,3,1],ep2), element(p3,[3,5,7,6],ep3), element(p4,[3,1,6,3],ep4), EP1+EP2+EP3+EP4 #>= 19, labeling([ff],sol). Programování s omezujícími podmínkami I, 18. prosince 2003 9 Logické programování s omezujícími podmínkami

Přiřazování: duální model Role proměnných a hodnot lze často přehodit Primární a duální model se někdy spojují dohromady pro zlepšení propagace Současný model: proměnné pro pracovníky, hodnoty definují produkt Duální model: proměnné pro produkty, hodnoty určují pracovníka prirazovani(sol) :- Sol = [P1,P2,P3,P4], domain(sol,1,4), all_distinct(sol), element(p1,[7,8,4,3],ep1), element(p2,[1,2,3,1],ep2), element(p3,[3,5,7,6],ep3), element(p4,[3,1,6,3],ep4), EP1+EP2+EP3+EP4 #>= 19, labeling([ff],sol). Modely se zdají ekvivalentní, ale domény před labeling jsou: W1 in 1..4 P1 in 1..2 W2 in 1..4 P2 in 1..4 W3 in 1..4 P3 in 2..4 W4 in 1..4 P4 in 1..4 Počet voleb pro nalezení všech řešení: duální model 11, primární model 15 Důvody: zisk více závislý na produktu než na pracovníkovi. Programování s omezujícími podmínkami I, 18. prosince 2003 9 Logické programování s omezujícími podmínkami

Přiřazování: oba modely zároveň Bohužel: určení efektivity různých modelů obtížné obvykle: nejlepší je model, který propaguje informace nejdříve Oba modely lze kombinovat do jednoho omezení obou modelů jsou použita assignment(xs, Y s) omezení umožní propojit modely Xs, Y s seznamy doménových proměnných nebo celých čísel délky n všechna Xi, Y i 1... n a Xi = j právě tehdy, když Y j = i větší množství omezení vyšší náročnost propagací pozor na konflikt: velikost stavového prostoru vs. náročnost propagací Programování s omezujícími podmínkami I, 18. prosince 2003 10 Logické programování s omezujícími podmínkami

Přiřazování: implementace obou modelů zároveň prirazovani(workers) :- Workers = [W1,W2,W3,W4], Products = [P1,P2,P3,P4], domain(sol,1,4), all_distinct(workers), element(w1,[7,1,3,4],ew1), element(w2,[8,2,5,1],ew2), element(w3,[4,3,7,2],ew3), element(w4,[3,2,6,3],ew4), EW1+EW2+EW3+EW4 #>= 19, domain(products,1,4), all_distinct(products), element(p1,[7,8,4,3],ep1), element(p2,[1,2,3,1],ep2), element(p3,[3,5,7,6],ep3), element(p4,[3,1,6,3],ep4), EP1+EP2+EP3+EP4 #>= 19, assignment(workers,products), labeling([ff],workers). Programování s omezujícími podmínkami I, 18. prosince 2003 11 Logické programování s omezujícími podmínkami

Přiřazování: implementace obou modelů zároveň prirazovani(workers) :- Workers = [W1,W2,W3,W4], Products = [P1,P2,P3,P4], domain(sol,1,4), all_distinct(workers), element(w1,[7,1,3,4],ew1), element(w2,[8,2,5,1],ew2), element(w3,[4,3,7,2],ew3), element(w4,[3,2,6,3],ew4), EW1+EW2+EW3+EW4 #>= 19, domain(products,1,4), all_distinct(products), element(p1,[7,8,4,3],ep1), element(p2,[1,2,3,1],ep2), element(p3,[3,5,7,6],ep3), element(p4,[3,1,6,3],ep4), EP1+EP2+EP3+EP4 #>= 19, W1 in (1..2)\/{4} P1 in 1..2 W2 in 1..4 P2 in 1..4 W3 in 2..4 P3 in 2..4 W4 in 2..4 P4 in 1..4 počet voleb pro nalezení všech řešení: 9 assignment(workers,products), labeling([ff],workers). Programování s omezujícími podmínkami I, 18. prosince 2003 11 Logické programování s omezujícími podmínkami

Příklad: Golombovo pravítko Pravítko s M značkami umístěnými tak, že vzájemné vzdálenosti mezi dvojicemi jsou navzájem různé Optimální pravítko má nejkratší délku Řešení pro M = 5 : [0, 1, 4, 9, 11] Pro M 16 těžké, pro M 24 není znám exaktní algoritmus Použití v radioastronomii Programování s omezujícími podmínkami I, 18. prosince 2003 12 Logické programování s omezujícími podmínkami

Golombovo pravítko: CSP model Základní model: Proměnné X 1,..., X M s doménou 0... M M X 1 = 0 začátek pravítka X 1 < X 2 < < X M odstranění permutací Programování s omezujícími podmínkami I, 18. prosince 2003 13 Logické programování s omezujícími podmínkami

Golombovo pravítko: CSP model Základní model: Proměnné X 1,..., X M s doménou 0... M M X 1 = 0 začátek pravítka X 1 < X 2 < < X M odstranění permutací i < j : D i,j = X j X i proměnné pro rozdíly vzdáleností all_dif f er ent({d 1,2, D 1,3,..., D 1,M, D 2,3,..., D M,M }) Programování s omezujícími podmínkami I, 18. prosince 2003 13 Logické programování s omezujícími podmínkami

Golombovo pravítko: CSP model Základní model: Proměnné X 1,..., X M s doménou 0... M M X 1 = 0 začátek pravítka X 1 < X 2 < < X M odstranění permutací i < j : D i,j = X j X i proměnné pro rozdíly vzdáleností all_dif f er ent({d 1,2, D 1,3,..., D 1,M, D 2,3,..., D M,M }) Rozšíření modelu: D 1,2 < D M,M 1 odstranění symetrie (srovnej [0,1,4,9,11] a [0,2,7,10,11]) Programování s omezujícími podmínkami I, 18. prosince 2003 13 Logické programování s omezujícími podmínkami

Základní model: Golombovo pravítko: CSP model Proměnné X 1,..., X M s doménou 0... M M X 1 = 0 X 1 < X 2 < < X M i < j : D i,j = X j X i začátek pravítka odstranění permutací proměnné pro rozdíly vzdáleností all_dif f er ent({d 1,2, D 1,3,..., D 1,M, D 2,3,..., D M,M }) Rozšíření modelu: D 1,2 < D M,M 1 odstranění symetrie (srovnej [0,1,4,9,11] a [0,2,7,10,11]) Přesnější meze pro D i,j D i,j =D i,i+1 + D i+1,i+2 + + D j 1,j (D k,m v součtu jsou různá, je jich j i) Tedy: D i,j j i = (j i)(j i+1) 2 dolní mez (1 + 2 + + n = n(n+1) 2 ) Programování s omezujícími podmínkami I, 18. prosince 2003 13 Logické programování s omezujícími podmínkami

Základní model: Golombovo pravítko: CSP model Proměnné X 1,..., X M s doménou 0... M M X 1 = 0 X 1 < X 2 < < X M i < j : D i,j = X j X i začátek pravítka odstranění permutací proměnné pro rozdíly vzdáleností all_dif f er ent({d 1,2, D 1,3,..., D 1,M, D 2,3,..., D M,M }) Rozšíření modelu: D 1,2 < D M,M 1 odstranění symetrie (srovnej [0,1,4,9,11] a [0,2,7,10,11]) Přesnější meze pro D i,j D i,j =D i,i+1 + D i+1,i+2 + + D j 1,j (D k,m v součtu jsou různá, je jich j i) Tedy: D i,j j i = (j i)(j i+1) 2 dolní mez (1 + 2 + + n = n(n+1) 2 ) X M = X M X 1 = D 1,M = D 1,2 + D 2,3 + + D i 1,i +D i,j +D j,j+1 + + D M 1,M D i,j = X M (D 1,2 + D 2,3 + + D i 1,i + D j,j+1 + + D M 1,M Programování s omezujícími podmínkami I, 18. prosince 2003 13 Logické programování s omezujícími podmínkami

Základní model: Golombovo pravítko: CSP model Proměnné X 1,..., X M s doménou 0... M M X 1 = 0 X 1 < X 2 < < X M i < j : D i,j = X j X i začátek pravítka odstranění permutací proměnné pro rozdíly vzdáleností all_dif f er ent({d 1,2, D 1,3,..., D 1,M, D 2,3,..., D M,M }) Rozšíření modelu: D 1,2 < D M,M 1 odstranění symetrie (srovnej [0,1,4,9,11] a [0,2,7,10,11]) Přesnější meze pro D i,j D i,j =D i,i+1 + D i+1,i+2 + + D j 1,j (D k,m v součtu jsou různá, je jich j i) Tedy: D i,j j i = (j i)(j i+1) 2 dolní mez (1 + 2 + + n = n(n+1) 2 ) X M = X M X 1 = D 1,M = D 1,2 + D 2,3 + + D i 1,i +D i,j +D j,j+1 + + D M 1,M D i,j = X M (D 1,2 + D 2,3 + + D i 1,i + D j,j+1 + + D M 1,M Tedy: D i,j X M (M 1 j+i)(m j+i) 2 horní mez Programování s omezujícími podmínkami I, 18. prosince 2003 13 Logické programování s omezujícími podmínkami

Golombovo pravítko: výsledky Časy běhu na Mobile Pentium 4-M 1.7GHz, 768MB RAM Zákl.model Zákl.model Zákl.model Zákl.model Zákl.model - all_diff + symetrie + symetrie + symetrie + meze + meze - all_diff 7 0 1 0 0 0 8 2 2 1 0 1 9 18 17 8 2 7 10 159 149 76 15 61 11 3327 3455 1811 772 1766 - all_diff: místo all_dif f er ent je použita množina binárních nerovností Optimální pravítka pro danou velikost: 1 [0] 2 [0,1] 3 [0,1,3] 4 [0,1,4,6] 5 [0,1,4,9,11] 6 [0,1,4,10,12,17] 7 [0,1,4,10,18,23,25] 8 [0,1,4,9,15,22,32,34] 9 [0,1,5,12,25,27,35,41,44] 10 [0,1,6,10,23,26,34,41,53,55] 11 [0,1,4,13,28,33,47,54,64,70,72] 12 [0,2,6,24,29,40,43,55,68,75,76,85] Programování s omezujícími podmínkami I, 18. prosince 2003 14 Logické programování s omezujícími podmínkami

element(n,list,x) Shrnutí: globální omezení N-tý prvek v seznamu List je roven X assignment(xs,ys) Xs, Y s seznamy doménových proměnných nebo celých čísel délky n všechna Xi, Y i 1... n a Xi = j právě tehdy, když Y j = i all_distinct(list) všechny proměnné různé, úplný algoritmus udržující doménovou konzistenci all_different(list) má stejnou propagaci jako množina binárních nerovností global_cardinality(list, [Key-Count _ ]) pro Key-Count platí: Count prvků seznamu List se rovná klíči Key serialized(starts,durations) disjoint2( [Name(X, Delka, Y, Vyska) _ ] ) Programování s omezujícími podmínkami I, 18. prosince 2003 15 Logické programování s omezujícími podmínkami

Disjunktivní rozvrhování serialized(starts,durations) rozvržení úloh zadaných startovním časem (seznam Starts) a dobou trvání (seznam nezáporných Durations) tak, aby se nepřekrývaly příklad s konstantami: serialized([0,3,5],[2,1,1]) Programování s omezujícími podmínkami I, 18. prosince 2003 16 Logické programování s omezujícími podmínkami

Disjunktivní rozvrhování serialized(starts,durations) rozvržení úloh zadaných startovním časem (seznam Starts) a dobou trvání (seznam nezáporných Durations) tak, aby se nepřekrývaly příklad s konstantami: serialized([0,3,5],[2,1,1]) příklad: vytvoření rozvrhu, za předpokladu, že doba trvání hodin není stejná D in 1..2, C = 3, serialized([jan,petr,anna,ota,eva,marie], [D,D,D,C,C,C]) Programování s omezujícími podmínkami I, 18. prosince 2003 16 Logické programování s omezujícími podmínkami

Disjunktivní rozvrhování serialized(starts,durations) rozvržení úloh zadaných startovním časem (seznam Starts) a dobou trvání (seznam nezáporných Durations) tak, aby se nepřekrývaly příklad s konstantami: serialized([0,3,5],[2,1,1]) příklad: vytvoření rozvrhu, za předpokladu, že doba trvání hodin není stejná D in 1..2, C = 3, serialized([jan,petr,anna,ota,eva,marie], [D,D,D,C,C,C]) princip algoritmu: hledáme úlohu, která předchází nebo následuje množinu jiných úloh SB in 6..12, DB#=4, SC in 7..10, DC#=5, SA in 4..14, DA#=2 SA in 4..5 Programování s omezujícími podmínkami I, 18. prosince 2003 16 Logické programování s omezujícími podmínkami

Nepřekrývání obdélníků disjoint2(rectangles) disjoint1(lines) disjoint2( [Name(X, Delka, Y, Vyska) _ ] ) umístění obdélníků ve dvourozměrném prostoru doménové proměnné X,Y,Delka,Vyska mohou být z oboru celých čísel příklad s konstantami: disjoint2([rect(0,3,0,1),rect(1,3,1,2),rect(4,2,2,-2)]) 3 2 2 1 1 3 1 2 3 4 5 6 Programování s omezujícími podmínkami I, 18. prosince 2003 17 Logické programování s omezujícími podmínkami

Nepřekrývání obdélníků disjoint2(rectangles) disjoint1(lines) disjoint2( [Name(X, Delka, Y, Vyska) _ ] ) umístění obdélníků ve dvourozměrném prostoru doménové proměnné X,Y,Delka,Vyska mohou být z oboru celých čísel příklad s konstantami: disjoint2([rect(0,3,0,1),rect(1,3,1,2),rect(4,2,2,-2)]) 3 2 2 1 1 3 1 2 3 4 5 6 příklad: vytvoření rozvrhu za předpokladu, že učitelé učí v různých místnostech D in 1..2, C = 3, disjoint2(class(jan,d,m1,1), class(petr,d,m2,1), class(petr,d,m3,1),...]) Programování s omezujícími podmínkami I, 18. prosince 2003 17 Logické programování s omezujícími podmínkami

Shrnutí Odstranění symetrií Použití globálních omezení Definice duálního problému Použití redundantních omezení R. Barták, Practical Constraints: A Tutorial on Modelling with Constraints. V J. Figwer (ed.) Proceedings of the 5th Workshop on Constraint Programming for Decision and Control (CPDC 2003). Gliwice, 2003. http://kti.ms.mff.cuni.cz/~bartak/downloads/cpdc2003.pdf příklady i vysvětlení převzato z tohoto článku Programování s omezujícími podmínkami I, 18. prosince 2003 18 Logické programování s omezujícími podmínkami

Ukončení předmětu 3 řádné termíny: aktualizace viz IS MU Pá 9. 1. 2004 09:00 C511 (řádný), max 8 Pá 16. 1. 2004 09:00 C511 (řádný, opravný), max. 8 Út 27. 1. 2004 09:00 C511 (řádný, opravný), max. 8 přihlášení a odhlášení možné 1 den před zkouškou další opravné termíny vypsány dle zájmu a potřeby kratší písemná práce pro každý řádný termín (maximum: 1 hodina) společná příprava pro všechny cca 5 otázek: přehledové, srovnávací, algoritmy, pojmy, příklady (model) ústní zkouška ve stejný den jako písemná práce (cca 30 minut) příprava na individuální otázky během zkoušky diskuse nad písemnou prací opravný termín pouze jako ústní zkouška (není už písemná práce) Programování s omezujícími podmínkami I, 18. prosince 2003 19 Logické programování s omezujícími podmínkami