laporan tugas ai waterjug a star tanpa listing

18
FINAL REPORT TUGAS I ARTIFICIAL INTELLIGENCE DYNAMIC WATER JUG DENGAN MENGGUNAKAN ALGORITMA A* Kelompok 23 (WaterJug...Oh…WaterJug) Kelas IF-29-05 OLEH : NIM NAMA NILAI 113050243 Dhilla Rahadian M 113050252 Radityo Basith 113050258 James Rukka EB INSTITUT TEKNOLOGI TELKOM DEPARTEMEN TEKNIK INFORMATIKA BANDUNG 2008

Upload: radityo-basith

Post on 21-Jun-2015

231 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Laporan Tugas AI WaterJug a Star Tanpa Listing

FINAL REPORT TUGAS I ARTIFICIAL INTELLIGENCE

DYNAMIC WATER JUG DENGAN MENGGUNAKAN ALGORITMA A*

Kelompok 23 (WaterJug...Oh…WaterJug) Kelas IF-29-05

OLEH :

NIM NAMA NILAI 113050243 Dhilla Rahadian M 113050252 Radityo Basith 113050258 James Rukka EB

INSTITUT TEKNOLOGI TELKOM

DEPARTEMEN TEKNIK INFORMATIKA BANDUNG

2008

Page 2: Laporan Tugas AI WaterJug a Star Tanpa Listing

1. PENDAHULUAN

Algoritma dapat dikatakan sebagai urutan langkah-langkah logis yang sistematis dalam

mencari suatu solusi dari suatu permasalahan yang ada. Pada program komputer, algoritma

terdiri dari sekumpulan langkah-langkah untuk mencapai suatu tujuan, seperti logika if-then-

else maupun pengulangan suatu tindakan atau langkah dengan loop. Begitu pula jika kita

ingin mensimulasikan penyelesaian masalah water jug di komputer, maka diperlukan juga

algoritma yang tepat agar masalah dapat ditangani se-efisien mungkin.

Water jug merupakan salah satu permasalah klasik yang sudah ada sejak lama dan

kadang-kadang masih terjadi dalam kehidupan manusia sekarang. Masalah water jug dapat

dibayangkan dengan suatu tujuan mengisi sebuah wadah yang diketahui kapasitasnya dengan

air secara tepat penuh menggunakan dua atau lebih wadah lain yang juga telah diketahui

kapasitasnya tetapi tidak mempunyai ukuran takaran. Dalam implementasinya, mungkin tidak

ada solusi atau bahkan akan ada lebih dari satu solusi untuk menyesaikan masalah water jug

tersebut. Memang sering kali terdapat banyak cara untuk menyelesaikan suatu masalah, akan

tetapi dari sekian cara tersebut, memilih manakah yang paling optimal akan memerlukan

suatu cara tersendiri.

Gambaran kasus water jug sederhana dan alternatif penyelesaiannya adalah sebagai

berikut:

Gambar 1: Gambaran kasus water jug

Misalkan kita ingin mengisi penuh wadah C yang berkapasitas 1 liter dengan air dari

kolam dengan menggunakan dua wadah lainnya yaitu wadah A dan wadah B yang

kapasitasnya masing-masing adalah 3 liter dan 4 liter. Maka akan ada beberapa alternatif cara

yang diantaranya sebagai berikut:

         Wadah A   Wadah B  Wadah C 

Kolam air  

 

3 l 

 

4 l   1 l

Page 3: Laporan Tugas AI WaterJug a Star Tanpa Listing

1) Alternatif 1

- Awalnya semua wadah kosong

- Isi air ke wadah A sampai penuh

- Tuangkan semua air dari wadah A ke wadah B

- Isi kembali wadah A sampai penuh

- Tuangkan sebagian isi wadah A ke wadah B sampai wadah B penuh

- Kosongkan wadah A

- Tuangkan sebagian isi wadah B ke wadah A sampai wadah A penuh

- Tuangkan sisa air di wadah B ke wadah C

- Akan didapat tepat 1 liter pada wadah C

2) Alternatif 2

- Awalnya semua wadah kosong

- Isikan air ke wadah B sampai penuh

- Tuangkan sebagian isi wadah B ke wadah A sampai wadah A penuh

- Tuangkan sisa air di wadah B ke wadah C

- Akan didapat tepat 1 liter pada wadah C

