Pengaplikasian Graph Plan

Pada kesempatan kali ini saya mau membahas tentang Graph Plan. Cekidotttt…
Graph Plan adalah algoritma yang digunakan untuk perencanaan otomatis yang dikembangkan oleh Avrim Blum dan Merrick Furst pada tahun 1995. Graph Plan mengambil input masalah perencanaan yang dinyatakan dalam strip, dan mengerjakan jika salah satu memungkinkan untuk urutan operasi guna mencapai keadaan goal state.



Didalam Graph Plan terdapat constrain yang disebut dengan Mutually Exclusive Action atau Mutex. Mutex dapat diartikan jika dua tindakan tidak dapat dikerjakan secara paralel. Hubungan mutex sangat bervariasi dari lapisan ke lapisan, jadi kita akan memiliki pertanyaan mengenai kapan dua tindakan yang mutex di tingkat i. Hal ini dapat menjadi kenyataan dalam tiga kondisi yang memungkinkan.



Selain itu terdapat juga mutex yang lain seperti gambar dibawah ini.



Contoh pengaplikasian Graph Plan : Birthday Dinner Example 
Berikut adalah initial state, goal state, dan aksi-aksi yang dapat kita lakukan :



Diawali dengan meletakkan initial state nya.






Selanjutnya kita akan memasukkan aksi yang dapat dilakukan dan hubungkan dengan initial state.
 
 


 
Setelah itu kita masukkan hasil dari setiap aksi yang bisa kita lakukan.





Karena sekarang kita telah membuat dasar dalam Graph Plan. Selanjutnya yang harus dilakukan adalah membuat Mutex dari Graph Plan ini. Alasan pertama bahwa tindakan dapat mutex adalah karena efek yang tidak konsisten. Jadi, clean mutex dengan carry, karena carry membuat clean menjadi salah. Begitu pula dengan garbage mutex dengan carry dan dolly karena carry dan dolly membuat garbage salah. Quite juga mendapatkan efek yang sama dengan dolly karena dolly membuat quite menjadi salah.
 
 


 
Alasan lain mutex dapat terjadi adalah karena adanya gangguan seperti suatu aksi yang meniadakan prekondisi dari aksi yang lain. Carry Mutex dengan cook karena hasil dari carry meniadakan prekondisi dari cook. Dolly mutex wrap karena hasil dari dolly meniadakan prekondisi dari wrap. Selanjutnya carry dan dolly mutex karena mereka saling meniadakan prekondisi mereka.





Selanjutnya, setiap preposisi mutex dengan negasi nya. Lalu, alasan lain yang mana kita mungkin memiliki mutex adalah karena dukungan yang tidak konsisten. Jadi, garbage mutex dengan not clean dan not quite karena untuk mendapatkan garbage kita harus membiarkan nya dan ini mutex dengan carry dan dolly. Dinner mutex dengan not clean karena cook dan carry mutex pada level sebelumnya. Present mutex dengan not quite karena warp dan dolly mutex pada level sebelumnya. Begitupula dengan not clean dan not quite karena carry dan dolly mutex pada level sebelumnya. Itulah mutex yang bisa kita dapatkan.
 
 


 
Setelah itu kita mulai untuk mendapatkan goals yang kita butuhkan. Pertama-tama kita akan mendapatkan not garbage, kita menggunakan aksi carry, lalu kita mencoba mendapatkan dinner dengan aksi cook satu satunya aksi untuk mendapatkan dinner. Tetapi cook dan carry adalah mutex jadi kita tidak dapat menggunakan aksi tersebut.





Lalu kita coba dengan menggunakan cara lain, yaitu kita akan mendapatkan not garbage dengan aksi dolly, lalu kita dapat mendapatkan dinner menggunakan cook, tetapi kita tidak dapat mendapatkan present dengan satu-satu nya cara mendapatkan present yaitu warp, karena warp dengan dolly merupakan mutex.





Ternyata kita tidak bisa mendapatkan goal dengan cara ini. Untuk itu kita akan menggunakan depth two plan. Yaitu dengan menambahkan dua level lagi pada graph.
 


 
 
Nah pada aksi ini kita mendapatkan mutex sama seperti level sebelumnya.





Selanjutnya pada level ini kita juga akan mendapatkan mutex seperti pada level sebelumnya. Akan tetapi ada sedikit perbedaan mencolok mutex disini dengan yang ada di level sebelumnya. Yaitu pada level ini dinner tidak mutex dengan carry karena kita bisa mendapatkan dinner dengan membiarkan nya dan tetap bisa melakukan carry. Begitupun dengan present yang tidak mutex dengan dolly karena kita bisa mendapatkan present dengan membiarkan nya dan dapat tetap melakukan dolly.
 
 
 
Setelah kita selesai dengan mutex, selanjutnya kita coba mencari lagi apa yang kita butuhkan dan akhirnya kita berhasil dengan melakukan dengan cara sebagai berikut.



Selesai sudah langkah-langkah dalam pengaplikasian Graph Plan. Sekian dan terimakasih, semoga dapat bermanfaat bagi kalian, saya pribadi, dan kita semua...
 
 
 
Sumber referensi :
 

Related Posts:

Pengaplikasian Partially Order Plan (POP)

Pada kesempatan kali ini saya mau membahas tentang POP.. kalian pasti sudah tau kan apa itu POP, bagi yang belum tau, yuk kenalan dulu :D Cekidotttt
  POP adalah singkatan dari Partially Order Plan, untuk lebih jelasnya adalah proses sebuah pendekatan untuk melakukan perencanaan otomatis yang membantu dalam membuat keputusan tentang pemesanan tindakan seterbuka mungkin. Ini berkaitan dengan Totally Order Plan, yang mana menghasilkan urutan yang tepat dari sebuah tindakan. 
 
Berikut adalah gambar langkah langkah dalam POP :

Dalam penggunaan POP kali ini akan menggunakan contoh sebagai berikut. Disitu tertulis initial state, goal state, dan aksi yang dapat dilakukan.
Diawali dengan menghubungkan initial state dengan goal state menggunakan aksi aksi yang memiliki efek sebagai goal state.
 

Selanjutnya kita akan masukkan aksi lain yang diperlukan untuk mendapatkan goal state.
Setelah itu kita link initial state dengan aksi awal sebelum melakukan aksi untuk mendapatkan goal state.
  Selanjutnya kita penuhi prekondisi aksi dari Go(HDW) kita inisialkan x1=home.
Dan aksi Go(SM) kita inisialkan x2=home.
Akan tetapi ketika kita melihat lagi efek daripada aksi Go(HDW) dan Go(SM) ternyata mereka saling meniadakan dan hal ini tidak boleh terjadi.
Untuk solusinya maka kita ubah x2 menjadi HDW dan me-link aksi Go(HDW) dengan Go(SM).
Namun hal itu akan menyebabkan kita tidak dapat melakukan aksi Buy(D) jika setelah kita melakukan aksi Go(HDW) maka kita melangsungkan aksi ke Go(SM).
Maka dari itu kita harus melakukan aksi Buy(D) terlebih dahulu guna untuk mendapatkan apa yang ada di goal state. Barulah selanjutnya dengan aksi Go(HDW) kita akan melakukan aksi Go(SM) untuk melakukan aksi lain yang akan memenuhi goal state.
Selesai sudah langkah-langkah dalam pengaplikasian POP, sebenarnya masih banyak pilihan yang dapat dilakukan untuk membuat POP ini. Diantaranya kita dapat melakukan Go(SM) dahulu untuk melakukan Buy(B) dan Buy(M), lalu setelah itu melakukan aksi Go(HDW) pada aksi Go(SM). Seperti itulah kurang-lebihnya, contoh diatas hanyalah salah satu contoh agar kita dapat memahami langkah-langkah dalam Partially Order Plan.

Sekian dan terimakasih, semoga dapat bermanfaat bagi kita semua...


Sumber referensi :
 

Related Posts:

Penyelesaian Cryptarithmetic dengan Algorithm Backtracking

        Pada kesempatan kali ini saya mau membahas tentang CSP.. kalian pasti sudah tau kan apa itu CSP, bagi yang belum tau, yuk kenalan dulu :D Cekidotttt

CSP adalah singkatan dari Constraint Satisfaction Problem, untuk lebih jelasnya adalah proses menemukan solusi untuk satu set kendala yang memaksakan kondisi dimana variabel harus memuaskan. Pada saat dilakukan pencarian solusi atau pemilihan urutan aksi, teknik yang digunakan dalam constraint satisfaction tergantung pada jenis kendala yang dipertimbangkan, sedemikian rupa sehingga semua constraint akan terpenuhi.

CSP dapat dijabarkan dalam 5 bagian :
1. Kumpulan variable, X  ->  kumpulan dari n variable X1,X2,X3,…..,Xn,    Variabel adalah elemen atau entity yang ingin dicari nilainya sehingga pemberian nilai pada variabel dapat menjadi solusi dari CSP.

2. Domain D  ->  Masing-masing variable didefinisikan oleh suatu domain yag finite D1,D2,………,Dn, yang berisi kumpulan nilai-nilai yang mungkin untuk variabel tertentu yang bertujuan untuk menyelesaikan persoalan.

    3. Constraint C  ->  kumpulan dari constraint-constraint C1,C2,……,Cm. Ci merupakan constraint-constraint yang berisi batasan nilai untuk setiap variabel dan tidak boleh dilanggar. Constraint-constraint ini akan membatasi domain dari suatu variabel sehingga menjadi lebih sempit

      4. Assignment  ->  pemberian nilai pada suatu variabel.

    5. Solusi  ->  pemberian nilai-nilai pada setiap variabel yang memenuhi semua constraint yang telah ditetapkan untuk persoalan, sehingga nilai-nilai variabel tersebut merupakan solusi untuk persoalan.
 

Deskrispsi Masalah Cryptarithmetic

Cryptarithmetic merupakan ilmu dan seni yang digunakan untuk menciptakan dan menyelesaikan mathematic puzzle, dimana digit-digit ditukar dengan huruf-huruf alfabet atau symbol lain.
Cryptarithmetic juga merupakan salah satu contoh persoalan yang dapat diselesaikan dengan CSP, dengan constraint yang melibatkan 3 atau lebih variabel. Cryptarithmetic merupakan contoh yang sangat cocok untuk CSP, karena selain menyediakan deskripsi, masalah cryptarithmetic dapat dijelaskan lebih baik dengan constraint-constraint.

Constraint-constraint yang dijelaskan dalam cryptarithmetic problem antara lain :

1.      1. Masing-masing huruf atau symbol merepresentasikan digit yang hanya satu dan unik dalam persoalannya.

2.       2. Ketika digit-digit menggantikan huruf atau symbol yang digunakan, maka hasil dari operasi aritmatika haruslah benar.
 
Dari ketentuan diatas, dapat disimpulkan bahwa batasan-batasan di atas memunculkan beberapa batasan baru dalam persoalan, yaitu apabila baris dari angka adalah 10, maka pasti akan ada paling banyak 10 simbol atau huruf yang unik dalam persoalan. Jika tidak, maka tidak akan mungkin untuk memberikan digit yang unik ke setiap huruf atau simbol yang unik juga dalam persoalan. Dan supaya memiliki makna yang berarti secara semantik, angka tidak boleh dimulai dengan 0, jadi huruf-huruf yang muncul untuk setiap variable pertama sekali seharusnya tidak boleh mengandung 0.


Untuk lebih jelasnya… silahkan simak baik-baik dibawah ini :
 
Spesifikasi dalam persoalan cryptarithmetic (couple + couple = quartet) yaitu:
1.      1. Pemberian digit atau nilai harus berbeda untuk setiap variabel {C, O, U, P, L, E, Q, A, R, T} yaitu digit {0,…..9} sehingga persamaan COUPLE + COUPLE = QUARTET terpenuhi.

2.   2. Apabila masing-masing variabel sudah diberikan nilai, maka pemberian nilai harus memenuhi constraint yang ada, sehingga pada saat operasi aritmatika dilakukan untuk nilai setiap variabel, maka hasil dari operasi penjumlahan COUPLE + COUPLE = QUARTET harus sesuai.

3.      3. Variabel-variabel untuk persoalan cryptaritmetic ini ada 10 variabel, antara lain : C, O, U, P, L, E, Q, A, R, dan T.

4.      4. Persoalan cryptaritmetic ini akan menggunakan bit carry, yaitu variabel X1, X2, X3, X4, dan X5.


      Masih bingung? :D Silahkan simak contoh berikut….. cekidotttt


Dalam persoalan ini, karena jumlah variabel ada 10, maka sudah tentu kesepuluh angka harus dipakai.  
         X5  X4 X3 X2 X1
         C  O  U  P  L  E
         C  O  U  P  L  E
       ---------------------- +
    Q  U  A  R  T  E  T

Bit carry X1 = {0,1}, X2 = {0,1}, X3 = {0,1}, X4 = {0,1}, X5 = {0,1}
  • Constraint-contraint yang ditentukan untuk persoalan cryptarithmetic yaitu:

 • E   + E =  T + 10 * X1
 • X1 + L +  L =  E + 10 * X2
 • X2 + P +  P  = T + 10 * X3
 • X3 + U + U =  R + 10 * X4
 • X4 + O + O =  A + 10 * X5
 • X5 + C + C =  U + 10 * Q

Solusi dinyatakan sebagai vektor X dengan n-tuple:
 X = (x1, x2, ……., xn), xi Є {0,1,2,…..,9} 

 
Angka variabel ke-k, xk, ditentukan dengan algoritma berikut:
1.      1. Bangkitkan angka i
2.      2. Periksa pemberian angka berdasarkan constraint yang ada
3.   3. Jika angka i yang dibangkitkan tidak melanggar constraint untuk variabel tersebut, maka variabel k diberi angka i, kalau tidak bangkitkan angka berikutnya, dan ulangi langkah 2 di atas.
4.     4. Jika tidak ada lagi angka yang dapat dibangkitkan (angka habis), maka persoalan cryptarithmetic dengan n variabel dan m warna tidak dapat diselesaikan.

    Karena penamaan simpul adalah angka, bukan variabel, sehingga untuk setiap variabel akan diberi urutan nomor dimulai dari variabel paling kanan dari cryptarithmetic yaitu E sampai ke paling kiri yaitu Q, sebab operasi yang dilakukan adalah penjumlahan sehingga harus dimulai dari sebelah kiri, yaitu:
      E = 1   R = 6
T = 2   O = 7
L = 3   A = 8
P = 4   C = 9
U = 5  Q = 10

nb# pemberian nomor untuk variabel bukanlah solusi, tetapi hanya untuk mempermudah proses iterasi.
  •      Initial state
                             C  O  U  P  L  E
                             C  O  U  P  L  E
                            ---------------------- +
                        Q  U  A  R  T  E  T 
  •      Operator Succesor : (0,1,2,3,4,5,6,7,8,9)

  •      Path cost
                            • E + E = T + 10 * X1
                            • X1 + L + L =  E + 10 * X2
                            • X2 + P + P =  T + 10 * X3
                            • X3 + U + U = R + 10 * X4
                            • X4 + O + O = A + 10 * X5
                            • X5 + C + C = U + 10 * Q
  •      Goal state 
E = 1  R = 6 T = 2  O = 7
L = 3  A = 8
P = 4  C = 9
U = 5  Q = 10



Sumber referensi :


  • http://saefulnugroho.blogspot.co.id/2011/10/constraint-satisfaction.html
  • http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2005-2006/Makalah2006/MakalahStmik2006-47.pdf
  • Rinaldi Munir, Diktat Kuliah IF2251 Strategi Algoritmik, STEI, 2006
  • Stuart J Russell & Peter Norvig, Artificial Intelligence – A Modern Approach, Prentice-Hall International, Inc, Textbook

Related Posts: