Anda di halaman 1dari 80

MASALAH, RUANG KEADAAN

& PENCARIAN

MATERI KULIAH
KECERDASAN BUATAN
Pokok Bahasan

 Mendefinisikan Masalah dalam Ruang Keadaan


 Representasi Ruang Keadaan
 Metode Pencarian & Pelacakan
Artificial Intelligence
ARTIFICIAL INTELLIGENCE

Input: Output:
MASALAH SOLUSI
Knowledge Inference
Base Engine
Permainan Catur
 Keadaan awal :
 Aturan-aturan untuk melakukan gerakan
secara legal
IF
Bidak putih pada Kotak(e,2),
And Kotak(E,3) Kosong,
And Kotak(E,4) Kosong
Then
Gerakkan bidak dari (E,2) ke (E,4)
 Tujuan yang ingin dicapai adalah posisi pada papan catur yang
menunjukkan kemenangan seseorang terhadap lawannya.
 Kemenangan ini ditandai dengan posisi Raja yang sudah tidak
dapat bergerak lagi.
Ruang Keadaan

 suatu ruang yang berisi semua keadaan yang


mungkin
Penyelesaian masalah secara umum

 Mendefinisikan suatu ruang keadaan;


 Menetapkan satu atau lebih keadaan awal;
 Menetapkan satu atau lebih tujuan;
 Menetapkan kumpulan aturan.
Representasi Ruang Keadaan

 Graph Keadaan
 Pohon Pelacakan
 Pohon AND/OR
 Kasus …
Graph Keadaan

A 3 4 F 1 G
B
4 E
6 7
2 T
M C
8 H 6
5 3
I J
4
D 2
 Lintasan dari M ke T:
 M-A-B-C-E-T
 M-A-B-C-E-H-T
 M-D-C-E-T
 M-D-C-E-H-T
 Lintasan yang menemui jalan buntu (tidak
sampai ke T):
 M-A-B-C-E-F-G
 M-A-B-C-E-I-J
 M-D-C-E-F-G
 M-D-C-E-I-J
 M-D-I-J
Pohon Pelacakan
M Level-0

A D Level-1

B I C Level-2

C J E Level-3
Buntu
E F I H T Level-4
Tujuan
F I H T G J T Level-5
Buntu Buntu
Tujuan
Tujuan
G J
T Level-6
Buntu Buntu
Tujuan
Pohon AND/OR

M M

arc yang terletak


A B C A antara busur B C
berarti AND

(a) (b)
M Level-0

A B C E D C E Level-1

H H Level-2
T T T T
Contoh: Masalah Teko Air
 Ada 2 buah teko masing-masing berkapasitas 4 galon (teko A) dan 3
galon (teko B).
 Tidak ada tanda yang menunjukkan batas ukuran pada kedua teko
tersebut.
 Ada sebuah pompa air yang akan digunakan untuk mengisikan air pada
kedua teko tersebut.
 Permasalahannya: Bagaimanakah kita dapat mengisikan tepat 2 galon
air ke dalam teko yang berkapasitas 4 galon?

Air
Air
tak terbatas
tak terbatas
4 galon
(teko A) 3 galon
(teko B)
Penyelesaian …
 Identifikasi ruang keadaan:
 Permasalahan ini dapat direpresentasikan dengan 2
bilangan integer, yaitu x dan y:
 x = air yang diisikan pada teko 4 galon (teko A);
 y = air yang diisikan pada teko 3 galon (teko B);
 Ruang keadaan: (x,y) sedemikian hingga x{0,1,2,3,4} dan
y{0,1,2,3}.
 Keadaan awal & tujuan:
 Keadaan awal, kedua teko dalam keadaan kosong: (0,0);
 Tujuan, keadaan dimana pada teko 4 galon berisi tepat 2
galon air: (2,n) untuk sembarang n.
Keadaan Awal Tujuan

(0,0) (1,0) (2,0) (3,0) (4,0)

(0,1) (1,1) (2,1) (3,1) (4,1)

(0,2) (1,2) (2,2) (3,2) (4,2)

(0,3) (1,3) (2,3) (3,3) (4,3)


 Aturan-aturan
Aturan
Jika Maka
ke-
1. (x,y) (4,y)
x<4 Isi teko A.
2. (x,y) (x,3)
y<3 Isi teko B.
3. (x,y) (x-d,y)
x>0 Tuangkan sebagian air keluar dari teko A.
4. (x,y) (x,y-d)
y>0 Tuangkan sebagian air keluar dari teko B.
5. (x,y) (0,y)
x>0 Kosongkan teko A dengan membuang airnya
ke tanah.
6. (x,y) (x,0)
y>0 Kosongkan teko B dengan membuang airnya
ke tanah.
7. (x,y) (4,y-(4-x))
x+y  4 dan y > 0 Tuangkan air dari teko B ke teko A
sampai teko A penuh.
8. (x,y) (x-(3-y),3)
x+y  3 dan x > 0 Tuangkan air dari teko A ke teko B
sampai teko B penuh.
9. (x,y) (x+y,0)
x+y  4 dan y > 0 Tuangkan seluruh air dari teko B ke
teko A.
10. (x,y) (0,x+y)
x+y  3 dan x > 0 Tuangkan seluruh air dari teko A ke
teko B.
11. (0,2) (2,0)
Tuangkan 2 galon air dari teko B ke
teko A.
12. (2,y) (0,y)
Kosongkan 2 galon air di teko A
dengan membuang airnya ke tanah.
 Representasi ruang keadaan dengan pohon
pelacakan.

(0,0)

(4,0) (0,3)

(4,3) (0,0) (1,3) (4,3) (0,0) (3,0)


 Salah satu solusi:

Isi Teko A Isi Teko B Aturan yang


(gallon) (gallon) dipakai

0 0 2

0 3 9

3 0 2

3 3 7

4 2 5

0 2 9

2 0 solusi
Contoh: Petani, Sayur, dan Kambing
 Seorang petani akan menyeberangkan seekor
kambing, seekor serigala, dan sayur-sayuran
dengan sebuah boat yang melalui sungai.
 Boat hanya bisa memuat petani dan satu
penumpang yang lain (kambing, serigala atau
sayur-sayuran).
 Jika ditinggalkan oleh petani tersebut, maka
sayur-sayuran akan dimakan oleh kambing, dan
kambing akan dimakan oleh serigala.
Penyelesaian …
 Identifikasi ruang keadaan
 Permasalahan ini dapat dilambangkan dengan
(JumlahKambing, JumlahSerigala, JumlahSayuran,
JumlahBoat).
 Sebagai contoh: Daerah asal (0,1,1,1) berarti pada daerah
asal tidak ada kambing, ada serigala, ada sayuran, dan
ada boat.
 Keadaan Awal
 Daerah asal: (1,1,1,1)
 Daerah seberang: (0,0,0,0)
 Tujuan
 Daerah asal: (0,0,0,0)
 Daerah seberang: (1,1,1,1)
 Aturan-aturan

Aturan
Aturan
ke-
1. Kambing menyeberang
2. Sayuran menyeberang
3. Serigala menyeberang
4. Kambing kembali
5. Sayuran kembali
6. Serigala kembali
7. Boat kembali
 Salah satu solusi:

Daerah
Daerah Asal Aturan yang dipakai
Seberang
(1,1,1,1) (0,0,0,0) 1

(0,1,1,0) (1,0,0,1) 7

(0,1,1,1) (1,0,0,0) 3

(0,0,1,0) (1,1,0,1) 4

(1,0,1,1) (0,1,0,0) 2

(1,0,0,0) (0,1,1,1) 7

(1,0,0,1) (0,1,1,0) 1

(0,0,0,0) (1,1,1,1) solusi


Metode pencarian & pelacakan

 Teknik Search menentukan simpul mana


yang dibuat lebih dulu dan mana yang
kemudian sampai ditemukannya simpul
solusi
 Dari proses search dihasilkan diagram tree,
sehingga perlu penjelasan beberapa
terminologi diagram tree seperti berikut :
Metode pencarian & pelacakan
 Simpul
 Level/Cabang a
 Path
 Parent
b c d
 Child
 Root
e f
 Leave
 Jumlah Ruang Simpul
 Langkah solusi (Solusi)
Metode Pencarian & pelacakan
 Pencarian Buta (Blind Search)
 Breadth-First Search
 Depth-First Search
 Pencarian Terbimbing (Heuristics Search)
 Generate & Test
 Hill Climbing
 Best-First Search
 Tabu Search
 Simulated Annealing
 Uniformed Cost Search (UCS)
 Greedy Algorithm
 A/A* Algorithm
Perbandingan
Uninformed dan Informed Search
 Uninformed = memanfaatkan informasi
tertentu
 Informed = memanfaatkan informasi tertentu
 Informasi tertentu tersebut disebut
Heuristik
 Heuristik berfungsi untuk mempercepat
proses pencarian
 Heuristik = Intelligent
BLIND SEARCH (PELACAKAN BUTA)

 Merupakan sekumpulan prosedur yg


digunakan dlm melacak ruang keadaan.
 Menguji seluruh pohon dgn cara yg teratur
dg menggunakan semua operator shg
menghasilkan suatu solusi.
 Lebih tepat u/ soal-soal kecil dg beberapa
ruang keadaan dan tepat u/ komputer
berkecepatan tinggi.
Breadth-First Search

 Pada metode Breadth-First Search, semua node


pada level n akan dikunjungi terlebih dahulu
sebelum mengunjungi node-node pada level
n+1.
 Pencarian dimulai dari node akar terus ke level
ke-1 dari kiri ke kanan, kemudian berpindah ke
level berikutnya demikian pula dari kiri ke kanan
hingga ditemukannya solusi
A

B C D

E F G H I J K L M
 Keuntungan:
 Tidak akan menemui jalan buntu.
 Jika ada satu solusi, maka breadth-first search
akan menemukannya. Dan jika ada lebih dari satu
solusi, maka solusi minimum akan ditemukan.
 Kelemahan:
 Membutuhkan memori yang cukup banyak,
karena menyimpan semua node dalam satu
pohon.
 Membutuhkan waktu yang cukup lama, karena
akan menguji n level untuk mendapatkan solusi
pada level yang ke-(n+1)
Depth-First Search

 Pada Depth-First Search, proses pencarian


akan dilakukan pada semua anaknya sebelum
dilakukan pencarian ke node-node yang selevel.
 Pencarian dimulai dari node akar ke level yang
lebih tinggi. Proses ini diulangi terus hingga
ditemukannya solusi
A

C
DEPTH FIRST
(Pelacakan Pertama Mendalam)
1

2 8 11

9 12
3 5 14

10 13 15 16
4 6 7
3
 Keuntungan
 Membutuhkan memori yang relatif kecil, karena
hanya node-node pada lintasan yang aktif saja
yang disimpan.
 Secara kebetulan, metode depth-first search akan
menemukan solusi tanpa harus menguji labih
banyak lagi dalam ruang keadaan.
 Kelemahan
 Memungkinkan tidak ditemukannya tujuan yang
diharapkan.
 Hanya akan mendapatkan 1 solusi pada setiap
pencarian.
Perbandingan BFS dan DFS
(Sama-sama non heuristik search)

Ilustrasi proses BFS


Ilustrasi proses DFS

Kualitasnya dibedakan berdasarkan :


 Jumlah ruang simpul
 Solusi (Jumlah langkah mencapai Solusi)

Breadth First Search (BFS) Depth First Search (DFS)


 Jumlah ruang simpul relatif  Jumlah ruang simpul relatif

(umumnya) lebih banyak (umumnya) lebih sedikit


 Solusi dijamin optimal  Solusi tidak dijamin optimal
Pencarian Heuristik
 Kasus 8-puzzle

Keadaan Awal Tujuan

1 2 3 1 2 3

7 8 4 8 4

6 5 7 6 5
 Operator
 Ubin kosong geser ke kanan
 Ubin kosong geser ke kiri
 Ubin kosong geser ke atas
 Ubin kosong geser ke bawah
 Langkah awal
Tujuan
1 2 3 1 2 3
8 4 7 8 4
7 6 5 6 5
kiri atas
kanan

1 2 3 1 2 3 1 2 3
7 8 4 7 8 4 7 4
6 5 6 5 6 8 5
Nilai heuristik …
 Untuk jumlah ubin yang menempati posisi yang
benar  jumlah yang lebih tinggi adalah yang lebih
diharapkan (lebih baik)
Tujuan
1 2 3 1 2 3
8 4 7 8 4
7 6 5 6 5
kiri atas
kanan

1 2 3 1 2 3 1 2 3
7 8 4 7 8 4 7 4
6 5 6 5 6 8 5
h=6 h=4 h=5
 Untuk jumlah ubin yang menempati posisi yang
salah  jumlah yang lebih kecil adalah yang
diharapkan (lebih baik).
Tujuan
1 2 3 1 2 3
8 4 7 8 4
7 6 5 6 5
kiri atas
kanan

1 2 3 1 2 3 1 2 3
7 8 4 7 8 4 7 4
6 5 6 5 6 8 5
h=2 h=4 h=3
 Menghitung total gerakan yang diperlukan untuk
mencapai tujuan  jumlah yang lebih kecil adalah
yang diharapkan (lebih baik).
Tujuan
1 2 3 1 2 3
8 4 7 8 4
7 6 5 6 5
kiri atas
kanan