Dari kedua alternatif tersebut manakah yang lebih optimal dari segi usaha yang kita

lakukan? Dalam hal inilah algoritma A* diperlukan dalam mencari solusi dengan upaya

seoptimal mungkin.

1. LANDASAN TEORI 1.1 Sekilas tentang algoritma A*

Algoritma A* menyelesaikan masalah yang menggunakan graf untuk perluasan ruang

statusnya. Dengan menerapkan suatu heuristik, algoritma ini membuang langkah-langkah

yang tidak perlu dengan pertimbangan bahwa langkah-langkah yang dibuang sudah pasti

merupakan langkah yang tidak akan mencapai solusi yang diinginkan. Algoritma A*

membangkitkan simpul yang paling mendekati solusi. Simpul ini kemudian disimpan

suksesornya ke dalam list sesuai dengan urutan yang paling mendekati solusi terbaik.

Kemudian, simpul pertama pada list diambil, dibangkitkan suksesornya dan kemudian

suksesor ini disimpan ke dalam list sesuai dengan urutan yang terbaik untuk solusi.

Algoritma ini akan mengunjungi secara mendalam (mirip DFS) selama simpul tersebut

merupakan simpul yang terbaik. Jika simpul yang sedang dikunjungi ternyata tidak mengarah

Page 4: Laporan Tugas AI WaterJug a Star Tanpa Listing

kepada solusi yang diinginkan, maka akan melakukan runut balik ke arah simpul akar untuk

mencari simpul anak lainnya yang lebih menjanjikan dari pada simpul yang terakhir

dikunjungi. Bila tidak ada juga, maka akan terus mengulang mencari ke arah simpul akar

sampai ditemukan simpul yang lebih baik untuk dibangkitkan suksesornya. Strategi ini

berkebalikan dengan algoritma DFS yang mencari sampai kedalaman yang terdalam sampai

tidak ada lagi suksesor yang bisa dibangkitkan sebelum melakukan runut balik, dan BFS yang

tidak akan melakukan pencarian secara mendalam sebelum pencarian secara melebar selesai.

A* baru berhenti ketika mendapatkan solusi yang dianggap solusi terbaik.

Algoritma A* menggabungkan jarak estimasi/heuristik [h(n)] dan jarak

sesungguhnya/cost [g(n)] dalam membantu penyelesaian persoalan. Heuristik adalah nilai

yang memberi harga pada tiap simpul yang memandu A* mendapatkan solusi yang

diinginkan. Dengan heuristik, maka A* pasti akan mendapatkan solusi (jika memang ada

solusinya). Dengan kata lain, heuristik adalah fungsi optimasi yang menjadikan algoritma A*

lebih baik dari pada algoritma lainnya. Namun heuristik masih merupakan estimasi/perkiraan

biasa saja. Sama sekali tidak ada rumus khususnya. Artinya, setiap kasus memiliki fungsi

heuristik yang berbeda-beda.

1.2 Analisis Penyelesaian Water Jug

Sebelum masuk ke penyelesaian, perlu diingat bahwa kondisi awal persoalan water jug

ini adalah sebagai berikut:

- Terdapat 3 wadah, yaitu wadah 3 liter, 4 liter, dan 1 liter

- Diminta untuk mengisikan air ke wadah yang 1 liter secara tepat penuh dengan

menggunakan dua wadah lainnya.

- Diasumsikan sumber air dari kolam tidak terbatas

Umumnya sering kali terdapat lebih dari satu solusi di dalam penyelesaian suatu kasus

water jug, tetapi dalam konteks kali ini, yang diminta adalah solusi terbaik dari sekian solusi

yang ada. Jadi pada dasarnya adalah memilih satu dari seluruh kemungkinan solusi yang ada.

Hal ini berkaitan dengan ekspansi node-node suksesor dari node atau status yang sekarang

sedang terjadi, yang melibatkan sejumlah aturan yang khusus yang akan dijalankan jika

kondisi sekarang memenuhi. Aturan tersebut dapat diibaratkan sebagai suatu tindakan yang

mungkin untuk dilakukan seandainya suatu kondisi terjadi, sebagai contoh, semisalkan

sekarang semua wadah sedang kosong maka berlaku aturan berikut, “Saat wadah A kosong,

maka isi ulang sampai penuh” atau “Isi wadah B sampai penuh”. Begitu pula semisal kondisi

