HALLOWEEN = CHRISTMAS

Projekt na SZZS (Semanticke zaklady znalostnych systemov)

Celý projekt sa dá stiahnúť tu
Druhy projekt je tu
Vylepšená stránka predmetu

Predikáty:

zastavka(Z)
autobus(A)
listok(L)
zastavi(Autobus,Zastavka,Cas)
casPeso(Zastavka1, Zastavka2, Cas)
predajnaListkov(Z)
cenaListka(L,C)
casListka(L,T)

Integritne obmedzenia:

<-zastavi(A,Z1,T1),zastavi(A,Z2,T2),T1!=T2
<-casPeso(Z,Z,T),T>0

Pracovné predikáty (ktore sa menia akciami):

vAutobuse(A)
naZastavke(Z)
vCase(T)
mamPenazi(P)
mamListok(L)
cviknuty(L,T)

Integritne obmedzenia:

<-vAutobuse(A1),vAutobuse(A2),A1!=A2
<-naZastavke(Z1),naZastavke(Z2),Z1!=Z2
<-vAutobuse(A),naZastavke(Z)
<-vCase(T1),vCase(T2),T1!=T2
<-mamPenazi(P1),mamPenazi(P2),P1!=P2
<-mamPenazi(P),P<0

Počiatočný stav: (nepopisujem tu cely svet, iba pracovne predikaty)

naZastavke(Z0)
vCase(T0)
mamPenazi(P0)

Cieľový stav:

naZastavke(ZF)

Plánovacie operátory:

Name(a) = Nastup
Pre(a) = naZastavke(Z), vCase(T), zastavi(A,Z,T), zastavka(Z), autobus(A)
Add(a) = vAutobuse(A)
Del(a) = naZastavke(Z)

Name(b) = Vystup
Pre(b) = vAutobuse(S), vCase(T), zastavi(A,Z,T), autobus(A), zastavka(Z)
Add(b) = naZastavke(Z)
Del(b) = vAutobuse(A)

Name(c) = Cakaj
Pre(c) = vCase(T)
Add(c) = vCase(T+1)
Del(c) = vCase(T)

Name(d) = ChodPeso
Pre(d) = vCase(T), naZastavke(Z1), casPeso(Z1,Z2,dT)
Add(d) = naZastavke(Z2), vCase(T+dT)
Del(d) = naZastavke(Z1), vCase(T)

Name(e) = KupListok
Pre(e) = naZastavke(Z), vCase(T), predajnaListkov(Z), mamPenazi(P), listok(L), cenaListka(L,C), P>=C
Add(e) = mamPenazi(P-C), mamListok(L), 
Del(e) = mamPenazi(P)

Name(f) = CvikniListok
Pre(f) = vAutobuse(A), vCase(T), mamListok(L), not cviknuty(L,_) 
Add(f) = cviknuty(L,T)


Name(f) = VyhodListok
Pre(f) = mamListok(L)
Del(f) = mamListok(L)

 

Prekvapenia:

Pokazenie autobusu, v ktorom sa veziem:
moze nastat v stavoch, ked plati vAutobuse(A), vCase(T):
Prave sa ten autobus pokazil, da sa evakuovat na najblizsiu zastavku Z v case dT
Must_del = {vAutobuse(A), vCase(T)}+{zastavi(A,Z,T2) | T2>T}
Add = vCase(T+dT), naZastavke(Z)

Zapcha moze nastat v lubovolnom stave:
Je zapcha na dialnici medzi zastavkami Z1, Z2, medzi T1 a T2, zdrzanie dT
Must_del = {zastavi(A,Z,T5) | zastavi(A, Z1,T3), zastavi(A,Z2,T4), T4>T1, T3<T2, T3<T4<T5}
Add = {zastavi(A,Z,T5+dT) | zastavi(A, Z1,T3), zastavi(A,Z2,T4), T4>T1, T3<T2, T3<T4<T5}

Revizor moze prist v stavoch, ked plati: vAutobuse(A) a ak mam platny listok, tak ma to nezaujima. Preto nazvem prekavapenie pokutou.
Pokuta moze nastat, ak
vAutobuse(A), vCase(T), not mamListok(_)
vAutobuse(A), vCase(T), mamListok(L), not cviknuty(L,_)
vAutobuse(A), vCase(T), mamListok(L), cviknuty(L,T1), casListka(L,T2), T<T1
vAutobuse(A), vCase(T), mamListok(L), cviknuty(L,T1), casListka(L,T2), T>T1+T2
Must_del = mamPenazi(P)
Add = mamPenazi(P-Pokuta)

Súbežné akcie a nepriame efekty akcií

Ak si plánujú cestu viacerí, môže nastať stretnutie. A to môže spôsobiť nepriame efekty. Napríklad keď bude veľa agentov nastupovať alebo vystupovať, spôsobia zdržanie. Keď bude veľa agentov chcieť nastúpiť, nemusí sa to podariť všetkým, lebo autobus má limitovaný počet cestujúcich. Takže nepriamy efekt akcie Nastup bude akcia Vystup. 

Preferencie

P1<P2 -> mamPenazi(P1)<=mamPenazi(P2)
nemusimPlatitPokutuVAutobuse <- mamListok(L), cviknuty(L,T1), vCase(T), vAutobuse(A), casListka(L,T2), T>T1, T<=T1+T2
nemusimPlatitPokutuVAutobuse > not nemusimPlatitPokutuVautobuse
Da sa toto vyjadrit podla tej definicie? Pridavam tento problem do okienka pre problemy