Database Reference
In-Depth Information
oder der Tisch. Die betrachtete Zeitskala soll von
0
bis zu einer Obergrenze gehen,
die wir mit der Konstanten
lasttime
bezeichnen. Das Planungsprogramm arbeitet
(prinzipiell) nach dem “Generiere-und-Teste”-Prinzip, indem zunachst potentielle
Losungen generiert und diese dann auf Zulassigkeit uberpruft werden. Es muss
sicher gestellt sein, dass im Zielzustand die Zielanforderungen erfullt sind. Daher
filtern die folgenden Regeln alle Zustande heraus, in denen ein Block zum Zeitpunkt
lasttime
nicht an dem gewunschten Ort platziert ist:
:- not on(3,2,lasttime).
% Ziel:
:- not on(2,1,lasttime).
%
:- not on(1,table,lasttime).
%
3
6
:- not on(6,5,lasttime).
%
2
5
:- not on(5,4,lasttime).
%
1
4
:- not on(4,table,lasttime).
%
--------------
Gilt beispielsweise
on(3,2,lasttime)
∈
S fur eine Literalmenge S,soerfullt S
nicht das Constraint
:- not on(3,2,lasttime).
Ein solches S kann daher nicht
Antwortmenge fur ein Programm sein, dass die obigen Regeln enthalt.
Die Abbildungen 11.17 - 11.19 zeigen ein komplettes Programm zur Planung in
der erweiterten Blockwelt, wobei Ausgangs- und Zielzustand wie gerade angegeben
sind. Das Programm ist in der Eingabesprache des
SMODELS
-Systems geschrieben.
In Abbildung 11.17 benutzt das Programm die drei einstelligen Pradikate
time
,
block
und
location
, mit denen Wertebereiche festgelegt werden.
Wie schon erwahnt, legt die Konstante
lasttime
eine Obergrenze fur die Lange
der Plane fest, die betrachtet werden sollen. Eine
location
ist ein Block oder der
time(0..lasttime).
location(B) :- block(B).
location(table).
% GENERATE
{
move(B,L,T) : block(B) : location(L)
}
grippers :- time(T),
T < lasttime.
% DEFINE
% Effekt, wenn ein Block bewegt wird
on(B,L,T+1) :- move(B,L,T),
block(B), location(L), time(T), T < lasttime.
% was sich nicht verandert
on(B,L,T+1) :- on(B,L,T), not -on(B,L,T+1),
block(B), location(L), time(T), T < lasttime.
% Eindeutigkeit des Ortes
-on(B,L1,T) :- on(B,L,T), L
=
L1,
block(B), location(L), location(L1), time(T).
Abbildung 11.17
Planen mit
SMODELS
, Teil 1 (nach [140])