lainnya sekarang sedang terjadi, seperti sekarang wadah B penuh dan wadah A kosong, maka

Page 5: Laporan Tugas AI WaterJug a Star Tanpa Listing

akan a

selanjut

Beryang ak

No 1 2

3

4

5

6

7

8

9 10

Se

oleh gam

Pro

Pro

ada sejumla

tnya yang m

rikut adalahkan digunak

S(x,y(x,y

(x, y) if x

(x, y) if y

(x,y) if x+

(x, y) if x+

(x, y) if x+

(x, y) if x+

(x,y(x,y

ebagai gamb

mbar beriku

oses 1 :

oses 2 :

ah aturan

mungkin bis

h sejumlah kan sebagai

State y) if x = 0 y) if y = 4

<= 1 and x

<= 1 and y

+y >= 3 and

+y >= 4 and

+y <= 3 and

+y <= 4 and

y) if x= 3 y) if y = 4

baran dalam

ut:

atau rule

sa dilakukan

aturan yanaturan untu

Nex(3(x

x != 0 (0,

y != 0 (x,

y >0 (3, y-

d x>0 (x-(4

d y>0 (x+

d x>0 (0,

(0(x

Tabel 1 Atu

m bentuk tre

3

yang digu

n.

ng mungkinuk meng-exp

xt state , y, z)

x, 4, z)

y, (x))

0, (y))

-(3-x), z)

4-y), 4, z)

+y, 0, z)

x+y, z)

0, y, z) x, 0, z)

uran Produks

ee-search ad

0,0,0

0,0,0

3,0,0 0,4,0

unakan un

n terjadi dapand sukses

isi wisi w

Tuang

Tuang

Tuangkasam

Tuangkasam

Tuang

Tuang

kk

si Water Jug

dalah sebag

0

ntuk meng-

alam kasus sor suatu sta

Deskripwadah A samwadah B samgkan seluruh

ke wadagkan seluruh

ke wadaan isi wadahmpai wadahan isi wadahmpai wadahgkan seluruh

ke wadagkan seluruh

ke wadakosongkan wkosongkan w

aimana yan

-expand sta

water jug ate:

psi mpai penuh mpai penuh h isi wadah ah C h isi wadah ah C h B ke wadah A penuh h A ke wadah B penuh h isi wadah ah A h isi wadah ah B wadah A wadah B

ng akan ditu

ate-state

kali ini,

A

B

ah A

ah B

B

A

unjukkan

Page 6: Laporan Tugas AI WaterJug a Star Tanpa Listing

Pro

Pro

Pro

Pro

Pro

oses 3:

oses 4 :

oses 5 :

oses 6 :

oses 7 :

3

3

3,4,0

3,4,0

3,0,

3,4,0 0,0,

3,0,0

3,4,0 0,0,

3,0,0

3,4,0

3,0,0

0,0,0 0,

3,0,0

0,0,0

,0 0,4,0

0

3,0,0

,0

0,4,0 3

3,0,0

,0

0,4,0 3

0,0,0

3,0,0

0,0,0

0,0,0

,3,0 3,4,

0,0,0

,3,0 3,4,0

0,0,0

0,3,0

,3,0 3,0,0

0,0,0

0,3,0

,3,0 3,0,0

0

0,3,0

0,4,0

0,4,0

,0 0,0,0

0,4,0

0 0,0,0

0

0,4

3,4,0 0,0

0

0,4

3,4,0 0,0

3,0,0

3,1,0

3,1,0

4,0

0,0 3,1,0

4,0

0,0

0,4,0

3,1,0

0

0

Page 7: Laporan Tugas AI WaterJug a Star Tanpa Listing

Pro

Pro

Jad

kondisi

dengan

keadaan

Bia

heuristi

pemban

baru ya

kecil ya

berikutn

Di

masalah

goalnya

oses 8 :

oses 9 :

di, setiap kit

node mana

demikian a

n yang seka

aya yang dik

iknya [h(n)

nding dalam

ang masuk.

ang mungk

nyalah yang

halaman s

h water jug

a masih men

3,4,0 0,0

3,0,0

3,4,0 0,0

3,0,0

Gamb

ta menjump

a yang sesu

akan diketah

arang.

keluarkan [

)]. Hasil p

m penguruta

Kemudian

kin akan me

g akan dicob

selanjutnya

g yang diim

ngikuti atur

3,0,0

0,0

0,4,0 3

3,0,0

0,0

0,4,0 3

bar 2: Tree Se

pai suatu sim

uai dengan r

hui kondisi

g(n)] akan

penjumlahan

an pada frin

dari fringe

engantarkan

ba untuk dip

adalah gam

mplementas

ran sebelum

0,0

0,3,0

3,3,0 3,0,

0,0

0,3,0

3,3,0 3,0,

earch dalam p

mpul dalam

rule atau atu

i-kondisi ap

selalu di-up

n kedua n

nge. Fringe

e tersebut, d

n ke node tu

proses.

mbaran pro

sikan dalam

mnya.

0,0

0

3,4,0 0,

3,0,0

0,0

0

3,4,0 0,

3,0,0

proses algorit

m tree-searc

uran produk

pa saja yang

pdate serta a

nilai tersebu

e akan diuru

diambil nod

ujuan. Apa

oses algorit

m bentuk ta

0,4,0

,0,0

0,4,0

0,4,0

,0,0

0,4,0

tma A*

ch akan dila

ksi water ju

g mungkin a

akan dijuml

ut [f(n)] a

utkan setiap

de yang ber

abila tidak,

tma A* un

abel. Untuk

3,1

0,1,0 0,4

3,1

0,1,0 0,4

akukan pen

ug di atas, s

akan terjadi

lahkan deng

akan menja

p kali ada

rbiaya [f(n)

maka nilai

ntuk menye

k kondisi aw

1,0

4,0 3,0,1

1,0

4,0 3,0,1

ngecekan

sehingga

i setelah

gan nilai

adi nilai

keadaan

)] paling

terkecil

lesaikan

wal dan

Page 8: Laporan Tugas AI WaterJug a Star Tanpa Listing

Tabel 1: Proses algoritma A* untuk menyelesaikan masalah water jug

Jalur yang terbentuk: (0,0,0) → (0,4,0) → (3,1,0)→ (3,0,1)

Page 9: Laporan Tugas AI WaterJug a Star Tanpa Listing

Pada dasarnya, algoritma A* menggunakan tree-search sebagai penyimpan kondisi dan

nilai node-node yang mungkin memberikan nilai terbaik dalam ruang pencarian. Selain itu

digunakan pula struktur link-list dengan algoritma deleteFirst dan sortList sebagai fringe atau

buffer. Akan tetapi, dapat pula diimplementasikan dalam bentuk array yang berisi banyak

state dari water jug sebagaimana yang diterapkan dalam tugas besar kali ini.

2. SIAPA MENGERJAKAN APA

Berikut adalah pembagian tugas dalam pembangunan software simulasi water jug dari

perancangan sampai pengujian:

1. Dhilla Rahadian M (113050243)

o User Interface Designer

merancang dan mengerjakan semua tata letak komponen program, alur program,

sampai latar belakang aplikasi.

o Software Programmer

bekerjasama dengan James sebagai programmer utama dengan menyesuaikan

pada rancangan User Interface dan rancangan program

o Software Tester

mengetest sejauh mana daya tahan dan tingkat kebenaran program di tiap tahap

2. James Rukka EB (113050258)

o Programmer Designer

merancang algoritma dan mekanisme kerja aplikasi serta mengenalisa masalah

water jug dan solusinya

o Software Programmer

bekerjasama dengan Dhila RM sebagai programmer utama dengan menyesuaikan

pada rancangan User Interface dan rancangan program.

o Software Tester

mengetest sejauh mana daya tahan dan tingkat kebenaran program di tiap tahap

3. Radityo Basith (113050252)

o Project Manager

melakukan manajemen jadwal pengerjaan, menyediakan referensi, serta

memanajemen pendokumentasian program

o System Analyzer

analisa terhadap rancangan algoritma maupun user interface program

Page 10: Laporan Tugas AI WaterJug a Star Tanpa Listing

o Sofware Tester

mengetest kebenaran program pada tahap akhir dan usul perbaikan

4. RANCANGAN STRUKTUR DATA & ALGORITMA

Dalam pembuatan program Water Jug kali ini, kelompok kami menggunakan aplikasi

pemrograman Delphi 2007 dengan bahasa pemrograman yang digunakan sama dengan bahasa

pemrograman Pascal. Alasan pemilihan bahasa dan aplikasi pemrograman tersebut yaitu

bahwa bahasa pemrogramannya lebih mudah dimengerti dan bisa memenuhi semua

