KECERDASAN BUATAN
Kecerdasan Buatan
dimunculkan oleh seorang professor dari Massachusetts Institute of Technology
(MIT) yang bernama John McCarthy pada tahun 1956 pada saat Dart Mouth
Conference yang dihadiri oleh para peneliti AI.
- Definisi
Kecerdasan Buatan
Banyak cara untuk
mendefinisikan Kecerdasan Buatan, diantaranya adalah:
ü Suatu studi yang
mengupayakan bagaimana agar komputer berlaku cerdas.
ü Studi yang membuat
komputer dapat menyelesaikan persoalan yang sulit.
Kecerdasan Buatan (Artificial
Intelligence) adalah Teknologi yang mensimulasikan
kecerdasan manusia, yaitu bagaimana mendefinisikan dan mencoba menyelesaikan
persoalan menggunakan komputer dengan meniru bagaimana manusia menyelesaikan
dengan cepat.
Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin (komputer) agar dapat melakukan pekerjaan seperti
yang dapat dilakukan manusia. Beberapa macam bidang yang menggunakan
kecerdasan buatan antara lain sistem pakar, permainan komputer (games), logika fuzzy, jaringan
syaraf tiruan dan robotika.
INITIAL STATE
Initial state yang digunakan pada
permainan Stealing Money ini adalah sebuah
uang ( ) . Permainan “Stealing Money” merupakan
permainan strategi yang dimainkan seorang pemain yang bermain melawan komputer.
Karena game ini berbasis AI (Artificial
Intelliginece) atau kecerdasan buatan maka dalam permainan ini komputer dapat berfikir layaknya seorang manusia hingga dapat dikatakan “cerdas”
sehingga dapat dianggap sebagai manusia, oleh karena itu user menerapkan strategi yang tepat untuk menyelesaikan game
ini.
Gambaran awal dari game ini adalah terdapat gambar kapsul
sebanyak 5,2,1,3,4
Pada permainan ini terdapat 5 pilihan menu, yaitu New Game,
Posisi, About, Exit dan Help. Menu New Game untuk memulai permainan
dengan susunan 5,4,3,2,1. Untuk mengubah posisinya pada
pilihan menu Posisi, terdapat susunan 5,3,1,3,5 dan 1,3,5,3,1. Untuk lebih
jelasnya bisa dilihat pada gambar berikut :
Menu About terdapat message box yang memberikan informasi
mengenai data diri saya sebagai orang yang memodifikasi permainan
dan mengenai permainan ini dan akan terdengar suara ketika kita klik about. Help untuk mengetahui cara bermain dari permainan ini
dan akan mengeluarkan suara teriakan Help.
Dan yang terakhir adalah menu Exit untuk mengakhiri dan keluar dari permainan..
Listing Program
/*==============================================================================
* Nama Permainan : Stealing Money
* Bahasa Pemrograman : Strawberry Prolog (Programming in Logic)
* Author : Adeline Fadila
* ==============================================================================
*/
?-
G_Comp_First=0,
G_Take_Last=0,
G_White is
brush(rgb(255,255,255)),
G_kapsul is
bitmap_image("image\\1.bmp",_),
G_Background is
bitmap_image("image\\2.bmp",_),
pen(0,0),
set(pos([5,2,1,3,4])),
beep("sound\\done1.wav"),
window_n( G_Main, _,
win_func, "S T E A L I N G M O N
E Y", 70,70,847,487,_,_,rgb(255,255,255)).
win_func(init) :-
menu( pop_up, _, _,
menu_new(_), "&N E W G A M E"),
menu( normal, _, _,
menu_about(_), "&A B O U T"),
menu( normal, _, _,
menu_exit(_), "&E X I T"),
menu( right, _, _,
menu_help(_), "&H E L P").
menu_new(init) :-
menu( normal, _, _,
menu_userfirst(_), "&User
First"),
menu( normal, _, _,
menu_comfirst(_), "&Computer First").
menu_userfirst(press) :-
(G_Comp_First=0->
set(pos([1,3,4,2,5]))
else
Pos=[1,3,4,2,5],
N is 2*random(3),
el(Pos,A, N),
A2 is A - 1,
replace(Pos2, Pos, A2, N),
set(pos(Pos2))),
update_window(_).
menu_comfirst(press) :-
(G_Comp_First=0->
set(pos([5,1,3,4,2]))
else
Pos=[5,1,3,4,2],
N is 2*random(3),
el(Pos,A, N),
A2 is A - 1,
replace(Pos2, Pos, A2, N),
set(pos(Pos2))),
update_window(_).
menu_comfirst(press) :-
G_Comp_First:=1,
menu_userfirst(press),
G_Comp_First:=0.
menu_about(press) :-
beep("sound\\haha.wav"),
message("This game is an AI (
Artificial Intelligence )", " N a m a :
ADELINE FADILA\n N P M : 5 0 4 1 2 1 4 7\n K e l a s : 3 I A 1 2\n
IF YOU TAKE LAST
YOU WILL ARRESTED BY POLICE\n
\n Don't Take the
last MONEY !", i).
menu_help(press) :-
beep("sound\\help.wav"),
message("Help","Click
under the money which you want to take.
You can take how
much you want but only from one column.", i).
menu_exit(press) :-
close_window(_).
win_func(paint):-
draw_bitmap(0,0,G_Background,_,_),
pos(Pos),
el(Pos,El,N),
for(I,1,El),
X is 50+130*N,
Y is 290- 50*I,
draw_bitmap(X,Y,G_kapsul,_,_),
fail.
win_func(mouse_click(X,Y)):-
X1 is (X- 40)//130,
Y1 is (280-Y)//50,
X1=<5,X>=40,
pos(Pos),
el(Pos,El,X1),
El>Y1,
replace(Pos2, Pos, Y1, X1),
brush(G_White),
rect(100*X1+40,0,100*X1+140,265- 30*Y1),
(Pos2=[0,0,0,0,0]->
set(pos(Pos2)),
end(0)
else
wait(1),
play(Pos3, Pos2),
(Pos3=[0,0,0,0,0]->
end(1)),
set(pos(Pos3))),
update_window(_).
win_func(mouse_click(X,Y)):-
beep.
play(Pos3, Pos2):-
G_Take_Last=0,
count_successes(not_trivial(Pos2))<3,
find_max(Pos2,Max,N),
New is (Max>1,count_successes(not_empty(Pos2)) mod 2=:=1
-> 1 else 0),
replace(Pos3, Pos2, New, N).
play(Pos3, Pos2):-
el(Pos2,A, N),
R:=0,
add_xor(R,Pos2,N),
R<A,
replace(Pos3, Pos2, R, N).
play(Pos3, Pos2):-
find_max(Pos2,Max,N),
Max2 is (Max>1,
random(2)=:=0 ->
Max - 2
else
Max - 1),
replace(Pos3, Pos2, Max2, N).
not_empty(Pos):-
el(Pos,A, _),
A>0.
not_trivial(Pos):-
el(Pos,A, _),
A>1.
el([H|T],H,0).
el([H|T],El,N):-
el(T,El,N1),
N is N1+1.
replace([H|T],[_|T],H,0).
replace([H|T2],[H|T],El,N):-
replace(T2,T,El,N1),
N is N1+1.
find_max([H],H,0).
find_max([H|T],A, N) :-
find_max(T,A1,N1),
(A1<H->
A is H,
N is 0
else
A is A1,
N is N1+1).
add_xor(_,[],_):-!.
add_xor(R,[H|T],0):- !,
add_xor(R, T, -1).
add_xor(R,[H|T],N):-
N1 is N- 1,
R:=R xor H,
add_xor(R, T, N1).
end(Flag):-
Flag=G_Take_Last->
beep("sound\\sirine.wav"),
message("Y O U L O S E","POLICE
COME !! ",!)
else
beep("sound\\wow1.wav"),
message("Y O U W I N","YOU
WIN",i).
STRAWBERRY PROLOG
Sejarah Prolog
Ø Prolog
singkatan dari Programming in Logic.
Ø Dikembangkan
oleh Alain Colmenraurer dan P.Roussel di
Universitas Marseilles Perancis, tahun1972.
Ø Prolog
populer di Eropa untuk aplikasi artificial
intelligence, sedangkan di Amerika peneliti mengembangkan aplikasi yang
sama, yaitu LISP.
Perbedaan Prolog dengan Bahasa Lainnya
v Bahasa
Pemrograman yang Umum (Basic, Pascal, C, Fortran):
1.
diperlukan algoritma/prosedur untuk
memecahkan masalah (procedural languange)
2.
program menjalankan prosedur yang sama
berulang-ulang dengan data masukan yang berbeda-beda.
3.
Prosedur dan pengendalian program
ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur
yang telah dibuat.
v Bahasa
Pemrograman Prolog :
1.
Object
oriented languange atau declarative languange.
2.
Tidak terdapat prosedur, tetapi hanya kumpulan data-data objek (fakta) yang
akan diolah, dan relasi antar objek tersebut membentuk aturan yang diperlukan
untuk mencari suatu jawaban
3.
Programmer menentukan tujuan (goal), dan
komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari
jawabannya.
4.
Dilakukan pembuktian terhadap
cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.
5.
Prolog ideal untuk memecahkan masalah
yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya
untuk memecahkan masalah non numerik.
6.
Prolog bekerja seperti pikiran manusia,
proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan
(jawaban tertentu)
v Aplikasi Prolog :
ü Sistem
Pakar (Expert System)
Program menggunakan teknik pengambilan kesimpulan
dari data-data yang didapat, layaknya seorang ahli.
Contoh
dalam mendiagnosa penyakit
ü Pengolahan
Bahasa Alami (Natural Languange Processing)
Program dibuat agar pemakai dapat berkomunikasi
dengan komputer dalam bahasa manusia sehari-hari, layaknya penterjemah.
ü Robotik
Prolog digunakan untuk mengolah data masukanyang
berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus
dilakukan.
ü Pengenalan
Pola (Pattern Recognition)
Banyak digunakan dalam image processing, dimana komputer dapat membedakan suatu objek
dengan objek yang lain.
ü Belajar
(Learning)
Program belajar dari kesalahan yang pernah
dilakukan, dari pengamataqn atau dari hal-hal yang pernah diminta untuk
dilakukan.
Fakta dan Relasi
- Prolog
terdiri dari kumpulan data-data objek yang merupakan suatu fakta.
- Fakta
dibedakan 2 macam :
1. Menunjukkan
relasi.
2. Menunjukkan
milik/sifat.
- Penulisannya
diakhiri dengan tanda titik “.”
Contoh
:
Fakta
|
Prolog
|
Slamet adalah ayah Amin
|
ayah (slamet, amin).
|
Anita adalah seorang wanita
|
wanita (anita).
|
Angga suka renang dan tenis
|
suka(angga,renang),dan suka (angga,tenis).
|
Aturan (“Rules”)
- Aturan
adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta
berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan.
- Sebuah
aturan dinyatakan sebagai suatu kalimat bersyarat.
- Kata “if” adalah kata yang dikenal
Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.
Contoh
:
Fakta dan Aturan
|
Prolog
|
F : Tino suka apel
A : Yuli suka sesuatu yang disukai
Tino
|
suka(tino, apel).
suka(yuli,Sesuatu) :- suka(tino,Sesuatu).
|
- Setiap
aturan terdiri dari kesimpulan (kepala) dan tubuh.
- Tubuh dapat
terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan
logika “and”.
- Aturan
memiliki sifat then/if conditional
“ Kepala(head) benar jika tubuh (body) benar
”.
Pertanyaan (“Query”)
- Setelah
memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat
mengajukan pertanyaan berdasarkan fakta dan aturan yang ada.
- Penulisannya
diawali simbol “?-“ dan
diakhiri tanda “.”.
Predikat (“Predicate”)
- Predikat
adalah nama simbolik untuk relasi.
Contoh
:
ayah(slamet,amin).
Predikat
dari fakta tersebut ditulis :
ayah(simbol,simbol).
dimana
ayah adalah nama predikat, sedangkan slamet dan amin adalah menujukkan argumen.
Sebuah
predikat dapat tidak memiliki atau memiliki argumen dengan jumlah bebas. Jumlah
argumen suatu predikat disebut aritas
(arity).
ayah(nama) …… aritas-nya 1
ayah(nama1,nama2) …..
aritasnya 2
Syarat-syarat
penulisan nama predikat :
1. Harus
diawali dengan huruf kecil dan dapat diikuti dengan huruf, bilangan atau garis
bawah.
2. Panjang
nama predikat maksimum 250 karakter.
3. Tidak
diperbolehkan menggunakan spasi, tanda minus, tanda bintang dan garis miring.
Variabel
Varibel
adalah besaran yang nilainya dapat berubah-ubah.
Tata cara penulisan variabel :
1.
Nama varibel harus diawali huruf besar
atau garis bawah(_)
2.
Nama variabel dapat terdiri dari huruf,
bilangan, atau simbol dan merupakan kesatuan dengan panjang maksimum 250
karakter.
3.
Nama variabel hendaknya mengandung makna
yang berkaitan dengan data yang dinyatakannya.
-
Contoh :
dari silsilah di atas :
?-
ayah(slamet,Anak).
Anak=budi
;
Anak=badu
No
Dari query di atas akan dicari siapakah anak dari
ayah yang bernama Slamet. Karena mempunyai relasi yang sama (yaitu ayah), variabel Anak akan mencari nilai dari
konstanta suatu fakta/aturan yang sepadan.
Tanda
“;” digunakan bila terdapat
kemungkinan ada lebih dari satu jawaban. “No” berarti tidak ada lagi
kemungkinan jawaban.
Cara
Instalasi Strawberry Prolog
1. Arahkan kursor
pada program Strawberry Prolog yang akan diinstal lalu klik.
2. Setelah
diklik akan muncul window seperti di bawah ini :
Klik OK untuk melanjutkan.
3. Setelah
itu akan muncul window seperti berikut :
Bagian yang ditandai dengan kotak
berwarna hijau digunakan untuk memlih lokasi penyimpanan Strawberry Prolog ini.
Setelah dipilih lokasinya maka klik Unzip.
4. Apabila
sudah selesai diekstrak maka akan muncul window seperti ini. Klik Ok.
5. Setelah
itu akan muncul window untuk menanyakan apakah kita mau menampilkan shortcut
(jalan pintas) pada menu awal. Jika iya pilih Yes dan jika tidak kita bisa
memilih No.
6. Setelah selesai memilih, maka proses instalasi
selesai.
Bagian-bagian
Strawberry Prolog
Setelah proses penginstallan selesai. Klik icon strawberry prolog pada desktop agar dapat masuk ke tampilan awalnya. Setelah diklik akan muncul tampilan seperti berikut.
Pada gambar diatas bagian yang
berada di dalam kotak berwarna ungu adalah lembar kerja, lembar kerja digunakan
untuk menuliskan koding pada pembuatan program. Sedangkan, yang berada di dalam
kotak berwarna hijau adalah lembar output. Lembar output berfungsi untuk
melihat hasil dari program yang telah dibuat. Pada bagian atas lembar kerja dan
lembar output diatas terdapat toolbars seperti berikut
Untuk membuat sebuah project atau
lembar kerja baru klik File - New atau
klik pada toolbar setelah itu akan muncul kotak
dialog pilihan seperti berikut :
Pilih lembar kerja yang akan kita
gunakan maka selanjutnya klik OK.
Kemudian pada toolbar terdapat
shortcut open gunanya untuk membuka file yang telah kita
buat dan kita simpan sebelumnya.
Kemudian shortcut save gunanya untuk menyimpan file atau
project yang telah kita buat. Selanjutnya shortcut run digunakan untuk menjalankan program yang kita
buat sehingga kita bisa melihat tampilan output dari program. Lalu ada compile untuk mengcompile program sehingga apabila
program berhasil atau gagal maka akan muncul pesan di lembar output.
Isi toolbar lainnya yaitu Build EXE, Step,
Proff Tree, ActiveX Browser, Print, Print Preview, About, Help, Trace, Stop
Execution. Build EXE digunakan untuk menjadikan program dalam bentuk EXE. Step digunakan
untuk membuat step. Proof Tree digunakan untuk menampilkan Proof Tree. ActiveX
Browser digunakan untuk Menampilkan ActiveX Browser. Print digunakan untuk
mencetak dokumen.
Print Preview digunakan untuk melihat tampilan sebelum dicetak. About digunakan
untuk menampilkan informasi tentang strawberry prolog. Help digunakan untuk
menampilkan bantuan. Trace digunakan untuk menghentikan program sejenak.Stop
digunakan untuk menghentikan proses eksekusi program.
.
GAME RULES (ATURAN MAIN)
Aturan
main (Rules)
yang digunakan pada game S T E A L – M O N E Y ini adalah sebagai berikut:
1.
User dapat memulai
permainannya terlebih dahulu atau komputer terlebih dahulu, jika user yang
jalan terlebih dahulu maka komputer akan mengambil kapsul begitu juga sebaliknya.
2.
Komputer diberi
pembelajaran untuk mengambil kapsul agar user tidak dapat menghabiskan kapsul.
3.
Komputer juga
diberi pembelajaran untuk memenangkan games ini (menyisakan kapsul agar user
kalah)
Permainan
ini dapat ditemukan pada aplikasi program strawberry prolog. Dengan cara sebagai
berikut :
Pertama
buka program strawberry prolog, kemudian pilih file – open
Pilih
permainan Stealing Money setelah itu klik run untuk memulai permainan
Inilah tampilan permainan S T E A L I N G – M O N E Y pada program strawberry prolog.
Inilah tampilan permainan S T E A L I N G – M O N E Y pada program strawberry prolog.
Yang
mengambil uang paling akhir adalah yang kalah. Jadi jangan sampai mengambil uang
paling akhir (Don’t take the last) .
GOALS
Goal
untuk menyelesaikan game Stealing
Money ini adalah menghabiskan
kapsul, jika ada kapsul yang tersisa terakhir maka user atau komputer kalah
atau permainan berakhir.
KONSEP AI
Permainan
ini mengandung konsep AI ( Artificial Intelligence) dimana komputer bisa
berfikir, mempunyai penalaran dan kecerdasan seperti yang dimiliki oleh
manusia. Komputer mempunyai kecerdasan buatan yang diambil dari knowledge base
dan kemampuan untuk mengambil keputusan dari inference engine.
Didalam
permainan ini,
digunakan algoritma greedy dan brute force.
Algoritma Greedy merupakan metode yang paling umum digunakan untuk
memecahkan masalah optimasi. Algoritma ini sederhana dan lempang. Algoritma
Greedy memecahkan masalah langkah per
langkah, pada setiap langkah:
- mengambil
pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan
(prinsip “take what you can get now!”).
- memilih
optimum lokal pada setiap langkah akan berakhir dengan optimum global.
Brute force adalah sebuah pendekatan yang lempang
(straightforward) untuk memecahkan suatu masalah, biasanya didasarkan pada
pernyataan masalah (problem statement) dan definisi konsep yang dilibatkan.
Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung dan
dengan cara yang jelas (obvious way).
Penerapan algoritma greedy dan brute force pada
permainan ini
adalah bagaimana pemain mengambil langkah yang akan membuat langkah-langkah
selanjutnya lebih optimal dan menjadikannya pemenang. Strategi dalam
pengambilan kapsul dilihat dari banyak kapsul yang ada dan posisi kolom uang tersebut.
Dengan menggunakan algoritma greedy dan brute force pada permainan Stealing
Money maka hasil yang didapatkan akan menjadi lebih optimal.
GLOSARIUM
AI
= Artificial Intelligence, Kecerdasan Buatan