1 2 3 1 2 3 1 2 3
7 8 4 7 8 4 7 4
6 5 6 5 6 8 5
h=2 h=4 h=4
Generate & Test
 Pada prinsipnya metode ini merupakan penggabungan antara
depth-first search dengan pelacakan mundur (backtracking),
yaitu bergerak ke belakang menuju pada suatu keadaan awal.
 Algoritma:
1. Bangkitkan suatu kemungkinan solusi (membangkitkan
suatu titik tertentu atau lintasan tertentu dari keadaan
awal).
2. Uji untuk melihat apakah node tersebut benar-benar
merupakan solusinya dengan cara membandingkan node
tersebut atau node akhir dari suatu lintasan yang dipilih
dengan kumpulan tujuan yang diharapkan.
3. Jika solusi ditemukan, keluar. Jika tidak, ulangi kembali
langkah yang pertama.
Kasus: Traveling Salesman Problem (TSP).

 Seorang salesman ingin mengunjungi n kota. Jarak


antara tiap-tiap kota sudah diketahui. Ingin diketahui rute
terpendek dimana setiap kota hanya boleh dikunjungi
tepat 1 kali.

A 8 B

3 4
7 5

D 6 C
 Generate & test akan membangkitkan semua solusi
yang mungkin:
 A – B – C – D

 A – B – D – C

 A – C – B – D

 A – C – D – B, dll

A B C D

B C D

C D B D C B

D C D B B C
 Alur pencarian

Panjang
Pencarian Panjang
Lintasan Lintasan terpilih Lintasan
ke- Lintasan
terpilih
1. ABCD 19 ABCD 19
2. ABDC 18 ABDC 18
3. ACBD 12 ACBD 12
4. ACDB 13 ACBD 12
5. ADBC 16 ACBD 12
6. ADCB 18 ACBD 12
7. BACD 17 ACBD 12
8. BADC 21 ACBD 12
9. BCAD 15 ACBD 12
10. BCDA 18 ACBD 12
11. BDAC 14 ACBD 12
12. BDCA 13 ACBD 12
Panjang
Pencarian Panjang
Lintasan Lintasan terpilih Lintasan
ke- Lintasan
terpilih
13. CABD 15 ACBD 12
14. CADB 14 ACBD 12
15. CBAD 20 ACBD 12
16. CBDA 16 ACBD 12
17. CDAB 21 ACBD 12
18. CDBA 18 ACBD 12
19. DABC 20 ACBD 12
20. DACD 15 ACBD 12
21. DBAC 15 ACBD 12
22. DBCA 12 ACBD atau DBCA 12
23. DCAB 17 ACBD atau DBCA 12
24. DCBA 19 ACBD atau DBCA 12
 Salah satu kelemahan dari metode generate & test
ini adalah perlu membangkitkan semua
kemungkinan sebelum dilakukan pengujian,
sehingga membutuhkan waktu yang cukup besar
dalam pencariannya.
Pendakian Bukit (Hill Climbing)
 Metode ini hampir sama dengan metode
pembangkitan & pengujian, hanya saja proses
pengujian dilakukan dengan menggunakan fungsi
heuristik.
 Pembangkitan keadaan berikutnya sangat
tergantung pada feedback dari prosedur
pengetesan.
 Tes yang berupa fungsi heuristic ini akan
menunjukkan seberapa baiknya nilai terkaan yang
diambil terhadap keadaan-keadaan lainnya yang
mungkin.
Simple Hill Climbing
Algoritma
 Mulai dari keadaan awal, lakukan pengujian: jika merupakan tujuan,
maka berhenti; dan jika tidak, lanjutkan dengan keadaan sekarang
sebagai keadaan awal.
 Kerjakan langkah-langkah berikut sampai solusinya ditemukan, atau
sampai tidak ada operator baru yang akan diaplikasikan pada
keadaan sekarang:
 Cari operator yang belum pernah digunakan; gunakan operator ini untuk
mendapatkan keadaan yang baru.
 Evaluasi keadaan baru tersebut.
 Jika keadaan baru merupakan tujuan, keluar.
 Jika bukan tujuan, namun nilainya lebih baik daripada keadaan sekarang,
maka jadikan keadaan baru tersebut menjadi keadaan sekarang.
 Jika keadaan baru tidak lebih baik daripada keadaan sekarang, maka
lanjutkan iterasi.
Kasus: TSP
 Operator  Tukar kota ke-i dengan kota ke-j (Tk i,j)
 Untuk 4 kota:
 Tk 1,2 : tukar kota ke-1 dengan kota ke-2.
 Tk 1,3 : tukar kota ke-1 dengan kota ke-3.
 Tk 1,4 : tukar kota ke-1 dengan kota ke-4.
 Tk 2,3 : tukar kota ke-2 dengan kota ke-3.
 Tk 2,4 : tukar kota ke-2 dengan kota ke-4.
 Tk 3,4 : tukar kota ke-3 dengan kota ke-4.
 Untuk N kota, akan ada operator sebanyak:
N!
2!( N  2)!
(19) ABCD
ABCD
Tk 1,2 Tk 1,3
Tk 2,3 Tk 3,4 Tk 4,1 Tk 2,4
(17) BACD
BACD ACBD
ACBD ABDC
ABDC DBCA
DBCA ABDC
ABDC CBAD
CBAD
Tk 1,2
Tk 4,1
(15) Tk 2,3 Tk 3,4 Tk 2,4 Tk 1,3
ABCD
ABCD BCAD
BCAD BADC
BADC DACB
DACB BDCA
BDCA CABD
CABD

Tk 1,2 Tk 2,3 Tk 3,4 Tk 4,1 Tk 1,3


Tk 2,4
(20) (18) (19) (14)
CBAD
CBAD BACD
BACD BCDA
BCDA DCAB
DCAB BDAC
BDAC ACBD
ACBD

Tk 1,2 Tk 2,3 Tk 3,4 Tk 4,1 Tk 2,4 Tk 1,3


(15) (21) (13)
DBAC
DBAC BADC
BADC BDCA
BDCA CDAB
CDAB BCAD
BCAD ADBC
ADBC

Tk 1,2 Tk 2,3 Tk 3,4 Tk 4,1 Tk 2,4 Tk 1,3


(12)
DBCA
DBCA BCDA
BCDA BDAC
BDAC BDAC
BDAC CBAD
CBAD ADCB
ADCB

Tk 1,2 Tk 2,3 Tk 3,4 Tk 4,1 Tk 1,3


Tk 2,4
(19) (15) (13) (15) (16)
BDCA
BDCA DCBA
DCBA DBAC
DBAC ACDB
ACDB DACB
DACB CBDA
CBDA
 Apabila hanya digunakan 4 operator saja:

(19) ABCD
ABCD

Tk 1,2
Tk 3,4 Tk 4,1
Tk 2,3
(17) BACD
BACD ACBD
ACBD ABDC
ABDC DBCA
DBCA

Tk 3,4
Tk 1,2 Tk 2,3
Tk 4,1
(15)
ABCD
ABCD BCAD
BCAD BADC
BADC DACB
DACB

Tk 3,4
Tk 1,2 Tk 2,3
(17) Tk 4,1 (17)
(20) (18)
CBAD
CBAD BACD
BACD BCDA
BCDA DCAB
DCAB
 Pada simple hill climbing, ada 3 masalah
yang mungkin:
 Algoritma akan berhenti kalau mencapai nilai
optimum local.
 Urutan penggunaan operator akan sangat
berprngaruh pada penemuan solusi.
 Tidak diijinkan untuk melihat satupun langkah
sebelumnya.
Steepest Ascent Hill Climbing
 Steepest-ascent hill climbing sebenarnya hampir sama
dengan simple hill climbing, hanya saja gerakan
pencarian tidak dimulai dari posisi paling kiri.
 Gerakan selanjutnya dicari berdasarkan nilai heuristik
terbaik.
 Dalam hal ini urutan penggunaan operator tidak
menentukan penemuan solusi.
 Algoritma
 Mulai dari keadaan awal, lakukan pengujian: jika
merupakan tujuan, maka berhenti; dan jika tidak, lanjutkan
dengan keadaan sekarang sebagai keadaan awal.
 Kerjakan hingga tujuan tercapai atau hingga iterasi tidak
memberikan perubahan pada keadaan sekarang.
 Tentukan SUCC sebagai nilai heuristic terbaik dari
successor-successor.
 Kerjakan untuk tiap operator yang digunakan oleh
keadaan sekarang:
 Gunakan operator tersebut dan bentuk keadaan baru.
 Evaluasi keadaan baru tersebut. Jika merupakan tujuan,
keluar. Jika bukan, bandingkan nilai heuristiknya dengan
SUCC. Jika lebih baik, jadikan nilai heuristic keadaan baru
tersebut sebagai SUCC. Namun jika tidak lebih baik, nilai
SUCC tidak berubah.
 Jika SUCC lebih baik daripada nilai heuristic keadaan
sekarang, ubah node SUCC menjadi keadaan sekarang.
Kasus: TSP

(19) ABCD
ABCD
Tk 1,2 Tk 1,3
Tk Tk Tk 2,4
Tk 2,3
(17) (12) (18) 3,4 4,1 (12) (18) (20)
BACD
BACD ACBD
ACBD ABDC
ABDC DBCA
DBCA ADCB
ADCB CBAD
CBAD

Tk 1,2 Tk Tk Tk 2,4 Tk 1,3


(15) Tk 2,3(13) 3,4 4,1(19)
(19) (16) (15)
CABD
CABD ABCD
ABCD ACDB
ACDB DCBA
DCBA ADBC
ADBC BCAD
BCAD
 Pada steepest-ascent hill climbing ini, ada 3
masalah yang mungkin, yaitu:
 Local optimum: keadaan semua tetangga lebih
buruk atau sama dengan keadaan dirinya.
 Plateau: keadaan semua tetangga sama dengan
keadaan dirinya.
 Ridge: local optimum yang lebih disebabkan
karena ketidakmampuan untuk menggunakan 2
operator sekaligus.
Best-First Search
 Metode best-first search ini merupakan kombinasi dari metode
depth-first search dan metode breadth-first search dengan
mengambil kelebihan dari kedua metode tersebut.
 Apabila pada pencarian dengan metode hill climbing tidak
diperbolehkan untuk kembali ke node pada level yang lebih
rendah meskipun node pada level yang lebih rendah tersebut
memiliki nilai heuristik yang lebih baik, lain halnya dengan
metode best-first search ini.
 Pada metode best-first search, pencarian diperbolehkan
mengunjungi node yang ada di level yang lebih rendah, jika
ternyata node pada lebih yang lebih tinggi ternyata memiliki nilai
heuristik yang lebih buruk.
 Algoritma:
 Tempatkan node awal A pada antrian OPEN.
 Kerjakan langkah-langkah berikut hingga tujuan
ditemukan atau antrian OPEN sudah kosong:
 Ambil node terbaik dari OPEN;
 Bangkitkan semua successornya;
 Untuk tiap-tiap successor kerjakan:
 Jika node tersebut belum pernah dibangkitkan
sebelumnya, evaluasi node tersebut dan masukkan ke
OPEN;
 Jika node tersebut sudah pernah dibangkitkan
sebelumnya, ubah parent jika lintasan baru lebih
menjanjikan. Hapus node tersebut dari antrian OPEN.
Antrian OPEN
A [A]
A [D,C,B]

B C D
3 5 7

A [C,F,B,E]

B C D
3 5
E F
2 4

A [G,F,B,E,H]

B C D
3
G H E F
5 1 2 4
Tabu Search
 Tabu Search merupakan suatu metode optimasi yang
menggunakan short-term memory untuk menjaga agar proses
pencarian tidak terjebak pada nilai optimum lokal.
 Metode ini menggunakan Tabu List untuk menyimpan
sekumpulan solusi yang baru saja dievaluasi.
 Selama proses optimasi, pada setiap iterasi, solusi yang akan
dievaluasi akan dicocokkan terlebih dahulu dengan isi Tabu List
untuk melihat apakah solusi tersebut sudah ada pada Tabu List.
 Apabila solusi tersebut sudah ada pada Tabu List, maka solusi
tersebut tidak akan dievaluasi lagi pada iterasi berikutnya.
 Apabila sudah tidak ada lagi solusi yang tidak menjadi anggota
Tabu List, maka nilai terbaik yang baru saja diperoleh
merupakan solusi yang sebenarnya.
Algoritma:
 Tetapkan:
 X = Matriks input berukuran nxm.
 MaxItr = maksimum iterasi.
 S = bangkitkan solusi secara random.
 GlobalMin = FCost(S).
 Best = S.
 TabuList = [].
 Kerjakan dari k=1 sampai MaxItr:
 BestSoFar = FCost(S).
 BestMove = S.
 Kerjakan dari i=1 sampai (n-1):
 Kerjakan dari j=i sampai n:
 L = Tukar(S[i],S[j]).
 Cost = FCost(L).
 Jika (L TabuList) atau (Cost < GlobalMin), kerjakan:
 Jika (Cost < BestSoFar), kerjakan

BestSoFar = Cost.
BestMove = L.
 S = BestMove.
 Tambahkan S ke TabuList.
 Jika BestSoFar < GlobalMin, kerjakan:
 GlobalMin = BestSoFar.
 Best = BestMove.

Contoh …
Simulated Annealing
 Ide dasar simulated annealing terbentuk dari pemrosesan logam.
 Annealing (memanaskan kemudian mendinginkan) dalam
pemrosesan logam ini adalah suatu proses bagaimana membuat
bentuk cair berangsur-angsur menjadi bentuk yang lebih padat
seiring dengan penurunan temperatur.
 Simulated annealing biasanya digunakan untuk penyelesaian
masalah yang mana perubahan keadaan dari suatu kondisi ke
kondisi yang lainnya membutuhkan ruang yang sangat luas,
misalkan perubahan gerakan dengan menggunakan permutasi
pada masalah Travelling Salesman Problem.
 Pada simulated annealing, ada 3 parameter yang sangat
menentukan, yaitu: tetangga, gain, temperatur, pembangkitan
bilangan random.
 Algoritma
 Evaluasi keadaan awal. Jika keadaan awal merupakan tujuan, maka
pencarian berhasil dan KELUAR. Jika tidak demikian, lanjutkan dengan
menetapkan keadaan awal sebagai kondisi sekarang.
 Inisialisasi BEST_SO_FAR untuk keadaan sekarang.
 Inisialisasi T sesuai dengan annealing schedule.
 Kerjakan hingga solusi ditemukan atau sudah tidak ada operator baru
lagi akan diaplikasikan ke kondisi sekarang.
 Gunakan operator yang belum pernah digunakan tersebut untuk
menghasilkan kondisi baru.
 Evaluasi kondisi yang baru dengan menghitung:
E = nilai sekarang – nilai keadaan baru.
 Jika kondisi baru merupakan tujuan, maka pencarian berhasil dan KELUAR.
 Jika bukan tujuan, namun memiliki nilai yang lebih baik daripada kondisi
sekarang, maka tetapkan kondisi baru sebagai kondisi sekarang. Demikian
pula tetapkan BEST_SO_FAR untuk kondisi yang baru tadi.
 Jika nilai kondisi baru tidak lebih baik dari kondisi sekarang, maka tetapkan
kondisi baru sebagai kondisi sekarang dengan probabilitas:
Langkah ini biasanya dikerjakan dengan membangkitkan suatu bilangan
random r pada range [0 1]. Jika r < p’, maka perubahan kondisi baru menjadi
kondisi sekarang diperbolehkan. Namun jika tidak demikian, maka tidak akan
dikerjakan apapun.
 Perbaiki T sesuai dengan annealing scheduling.
 BEST_SO_FAR adalah jawaban yang dimaksudkan.
 Secara umum ada 3 hal pokok pada
simulated annealing, yaitu:
a. Nilai awal untuk temperatur (T0).
Nilai T0 biasanya ditetapkan cukup besar (tidak
mendekati nol), karena jika T mendekati 0 maka
gerakan simulated annealing akan sama dengan
hill climbing. Biasanya temperatur awal ini
ditetapkan sebesar 2 kali panjang suatu jalur yang
dipilih secara acak.
b. Kriteria yang digunakan untuk memutuskan
apakah temperatur sistem seharusnya dikurangi.
c. Berapa besarnya pengurangan temperatur dalam
setiap waktu.
Pseudocode

Function PjgJalur(L,X,Y): real;


 Panjang = 0;
 For i=1 to (NC-1) do
 Panjang = Panjang + ((XL(i+1) – XL(i))2 + (YL(i+1) –
YL(i))2);
 PjgJalur = Panjang;
Function T0(MTemp:integer): real;
 LMax = 0;
 For i=1 to MTemp do
 LA = ambil jalur sembarang
 Len = PjgJalur(LA)
 If Len > LMax then LMax = Len
 T0 = 2*LMax
Function JalurBaru(L): arrayNC;
 Bangkitkan 2 bilangan random N1 dan N2 antara 1
sampai NC dengan N1 < N2
 Depan = L(1) sampai L(N1-1);
 Tengah = L(N1) sampai L(N2);
 Belakang = L(N2+1) sampai L(NC);

 Bangkitkan bilangan random r.

 If r < 0,5 then


 DepanBaru = Depan.
 TengahBaru(1..NT) = Tengah(NT..1); dengan NT=N2-
N1+1.
 BelakangBaru = Belakang.
 Lbaru = [DepanBaru TengahBaru BelakangBaru]
 else
 Sementara = [Depan Belakang]; dengan M elemen.
 Bangkitkan bilangan random r dengan nilai antara 1
sampai M.
 DepanBaru = Sementara(1..r).
 TengahBaru = Tengah.
 BelakangBaru = Sementara(r+1..M).
 Lbaru = [DepanBaru TengahBaru BelakangBaru]
 JalurBaru = LBaru
 Procedure SimulatedAnneal (MTemp:integer;
NC:integer; X,Y:real; MItr:integer; MSukses:integer;
decT:real);
 T = T0(MTemp);
 L = [1 2 3 … NC];
 MaxIterasi = MItr*NC;
 MaxSukses = MSukses*NC;
 JalurTerpendek = L;
 PjgJalurTerpendek = PjgJalur(L);
 Sukses = 1;
 While Sukses > 0
 Sukses = 0;
 MinPjgJalur = PjgJalur(L);
 For i=1 to MaxIterasi do
 Jalur = JalurBaru(L);
 Pjg = PjgJalur(Jalur);
 If Pjg < MinPjgJalur then
 MinPjgJalur = Pjg;
 Lbaru = Jalur;
 Sukses = Sukses +1;
 If MinPjgJalur < PjgJalurTerpendek then
PjgJalurTerpendek = MinPjgJalur;
JalurTerpendek = Lbaru;
 If Sukses = MaxSukses then BREAK;
 else
 Bangkitkan bilangan random r;
 If r < e-(Pjg-MinPjgJalur)/T then Lbaru=Jalur;
 L = Lbaru;
 T = decT * T;
Kasus: TSP
 Operator  Ada beberapa operator yang bisa digunakan. Berikut ini
adalah salah satu contoh operator untuk menentukan jalur. Misalkan
jumlah kota yang akan dikunjungi adalah NC.
 Kota-kota disimpan pada larik L.
 Bangkitkan 2 bilangan random antara 1 sampai NC, misalkan kedua
bilangan itu adalah N1 dan N2 dengan N1 < N2.
 Depan = L(1) sampai L(N1-1).
 Tengah = L(N1) sampai L(N2).
 Belakang = L(N2+1) sampai L(NC).
 Bangkitkan bilangan random r, apabila r < 0,5; maka:
 DepanBaru = Depan.
 TengahBaru = Tengah dengan urutan dibalik.
 BelakangBaru = Belakang.
 Lbaru = [DepanBaru TengahBaru BelakangBaru]
 Jika r  0,5; maka kerjakan:
 Sementara = [Depan Belakang], misalkan memiliki M elemen.
 Bangkitkan bilangan random r dengan nilai antara 1 sampai M.
 DepanBaru = Sementara(1:r).
 TengahBaru = Tengah.
 BelakangBaru = Sementara(r+1:M).
 Lbaru = [DepanBaru TengahBaru BelakangBaru]
 Misalkan jalur yang ada adalah:
L = [4 3 6 9 11 2 5 1 7 8 12 10]  NC=12

 Bangkitkan bilangan random, misal: N1=4 dan N2=10. Didapatkan:


 Depan = [4 3 6].
 Tengah = [9 11 2 5 1 7 8].
 Belakang = [12 10].
 Bangkitkan bilangan random r, apabila r < 0,5; maka:
 DepanBaru = [4 3 6].
 TengahBaru = [8 7 1 5 2 11 9].
 BelakangBaru = [12 10].
 Lbaru = [4 3 6 8 7 1 5 2 11 9 12 10]
 Jika r  0,5; maka kerjakan:
 Sementara = [4 3 6 12 10], M=5.
 Bangkitkan bilangan random r, misal r=2.
 DepanBaru = [4 3].
 TengahBaru = [9 11 2 5 1 7 8].
 BelakangBaru = [6 12 10].
 Lbaru = [4 3 9 11 2 5 1 7 8 6 12 10]
Contoh …
Sekilas Pemrograman
PROLOG
Sekilas Pemrograman PROLOG
Knowledge
Manusia Manusia
Pemberian knowledge bisa membuat manusia menjadi intelligent
(cerdas)

Knowledge
Manusia PROLOG
Pemberian knowledge diharapkan bisa membuat komputer menjadi
intelligent (cerdas) seperti layaknya manusia

Knowledge = Fakta + Rule

Pada PROLOG ada fasilitas untuk memberikan Fakta dan Rule


yaitu melalui Clauses
Elemen-elemen Program PROLOG
 Domains
 Predicates
 Clauses
 Goal

 Aturan penulisan kode pada prolog


 Tipe data pada prolog : symbol, integer, real, char, string,
boolean
 Cara kerja program prolog : Resolusi, Matching, …

Anda mungkin juga menyukai