Langkah:
1. Mendefinisikan Operator apa saja.
2. Spesifikasi/Deskripsi Operator (PRECONDITION,
ADD dan DELETE).
3. Pendefinisikan Initial dan Goal state.
3. Membuat Stack
4. Implementasi Operator dan menemukan goal
The Blocks World
• Operators:
– UNSTACK(A,B) – Pick up block A from its current
position on block B. The arm must be empty and
block A must have no blocks on top of it.
– STACK(A,B) – Place block A on block B. The arm
must already be holding A and the surface of B
must be clear.
– x : ONTABLE(x) y : ON(x,y)
ON(A,B)
ONTABLE(B)
CLEAR(A)
Spesifikasi Operator
• PRECONDITION: daftar predicate yang harus
benar sebelum suatu operator dipilih.
• ADD: daftar predicate baru (bernilai true)
setelah operator diimplementasikan.
• DELETE: daftar operator lama yang ketika
operator yang diimplementasikan salah.
Spesifikasi Operator Blocks World
STACK(A, B): PICKUP(A):
P: CLEAR(B) HOLDING(A) P: CLEAR(A) ONTABLE(A)
ARMEMPTY
D: CLEAR(B) HOLDING(A)
D: ONTABLE(A) ARMEMPTY
A: ARMEMPTY ON(A, B)
A: HOLDING(A)
UNSTACK(A, B):
PUTDOWN(A):
P: ON(A, B) CLEAR(A)
ARMEMPTY P: HOLDING(A)
D: ON(A, B) ARMEMPTY D: HOLDING(A)
A: HOLDING(A) CLEAR(B) A: ONTABLE(A) ARMEMPTY
Pendefinisian State
Stack Database
Goals
Current situation
Operators to
satisfy
+ Specification of
Operators/Actions
the Goals
Implementasi GSP
Kondisi yang mungkin terjadi:
a). Kondisi 1: jika slot berisi kondisi yang sudah
memenuhi current state, tetapi slot ini
terletak diatas operator maka, slot diambil
dari stack dan pemeriksaan dilanjutkan pada
slot berikutnya.
b). Kondisi 2: Operator yang memenuhi suatu
kondisi, dimasukkan ke dalam stack.
c). Kondisi 3: jika slot yang diperiksa adalah slot
paling dasar, maka uji kesamaan antara
current state dan goal state. Jika sama berarti
solusi tercapai.
Goal Stack Planning
1) Initial goal stack:
ON(C,A)
ON(B,D)
ON(C,A)Λ ON(B,D)Λ OTAD
ON(C,A)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
CLEAR(A)
HOLDING(C)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
31
Initial State Goal
Goal Stack Planning cont.
5) Achieve CLEAR(A) with UNSTACK(B,A):
ON(B,A)
CLEAR(B)
ARMEMPTY
ON(B,A) CLEAR(B) ARMEMPTY
UNSTACK(B,A)
CLEAR(A)
HOLDING(C)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
ON(B,A)
CLEAR(B)
ARMEMPTY
ON(B,A) CLEAR(B) ARMEMPTY
UNSTACK(B,A)
HOLDING(C)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
ON(C,x)
CLEAR(C)
ARMEMPTY
ON(C,x) CLEAR(C) ARMEMPTY
UNSTACK(C,x)
HOLDING(C)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
Initial State Goal
34
Goal Stack Planning cont.
8) Achieve ON(C,x) by STACK(C,x):
CLEAR(x)
HOLDING(C)
CLEAR(x) HOLDING(C)
ON(C,x)
STACK(C,x)
CLEAR(C)
ARMEMPTY
ON(C,x) CLEAR(C) ARMEMPTY
UNSTACK(C,x)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
Initial State Goal
35
Goal Stack Planning cont.
9) Terminate path because HOLDING(C) is duplicated.
CLEAR(x)
HOLDING(C)
CLEAR(x) HOLDING(C)
STACK(C,x)
CLEAR(C)
ARMEMPTY
ON(C,x) CLEAR(C) ARMEMPTY
UNSTACK(C,x)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
Initial State Goal 36
Goal Stack Planning cont.
10) Achieve HOLDING(C) with PICKUP, not UNSTACK:
ONTABLE(C)
CLEAR(C)
ARMEMPTY
ONTABLE(C) CLEAR(C) ARMEMPTY
PICKUP(C)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
37
Initial State Goal
Goal Stack Planning cont.
11) Pop ONTABLE(C) and CLEAR(C), and achieve
ARMEMPTY by STACK(B,D):
CLEAR(D)
ONTABLE(C)
HOLDING(B)
CLEAR(C) HOLDING(B)
CLEAR(D)
ARMEMPTY
STACK(B,D)
ONTABLE(C) CLEAR(C) ARMEMPTY
PICKUP(C)
CLEAR(A) HOLDING(C)
STACK(C,A)
ON(B,D)
ON(C,A) ON(B,D) OTAD
38
Initial State Goal
Goal Stack Planning cont.
12) Pop entire stack, and return plan:
i. UNSTACK(B,A).
ii. STACK(B,D).
iii. PICKUP(C).
iv. STACK(C,A).
C B
A B C
S J Level 2
ON(B,C)
Split Join
1 CLEAR(A)
S J 3 STACK(A,B)
2 CLEAR(B)
S J
4 CLEAR(B)
S J 6 STACK(B,C)
5 CLEAR(C)
CLEAR(A)
S J STACK(A,B)
CLEAR(B)
S
CLEAR(B)
S J STACK(B,C)
CLEAR(C)
Level 3
CLEAR(A)
J STACK(A,B)
S
CLEAR(B)
S J STACK(B,C)
CLEAR(C)
S J STACK(A,B)
CLEAR(B)
S J STACK(B,C)
CLEAR(C)
J STACK(B,C) STACK(A,B)
CLEAR(B)
S
CLEAR(C) Level 4: after criticism to
resolve conflicts
CLEAR(C) STACK(C,x)