Database Reference
In-Depth Information
Tisch. block und lasttime werden ebenso wie die Konstante grippers ,diedie
Anzahl der Greifarme festlegt, im Programmteil in Abbildung 11.19 definiert. Dabei
ist block(1..6). als eine Abkurzung fur die sechs Regeln block(1). , block(2). ,
block(3). , block(4). , block(5). , block(6). zu verstehen; entsprechendes gilt
fur die Regel time(0..lasttime). in Abbildung 11.17.
Die Regel unter GENERATE in Abbildung 11.17 verwendet die in Abschnitt 11.8.1
skizzierten SMODELS -Sprachelemente und spezifiziert Antwortmengen der Form
{ move ( B 1 , L 1 , T ),..., move ( B n , L n , T )
}
wobei die Anzahl der enthaltenen move -Atome durch die Konstante grippers nach
oben beschrankt ist. Dabei muss B i ein Block, L i eine Ortsangabe und T eine Zahl
kleiner als lasttime sein. Diese Regel spezifiziert eine mogliche Losung als eine be-
liebige Menge von move -Aktionen, die vor lasttime ausgefuhrt werden, so dass fur
jeden Zeitpunkt T die Anzahl der move -Aktionen zu diesem Zeitpunkt die Anzahl der
vorhandenen Greifarme nicht ubersteigt. Eine Literalmenge S,diedie GENERATE -
Regel erfullt, konnte z.B. die Literale move(3,5,0) und move(1,table,0) ent-
halten. Enthielte S jedoch noch zusatzlich das Literal move(5,table,0) ,ware das
Kardinalitatskriterium wegen grippers = 2 verletzt.
Wahrend die bereits vorgestellten sechs DEFINE -Regeln in Abbildung 11.19 die
initialen Positionen aller Blocke zum Zeitpunkt 0 wiedergeben, beschreiben die drei
Regeln unterhalb von DEFINE in Abbildung 11.17 die Zustande, die der Ausfuhrung
eines potentiellen Plans entsprechen.
Die ersten beiden DEFINE -Regeln in Abbildung 11.17 spezifizieren die positiven
on -Literale, die die Positionen aller Blocke zum Zeitpunkt T+1 in Relation zu ihrer
Position zum Zeitpunkt T beschreiben. Enthalt beispielsweise eine Literalmenge S
die Literale move(3,5,0) , block(3) , location(5) und time(0) ,somussS auch
% TEST
% zwei verschiedene Blocke konnen nicht auf demselben Block sein
:- 2 { on(B1,B,T) : block(B1) } ,
block(B), time(T).
% ein Block, der nicht frei ist, kann nicht bewegt werden
:- move(B,L,T), on(B1,B,T),
block(B), block(B1), location(L), time(T), T < lasttime.
% ein Block kann nicht auf einen Block gestellt werden, der
% zur gleichen Zeit bewegt wird
:- move(B,B1,T), move(B1,L,T),
block(B), block(B1), location(L), time(T), T < lasttime.
% DISPLAY
hide.
show move(B,L,T).
Abbildung 11.18 Planen mit SMODELS , Teil 2 (nach [140])
Search WWH ::




Custom Search