Minggu, 14 Juni 2015

manual book


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.
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:

  1. mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa    memperhatikan konsekuensi ke depan (prinsip “take what you can get now!”).
  2. 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