Home Termíny Cvičení Projekty Rezervace termínu |
Osnova
Programování s omezujícími podmínkami (clp)
- Základy CLP
- Přednášky str. 184-186,194-200
- Vyzkoušejte příklady na stránkách: 186,197,199
- Aritmetické podmínky
Najděte m-místné číslo N (N1...Nm), kde 0<m<10 a 0<N<10, splňující následující podmínky:
- číslice Ni jsou navzájem různé
- k-prvkový prefix čísla N je dělitelný číslem k (0<k≤m), k|N1...Nk
př. N=123, 1|1, 2|12, 3|123
Řešení:
:-use_module(library(clpfd)). /* zavedení modulu pro řešení omezení v konečné doméně */ pn(S,N):- N>0,N<10, list(S,N), domain(S,1,9), /* definování domén proměnných */ all_distinct(S), /* omezení */ p(S,N), /* modelování problému */ labeling([],S). /* spuštění solveru - hledání hodnot proměnných */ list([],0):-!. list([_|T],N):-N1 is N-1, list(T,N1).Doplňte predikát p(S,N).
- Plánování (predikát cumulative/4)
Napište program s využitím omezujících podmínek, který najde řešení následujícího problému:
V jistém muzeu pracuje 5 českých průvodců, 2 z nich umí německy a zbylí 3 umí anglicky. Prohlídky probíhají od 10 hodin, poslední začína v 15 hodin. Dlouhá prohlídka trvá 2 hodiny, krátká hodinu. Jeden průvodce může provádět skupinu nanejvýš 10 lidí, všichni mohou provádět najednou.Na jeden den přisly tyto objednávky:
- Skupina 20 japonských turistů požaduje anglického průvodce a dlouhou prohlídku.
- Skupina 5 holanských turistů požaduje německého průvodce a dlouhou prohlídku .
- Skupina 10 slovenských turistů a krátkou prohlídku.
- Třída 30 českých žáků chce dlouhou prohlídku.
- Zájezd 50 českých turistů požaduje krátkou prohlídku.
- Skupina 20 amerických turistů požaduje krátkou prohlídku.
- Skupina 20 německých turistů chce dlouhou prohlídku.
Na kterou hodinu objednat jednotlivé skupiny tak, aby byly zachovány podmínky provádění i požadavky skupin?
Využijte omezení cumulative/4 popsané v kap. 10.34.10.3 v manuálu http://www.fi.muni.cz/~hanka/sicstus/doc/pdf/sicstus.pdf.
^