Si consideri un dominio in cui ci sono: vari carrelli, vari robot e
vari oggetti. Gli oggetti sono collocati in stanze. I robot possono
prendere gli oggetti e posizionarli su un carrello. I robot si
possono spostare e spingere un carrello da una stanza all'altra.
Le azioni possibili sono:
- puton(R,X,C,P):
Il robot R prende l'oggetto X che sta a terra nella stanza P
e lo dispone sul carrello C;
- takeoff(R,X,C,P):
Il robot R prende l'oggetto X che sta sul carrello C e lo mette a terra nella
stanza P;
- go(R,X,Y):
Il robot X va dalla stanza X alla stanza Y;
- move(R,C,X,Y):
Il robot R spinge il carrello C dalla stanza X alla stanza Y.
Si utilizzino due fluenti:
- at(X,Y,S): il robot/carrello/oggetto X si trova nella stanza Y;
- on(X,C,S): l'oggetto X si trova sul carrello C.
Si rappresenti il dominio in Golog e si scrivano le seguenti procedure:
- goto(R,P): il robot R va nel posto P (non fa nulla se già si
trova in P);
- sposta(R,C,P): il robot R porta il carrello C nel posto P
(se C già sta in P si sposta solo il robot per andare nello stesso posto);
- carica(X,C): qualche robot carica l'oggetto X sul carrello C
(non succede nulla se X già sta su C);
- scarica(R,C): il robot R scarica il carrello C nel posto
in cui si trova C;
- spostatutti(From,To): tutti gli oggetti che si trovano
nella stanza
From sono spostati nella stanza To.
- Si aggiunga un predicato statico colore(X,Col) per
rappresentare il fatto che l'oggetto X ha colore Col, e si definiscano
le procedure seguenti:
- caricacol(Col,Y,P): qualche robot carica sul carrello Y
tutti gli oggetti di colore Col che stanno nella stanza P;
- spostacolore(Col,From,To): qualche robot sposta nella
stanza To tutti gli
oggetti di colore Col che stanno nella stanza From.
Soluzione proposta
marta
2012-04-17