requirement dari spesifikasi tugas besar yang diberikan (interface harus berbasis GUI).

4.1 Struktur Data, Fungsi Cost dan Aturan Produksi

Untuk struktur datanya sendiri, kelompok kami menggunakan tabel sebagai media

penyimpanan semua informasi mengenai status node baik yang telah di-expand maupun yang

akan segera di-expand. Sedangkan cara menggambarkan kondisi/status node yaitu dengan

notasi {jug1, jug2, jug3}, dimana tiap variabel disimpan dalam suatu field tersendiri pada

tabel. Tabel yang digunakan ada 3 buah tabel yaitu :

a) Tabel1 : berfungsi untuk menyimpan data status node yang menyangkut parent,

g(n), h(n), dan f(n). Record yang digunakan untuk pembentukkan Tabel1

yaitu Rec1.

i jug1 jug2 jug3 parent g(n) h(n) f(n)

.. ... ... ... ... ... ... ...

b) Tabel2 : untuk menyimpan semua informasi node yang telah di-expand dengan

kondisi terurut secara ascending berdasarkan f(n). Record yang digunakan

untuk membentuk Tabel2 yaitu Rec2

i jug1 jug2 jug3 f(n)

.. ... ... ... ...

Ket : isi dari field i tergantung dari nilai field i di Tabel1 yang menunjuk

ke suatu status node.

Page 11: Laporan Tugas AI WaterJug a Star Tanpa Listing

c) Result : digunakan jika proses expanding node telah selesai dilakukan dan

ditemukan solusi. Tabel ini digunakan untuk mengambil semua index

parent dari node tujuan dengan tracing mundur sampai ke kondisi awal

(node awal).

in in-1 in-2 ... 1

Hal penting berikutnya yaitu bagaimana mencari nilai heuristik cost dan nilai real cost

untuk kasus Water Jug.? Untuk menghitung nilai heurisitik cost, kami menggunakan fungsi

sebagai berikut :

dimana : xi , yi = adalah usaha yang telah dikeluarkan untuk mencapai state tersebut

Zmax-zn = kondisi kekurangan jug goal saat itu untuk ke tujuan (goal state)

h(n) = nilai heuristic cost, dimana return value = hasil pembagian yang

dibulatkan ke atas dengan fungsi ‘Ceil’ (bukan sisa pembagian).

Fungsi h(n) tersebut dapat diartikan sebagai perbandingan usaha yang dilakukan saat itu

terhadap kurangnya air saat itu juga untuk mencapai goal yang diinginkan. Jadi misalkan kita

mengisi suatu jug A sampai penuh maka usaha yang dilakukan adalah xi dan karena jug

kedua tidak dilakukan apa-apa, maka yi = 0, lalu usaha yang telah dilakukan tersebut

dibandingkan dengan tujuan yang ingin dicapai saat itu. Sedangkan untuk menghitung nilai

real cost, kami menggunakan besarnya usaha yang digunakan untuk memasukkan air ke

suatu jug, membuang air dari suatu jug, ataupun untuk memindahkan air dari jug satu ke jug

yang lain dengan ditambah real cost sebelumnya. Misal: kapasitas masing-masing jug yaitu

{4,3,1}, current state {0,0,0}, dan next-state {4,0,0}, maka nilai real cost = 4+0 = 4.

Hal berikutnya yang harus didefinisikan yaitu mengenai aturan-aturan produksi yang

merupakan rule dalam meng-expand suatu node. Dalam program, semua aturan produksi ini

diletakkan dalam satu procedure ExpandNode(j1, j2, gol : Integer), dimana secara

keseluruhan aturan produksi tersebut dapat dilihat pada tabel berikut :

h(n) = Ceil( (xi + yi ) / Abs( Zmax-zn ))

Page 12: Laporan Tugas AI WaterJug a Star Tanpa Listing

No State Next state Deskripsi

1 (x,y) if x = 0 (3, y, z) isi wadah A

2 (x,y) if y = 0 (x, 4, z) isi wadah B

3 (x, y) if x <= 1 and x != 0

(0, y, (x))

Tuangkan seluruh isi wadah A ke wadah C

4 (x, y) if y <= 1 and y != 0

(x, 0, (y))

Tuangkan seluruh isi wadah B ke wadah C

5 (x,y) if x+y >= 3 and y>0 (3, y-(3-x), z)

Tuangkan isi wadah B ke wadah A sampai

wadah A penuh

6 (x, y) if x+y >= 4 and x>0 (x-(4-y), 4, z)

Tuangkan isi wadah A ke wadah B sampai

wadah B penuh

7 (x, y) if x+y <= 3 and y>0 (x+y, 0, z) Tuangkan seluruh isi

wadah B ke wadah A

8 (x, y) if x+y <= 4 and x>0 (0, x+y) Tuangkan seluruh isi

wadah A ke wadah B

9 (x,y) if x = 3 (0, y, z) kosongkan wadah A

10 (x,y) if y = 4 (x, 0, z) kosongkan wadah B

Tabel 1: Aturan Produksi Water Jug 

Mengingat tidak semua kombinasi jug/wadah yang diinputkan user memiliki solusi,

maka diperlukan suatu fungsi khusus yang berperan untuk mengecek apakah inputan user

tersebut memiliki solusi dan valid untuk dikerjakan atau tidak. Dalam algoritma kami, fungsi

tersebut disebut fungsi CekJug() dengan hasil Boolean yang mengembalikan nilai True jika

valid dan False jika tidak valid/tidak mungkin ada solusi. Prinsip yang kami gunakan, bahwa

suatu kombinasi untuk 3 buah jug akan, misal A, B, dan C dimana jug C adalah goal, akan

valid dan akan ada solusi jika memenuhi kalimat berikut:

A or B or (A+B) or abs(A-B) or (A mod B) or (B mod A) € factor-faktor C

dengan adanya fungsi ini, maka dapat dihindari loop pencarian tak hingga (karena tak ada

solusi) yang dapat menyebabkan program mengalami crash.

Di samping itu, masih ada procedur/function pendukung lain seperti InsertTabel1,

InsertTabel2, SortTabel2, berbagai atribut global dan lain-lain yang akan ditunjukkan

kegunaannya dalam penjelasan algoritma program berikut ini.

Page 13: Laporan Tugas AI WaterJug a Star Tanpa Listing

4.2 Algoritma Program

Algortima program yang kami buat, tidak jauh beda dengan yang telah diajarkan

diperkuliahan mengenai A* search. Alur jalannya program yaitu sebagai berikut:

a) Pada kondisi awal, akan di-assign status awal {0,0,0}, dimana setelah menghitung

nilai heuristic cost dan real cost, maka informasi tersebut akan langsung diinsertkan

ke dalam Tabel1 dan Tabel2.

Di Tabel2 akan dilakukan pengurutan ascending berdasarkan nilai f(n). Kemudian,

informasi yang berada di nomor urut 1 (index2=1) akan di delete yang dilakukan oleh

procedure DelFirstTabel2(), dimana nilai yang di-delete tersebut dimasukkan dalam

variabel global i, node, f. Pada saat goal_state dicapai, informasi mengenai goal_state

yang dicapai dapat dilihat pada variabel global ini.

Di program juga disediakan variabel global jug_1, jug_2, jug_goal yang akan di-

update nilainya setiap kali proses insert ke tabel akan dilakukan. Proses ini dilakukan

oleh procedure KondisiJug(a, b, c : Integer).

b) Setelah itu, proses akan berlanjut ke perulangan (looping) meng-expand node

berdasarkan variabel i, node, f, yang terdiri dari proses-proses seperti pada langkah 1.

Looping terus dijalankan selama index2 (index untuk Tabel2) <> 1 dan jug_gol <>

gol_maks.

c) Pada saat kondisi looping tidak terpenuhi (program running succesfully), maka akan

dilakukan procedure GetParent(), yang menjalankan proses insert ke tabel Result

untuk semua index di Tabel1 yang menjadi jalur dari goal_state ke state {0,0,0}

berdasarkan informasi parent goal_state yang ada di variabel global i.

d) Langkah terakhir yaitu membaca tabel Result dari index terakhir ke index 1 untuk

memperoleh informasi bagaimana air dipindahkan dari satu jug ke jug lain hingga

memenuhi jug_gol (mencapai goal_state). Prose ini dilakukan oleh procedure

TimerTimer(Sender: TObject) yang disertai simulasi perpindahan nilai kapasitas air.

Page 14: Laporan Tugas AI WaterJug a Star Tanpa Listing

5. ANALISIS IMPLEMENTASI

No Kapasitas  Node di‐

expand Node 

diproses  Waktu  Hasil Jug A  Jug B  Jug Goal 1  12  12  12  11  3  0.003  Complete 2  1  1  1  11  3  0.005  Complete 3  4  3  1  18  7  0.005  Complete 4  22  25  3  18  7  0.005  Complete 5  45  30  15  20  8  0.005  Complete 6  5  3  2  18  7  0.005  Complete 7  40  25  15  28  11  0.005  Complete 8  16  4  8  32  10  0.005  Complete 9  6  2  4  35  11  0.005  Complete 10  36  20  16  28  11  0.006  Complete 11  3  7  2  106  45  0.007  Complete 12  14  6  4  113  48  0.007  Complete 13  4  1  3  176  56  0.008  Complete 14  35  5  15  166  53  0.008  Complete 15  10  1  3  166  53  0.008  Complete 16  7  2  6  199  64  0.009  Complete 17  10  3  2  272  117  0.012  Complete 18  10  3  4  504  177  0.025  Complete 19  14  1  4  939  301  0.096  Complete 20  14  1  4  939  301  0.096  Complete 

 

Table 2:Table percobaan terhadap 20 kasus water jug 

 

Page 15: Laporan Tugas AI WaterJug a Star Tanpa Listing

 

Grafik 1: Kebutuhan waktu solusi untuk kasus‐kasus di tabel sebelumnya 

Dapat dilihat bahwa pertumbuhan kebutuhan waktu dapat meningkat secara signifikan pada

kasus tertentu. Berdasarkan beberapa kali percobaan, dapat disimpulkan bahwa suatu kasus

dalam water jug akan membutuhkan solusi dan waktu yang lebih panjang jika terdapat

perbedaan yang besar antara jug goal dengan jug yang digunakan untuk mengisinya.

Percobaan diatas semuanya complete karena setiap masalah yang diajukan hanya yang

memiliki solusi. Seandai suatu kasus tidak memiliki solusi, maka program secara otomatis

akan memberi pemberitahuan. Menurut pengamatan pula, program akan selalu complete

dengan catatan node yang diperlukan tidak melebihi kapasitas buffer program.

0

0,02

0,04

0,06

0,08

0,1

0,12

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Grafik Perbandingan Suatu Problem Water Jug Terhadap Waktu

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Page 16: Laporan Tugas AI WaterJug a Star Tanpa Listing

6. KESIMPULAN

- Algoritma A* merupakan perbaikan dari algoritma UCS dengan meminimalisasi jumlah

node yang diekspansi dalam tree-search, serta mampu memberikan solusi optimal

terhadap suatu masalah pencarian.

- A* adalah suatu teknik optimasi dari algoritma traversal graf. yang disebabkan oleh

penerapan heuristik pada saat pembangkitan pohon statusnya.

- Meskipun mampu memberikan solusi optimal serta algoritma yang sederhana, pada

kenyataannya algoritma A* juga memboroskan memori dalam segi pengurutan biaya-

biaya yang ada setiap kali ada biaya yang masuk.

Page 17: Laporan Tugas AI WaterJug a Star Tanpa Listing

7. Daftar Pustaka

[1] Suyanto. 2007. Artificial Intelegence. Bandung. Penerbit Informatika.

[2] Munir, Rinaldi. 2006. “Strategi Algoritmik”. Departemen Teknik Informatika, Institut

Teknologi Bandung

[3] Wikipedia Foundation, Inc. “A * Search Algorithm”.

http://en.wikipedia.org/wiki/A*_search_algorithm. Diakses tanggal 2 Maret 2008

pukul 21.00

[4] Jones, Justin Hayes. “A * Algorithm Tutorial”.

http://www.geocities.com/SiliconValley/Lakes/4929/astar.html. Diakses tanggal 2

Maret 2008 pukul 21.15

[5] Lester, Patrick. “A* Pathfinding for Beginners”.

http://www.gamedev.net/reference/articles/article2003.asp. Diakses tanggal 2 Maret

2008 pukul 21.20

[6] Rich, Mark. “Formalizing Search Spaces”.

http://pages.cs.wisc.edu/~richm/cs540/notes/search-un.html. Diakses tanggal 2 Maret

2008 pukul 21.30

Page 18: Laporan Tugas AI WaterJug a Star Tanpa Listing

Lampiran

Screen shot aplikasi: