Minggu, 26 Desember 2010

Natural Language Programming (NPL)

BAHASA NATURAL, ALAMI – NATURAL LANGUAGE


            Bahasa Natural merupakan cara penyajian suatu algoritma yang paling sederhana dan paling mudah dimengerti (bagi saya dan mungkin, kebanyakan dari mereka yang baru belajar algoritma). Mengapa?
Mungkin karena Bahasa Natural  adalah bahasa yang biasa kita gunakan sehari – hari namun tetap sesuai dengan kaidah bahasa yang baku. Ada beberapa hal yang perlu diperhatikan jika kita akan menyajikan suatu algoritma sebuah program dengan bahasa natural, antara lain Start dan End yang harus dituliskan secara explisit. Sepengalaman saya dalam menggunakan Bahasa Natural, Start biasanya dituliskan sebagai ‘inisialisasi’ atau ‘Mulai’ dan merupakan langkah pertama dalam algoritma, sedangkan End sendiri
dituliskan sebagai ‘selesai’ dan dituliskan pada akhir algoritma. Namun sebenarnya tidak ada aturan baku dalam hal penamaan lain dari Start dan End itu sendiri, jadi terserah namun tetap mengandung arti/maksud yang sama.

             Pada artikel sebelumnya telah kita bahas mengenai dasar algoritma dan sedikit tentang cara penyajiannya. Pada artikel lanjutan kali ini, kita akan bahas lebih detail lagi tentang cara penyajian algoritma,
yang meliputi Natural Language (Bahasa Natural, alami), Flowchart, Pseudo-code, serta langsung dengan  Bahasa Pemrograman tertentu. Sekali lagi saya tekankan bahwa yang kita bahas, yaitu Algoritma, sangat penting perannya dalam Pemrograman Komputer. bisa dikatakan bahwa Algoritma merupakan inti dari Pemrograman itu sendiri.
Jadi, sangat disarankan untuk lebih serius dalam mempelajari Algoritma dalam hubungannya dengan Pemrograman Komputer ini. Dalam contoh – contoh di bawah ini mungkin terdapat beberapa istilah yang belum pernah di dengar, seperti variabel, konstanta, dll. Variabel/ variable sendiri adalah sejumlah alokasi space memori yang digunakan untuk menyimpan sebuah data secara sementara, dan nilainya dapat diubah – ubah. Sedangkan konstanta mirip dengan variabel, namun nilainya tetap tidak dapat diubah selama program berjalan.
Oke, tanpa berpanjang kata lagi, langsung aja kita bahas satu per satu cara penyajian algoritma ini.  

        Salah satu contoh sederhana adalah algoritma untuk menentukan sebuah bilangan adalah ganjil atau genap (mungkin ini adalah contoh/ latihan pertama Anda waktu belajar algoritma di kampus, hahaha..).
Jadi diberikan input sebuah bilangan dari user, dan program akan secara otomatis menentukan dan memberikan output berupa informasi genap atau ganjil. Coba perhatikan :

1.  Inisialisasi
2.  Input sebuah bilangan, masukkan ke dalam sebuah variabel, misalkan saja bil.
3.  Apakah bil modulus 2 sama dengan nol?
-  Jika ya, maka bilangan tersebut adalah bilangan genap.
-  Jika tidak, maka sudah dapat dipastikan bahwa bilangan tersebut adalah bilangan ganjil.
4.  Tampilkan jenis bilangan (genap, atau ganjil).
5.  Apakah ingin mengulang proses?
-  Jika ya, kembali ke langkah 2.
-  Jika tidak, langsung ke langkah 5 (selesai).
5.  Selesai.

             Contoh di atas sangat sederhana, dan sangat mudah untuk dimengerti. Mungkin ada yang belum tahu modulus? Bagi yang belum tahu, sekarang saya kasih tahu.. Jadi modulus itu adalah sisa hasil pembagian. Apa hubungannya sama genap ganjil? Oke, jadi yang namanya bilangan genap adalah bilangan yang habis dibagi oleh 2, atau dengan kata lain, sisa pembagiannya adalah nol. Nah, jika ada bilangan yang dimoduluskan dengan 2 hasilnya engga nol, sudah pasti bilangan tersebut adalah ganjil. Hampir seluruh bahasa pemrograman sudah menyediakan operator modulus ini secara built-in. Biasanya dilambangkan dengan simbol persen (%) –> 3 % 2 == 1. Kalo 5 % 3 == ?? bisa ngitung kan? :-p
Untuk Bahasa Natural, saya rasa cukup segitu aja. Menurut pengalaman, saya jarang disuru buat algoritma dengan bahasa natural, lebih sering dengan menggunakan Flowchart. Tapi tetap cara ini harus dikuasai dengan baik!


 ISI :

Natural language programming - Pemrograman Bahasa Alami (NLP) - adalah cara ontologi-dibantu pemrograman dalam hal kalimat bahasa alam, misalnya Bahasa Inggris. Sebuah dokumen terstruktur dengan Content, bagian dan sub-bagian untuk penjelasan kalimat bentuk dokumen NLP, yang sebenarnya adalah sebuah program komputer. Sebuah contoh dari pemrograman bahasa alami adalah dalam "sEnglish" yang pendek untuk "sistem bahasa Inggris".

Unit terkecil dari pernyataan di NLP adalah kalimat. Setiap kalimat dinyatakan dalam bentuk konsep dari ontologi yang mendasari, atribut dalam ontologi itu dan nama benda-benda dalam huruf kapital. Dalam sebuah teks NLP setiap kalimat jelas kompilasi menjadi panggilan prosedur dalam bahasa pemrograman yang mendasari tingkat tinggi seperti [[MATLAB]], [[Oktaf]], [[Scilab]], [[Python (bahasa pemrograman) | Python]] , dll

Bahasa simbolik seperti [[Mathematica]] mampu [bahasa Diartikan [| ditafsirkan]] pengolahan pertanyaan oleh kalimat. Hal ini dapat memungkinkan permintaan interaktif seperti yang diterapkan di [[Wolfram Alpha]] (lihat link eksternal). Perbedaan antara dan NLP adalah bahwa yang kedua membangun sebuah program tunggal atau perpustakaan rutinitas yang diprogram melalui kalimat bahasa alam dengan menggunakan ontologi yang mendefinisikan struktur data yang tersedia dalam bahasa pemrograman tingkat tinggi.

Sebuah teks contoh dari program bahasa NLP Inggris (dalam sEnglish) adalah sebagai berikut:

yang mendefinisikan skema kontrol umpan balik menggunakan [[sliding mode kontrol]] metode. Catatan ini menjelaskan NLP dalam bentuk umum, tanpa spesifik tentang bahasa pemrograman tingkat tinggi yang mendasari.


Mengapa menuliskan NLP ?

Program bahasa Alam gunakan kalimat, seksi, sub seksi, bagian ontologi deskripsi, referensi dan data meta pada penulis, sama seperti dokumen biasa. Oleh karena itu NLPs sama dalam tampilannya manual administratif atau teknis, publikasi teknik atau ilmu pengetahuan, dan dapat digunakan sebagai demikian. Keuntungan ditambahkan adalah, relatif terhadap dokumen biasa, bahwa NLP dokumen juga dapat diinterpretasikan oleh agen perangkat lunak yang sesuai bahwa mesin kontrol.


Apakah paradigma perangkat lunak NLP?

Bahasa pemrograman Alam adalah metode top down penulisan perangkat lunak. Tahapan nya adalah sebagai berikut:
·            Definisi dari sebuah [ontologi []] - taksonomi - konsep yang diperlukan untuk menggambarkan tugas-tugas dalam topik ditangani. Setiap konsep dan semua atribut mereka didefinisikan dalam kata-kata bahasa alami. Ontologi ini akan menentukan struktur data yang NLP dapat digunakan dalam kalimat.
·            Definisi dari satu atau lebih kalimat tingkat atas dalam hal konsep-konsep dari ontologi. Ini kalimat yang kemudian digunakan untuk memanggil kegiatan yang paling penting dalam topik.
·            Mendefinisikan dari masing-masing kalimat tingkat atas dalam hal urutan kalimat.
·            Mendefinisikan setiap kalimat tingkat yang lebih rendah dalam hal kalimat lain atau kalimat sederhana dari kode Jalankan bentuk'''"...". '''dimana ... singkatan kode dalam bahasa pemrograman tingkat tinggi yang terkait.
·            Mengulangi langkah sebelumnya sampai Anda tidak memiliki kalimat tersisa tidak terdefinisi. Selama proses ini masing-masing kalimat dapat digolongkan milik satu bagian dari dokumen yang akan dihasilkan dalam HTML atau format Lateks untuk membentuk program NLP akhir.
·            Pengujian arti setiap kalimat dengan menjalankan kode dengan menggunakan benda uji.
·            Menyediakan perpustakaan panggilan prosedur (dalam bahasa yang mendasari tingkat tinggi) yang diperlukan dalam kode definisi dari beberapa makna rendah tingkat-kalimat.
·            Memberikan judul, data penulis dan menyusun kalimat menjadi sebuah [[HTML]] atau [[LaTeX]] file.
·            Penerbitan program NLP sebagai halaman web di Internet atau sebagai file [[PDF]] dikompilasi dari dokumen LaTeX.


Berapa nilai publikasi program NLP dan dokumen?

Sebuah program NLP adalah suatu [[formal]] tepat keterangan beberapa prosedur yang dibuat penulisnya. Hal ini dapat dibaca manusia dan juga dapat dibaca oleh agen perangkat lunak yang sesuai. Sebagai contoh sebuah halaman web dalam format NLP dapat dibaca oleh perangkat lunak [[asisten] pribadi] agen untuk seseorang dan dia atau dia dapat meminta agen untuk menjalankan beberapa kalimat, yaitu melakukan beberapa tugas atau menjawab pertanyaan. Ada pembaca''agen''tersedia untuk interpretasi sEnglish dokumen HTML NLP berdasarkan bahwa seseorang bisa berjalan di pribadi komputer nya.


Apa kontribusi program NLP untuk''pengetahuan mesin”?

Kelas ontologi dalam sebuah program bahasa alam yang bukan merupakan konsep dalam arti sebagai manusia menggunakan konsep-konsep. Konsep dalam NLP adalah contoh (sampel) konsep manusia generik. Setiap kalimat dalam program NLP adalah baik (1) yang menyatakan hubungan dalam suatu model dunia atau (2) melakukan tindakan di lingkungan atau (3) melakukan prosedur komputasi atau (4) atau memanggil mekanisme menjawab dalam menanggapi pertanyaan.
Satu set kalimat NLP, dengan ontologi terkait didefinisikan, juga dapat digunakan sebagai [pseudo kode []] yang tidak memberikan rincian dalam bahasa pemrograman tingkat tinggi yang mendasari. Dalam aplikasi kalimat-kalimat yang digunakan menjadi abstraksi tingkat tinggi (conceptualisations) dari komputasi prosedur yang bahasa komputer dan mesin independen.


Refrensi :
en.wikipedia.org/wiki/Programming_language

Minggu, 17 Oktober 2010

Kecerdasan Buatan - Semantic, Frame, Script pada Game PyroMaster

Jaringan Semantic 
  • Dibangun oleh M.R.Quillian, sebagai model memori manusia.
  • Representasi grafis dari informasi Propositional.
  •  Proposisi adalah pernyataan yang dapat bernilai benar atau salah. 
  • Disajikan dalam bentuk graf berarah
  • Node merepresentasikan konsep, objek atau situasi :
    • Label ditunjukkan melalui penamaan.
      Node dapat berupa objek tunggal atau kelas
  • Links merepresentasikan suatu hubungan :
    • Links adalah struktur dasar untuk pengorganisasian pengetahuan


    Disini kami mengimplementasikan jaringan semantik pada games pyromaster yang telah kami jelaskan pada penulisan sebelumnya, adapun tampilan jaringan semantiknya adalah sebagai berikut :
 
  • Tipe link : 
    • IS-A (ISA) berarti “contoh dari” dan merupakan anggota tertentu dari kelas.
    • A KIND OF (AKO) berarti “jenis dari” dan merelasikan antara suatu kelas dengan kelas lainnya. AKO merelasikan kelas individu ke kelas induk dari kelas-kelas dimana individu tersebut merupakan kelas anak.HAS-A berarti “mempunyai” yang merelasikan suatu kelas menjadi subkelas. 
    • HAS-A berlawanan dengan AKO dan sering digunakan untuk merelasikan suatu objek ke bagian dari objek.



Frame



Frame (Minsky, 1975) dipandangsebagaistrukturdata static yang digunakan untuk merepsentasikan situasi situas iyang telah dipahami dan stereotype. Frame digunakan untuk merepresentasikan pengetahuan stereo type atau pengetahuan yang didasarkan kepada karakteristik yang sudah dikenal yang merupakan pengalaman masalalu. Frame berupa kumpulan slot-slot (representasi entitas sebagai struktru objek) yang merupakan atribut untuk mendeskrip sikan pengetahuan berupa kejadian, lokasi, situasi ataupun elemen-elemenlain. Frame digunakan untuk representasi pengetahuan deklaratif.

Inilah frame dari permainan pyromaster yang kami buat :







Script

Script (Schank& Abelson, Yale univ) merupakan representasi terstruktur yang menggambarkan urutan stereotip dari kejadian-kejadian dalam sebuah kontek skhusus. Script mirip dengan frame, perbedaannya : Frame menggambarkan objek, sedangkan Script menggambarkan urutan peristiwa. Dalam menggambarkan urutan peristiwa, script menggunakan serangkaian slot yang berisi informasi tentang orang, objek dan tindakan-tindakan yang terjadi dalam suatu peristiwa.

Elemenscript yang tipikal:
  • Kondisimasukan: menggambarkansituasiyang harusdipenuhisebelumterjadisuatuperistiwayang adadalamscript. 
  • Prop : mengacukepadaobjekyang digunakandalamurutanperistiwayang terjadi. 
  • Role : mengacukepadaorang-orangyang terlibatdalamscript. 
  • Hasil: kondisiyang adasesudahperistiwadalamscript berlangsung. 
  • Track : mengacukepadavariasiyang mungkinterjadidalamscript tertentu. 
  • Scene : menggambarkan urutan peristiwa aktural yang terjadi.
Disini kami mengimplemeatsikanya dengan langkah memulai bermain pyromaster seperti dibawah ini :


Bermain Pyromaster
Jalur                 : bermain games
Peran               : pemain, computer
Pendukung      : perangkat komputer, keyboard, mouse
Kondisi masuk : pemain mengakses games- pemain bermain.

Adegan 1  : Masuk
·        Pemain menyalakan komputer
·        Pemain membuka games
·        Menunggu loading

Adegan 2 :  Memilih menu
·        Pemain memilih pilihan play more games untuk memilih permainan jenis lain
·        Pemain memilih option untuk menseting grafis, suara, dan music
·        Pemian memilih istrucsion untuk pemebritahuan element pada games
·        Pemian memilih play game untuk memulai permainan
·        Computer memunculkan tampilan untuk menseting level, victory, player, com AI, tombol Back, tombol Start

Adegan 3 : Memulai permainan
·        Pemain bermain permainan pyromaster
·        Pemain menang
·        Pemain kalah
·        Pemain memilih bermain
·        Pemain berhenti

Adegan 4 : Selesai
·        Pemain keluar dari games
·        Pemain mematikan computer

Hasil
·        Pemain merasa senang
·        Pemain merasa kecewa


Minggu, 10 Oktober 2010

Kecerdasan Buatan pada Game Pyromasters (Bomberman)

Pada postingan kali ini, kelompok kami akan membahas game Pyromasters atau game sejenis Bomberman. Perlu diketahui game Bomberman termasuk salah satu game yang terkenal di era 90-an, kala itu game ini biasa dimainkan untuk konsol Nintendo. Seiring perkembangan zaman yang sudah maju, dan mulai bermunculan berbagai macam teknologi game yang sudah memiliki kualitas yang sangat bagus, baik itu dari sisi cerita, gameplay, maupun grafik, game jenis ini pun sudah mulai ditinggalkan oleh kebanyakan orang. 
Akan tetapi tidak semua orang beranjak ke teknologi game-game terbaru, dan menghilangkan daftar game-game lama untuk hilang dari pikiran mereka. Untuk sebagian orang, khususnya para pecinta game pada era lama namun masih hidup sampai sekarang, game-game jenis ini justru sering dicari untuk dimainkan karena bersifat klasik dan memiliki daya tarik tersendiri. Oleh sebab itulah banyak para developer game untuk berlomba-lomba membuat sebuah software emulator konsol game tertentu baik itu untuk konsol game era lama seperti Nintendo generasi pertama, hingga emulator konsol game terbaru untuk saat ini yaitu PS3. Ini semua dilakukan agar para pecinta game dapat menikmati semua jenis game, baik itu dari dimulainya generasi awal terbentuknya sebuah game sampai ke generasi sekarang yang memiliki teknologi lebih canggih.

Dari kesemua daftar game generasi pertama, game Bomberman pasti sudah sering kita dengar. Game ini sanggup menyaingi “ketenaran” yang dimiliki oleh game generasi awal yang sangat terkenal pada masa itu yaitu Mario Bros. Game Bomberman juga memiliki karakteristik kecerdasan buatan yang hebat di masanya, acuan yang dipakai untuk menilai segi kecerdasan buatan di game ini ada pada karakter musuh yang diperankan oleh komputer. Pergerakan yang lincah serta dapat menghindari bom yang dipasang di tempat tertentu dengan sangat luwesnya, membuat kita sebagai pemain game menjadi merasa tertantang untuk mengalahkan karakter komputer tersebut.

Untuk saat ini, walaupun game dengan nama Bomberman sudah jarang kita temui, namun para developer game tidak menghancurkan konsep inti dari permainan tersebut, banyak game yang bermunculan hampir sama dengan konsep game Bomberman tetapi dengan nama yang berbeda contohnya adalah Pyromasters yang dibangun berbasis Flash dan ditujukan untuk pencinta game-game online berukuran mini yang dipasang di sebuah website.

Pyromasters adalah game berbasis Flash yang menerapkan konsep bermain seperti game Bomberman, namun dengan gaya yang berbeda. Karakter yang dipakai pun hampir mirip dengan karakter Bomberman yang digunakan pada game generasi awal. Pola permainan serta aturan bermain pun sama, yang membedakannya hanya pada penggambaran grafik, pilihan mode permainan, dan dimana konsol yang dipakai. Jika dahulu game Bomberman hanya dapat dimainkan pada konsol Nintendo, game Pyromasters yang berbasis Flash dapat dimainkan di komputer yang terhubung ke internet, karena memang kebutuhannya dipakai untuk game online.

Game ini dibuat oleh developer game dari mofunzone.com, anda dapat memainkannya melalui alamat ini :

Setelah ini kami akan menjabarkan mengenai aturan permainan, cara bermain, dan juga semua keterangan elemen-elemen pembangun serta pemanfaatan kecerdasan buatan yang ada di game ini.

Aturan Permainan
Secara sederhana game ini hanya memiliki satu aturan permainan, dia yang paling terakhir dapat bertahan maka dia yang akan menang. Game ini mengkondisikan kita sebagai pemain yang bertarung melawan pemain lainnya. Pemain yang kita lawan dapat kita pilih, entah itu kita melawan komputer, atau kita melawan orang lain dengan tombol yang telah ditentukan, dan game ini juga bisa kita kondisikan agar semua pemain yang bermain dan bertarung adalah komputer.

Jumlah karakter pemain yang bertarung di game ini adalah 2-4 pemain. Untuk mendapatkan kemenangan, masing-masing pemain harus saling menghancurkan dengan menggunakan bom, siapa yang paling terakhir bertahan, maka dia yang akan menang. Uniknya pada saat peperangan terjadi, ada beberapa dinding pembatas yang harus kita hancurkan agar kita bisa bertemu langsung dengan lawan yang berada di sisi lain, jika kita beruntung kita bisa menghancurkan dinding yang ada bonusnya. Bonus tersebut bisa saja menguntungkan, bisa juga merugikan.

Satu lagi hal yang penting pada saat semua pemain berperang di stage, yaitu adanya waktu berperang. Jika waktu berperang habis, maka semua dinding secara bertahap akan saling membentuk di dalam stage, sehingga lokasi peperangan lama-kelamaan akan tertutup oleh dinding, dan mengakibatkan semua pemain dapat terhimpit oleh dinding tersebut. Jika itu terjadi, maka pemain dinyatakan kalah, dan jika tidak ada satupun pemain yang selamat di stage, game akan berakhir dengan kondisi draw atau seri.

Cara Bermain 
Saat mulai menjalankan game ini, kita akan dihadapkan dengan 4 pilihan tombol.
1. Play More Games
Digunakan jika kita ingin memainkan game-game lain buatan mofunzone.com selain game Pyromasters. 
2. Play Game 
Digunakan jika kita ingin langsung memainkan game Pyromasters.
3. Options
Berisi pilihan untuk men-setting grafik, suara, dan musik pada game.
4. Instructions
Berisi instruksi-instruksi dan penjelasan singkat seputar elemen-elemen yang ada pada game Pyromasters, baik itu dari gameplay, kontrol, dan bonus.

Untuk memulai permainan kita dapat memilih tombol PlayGame. Setelah itu akan muncul layar yang memungkinkan kita untuk melakukan pengaturan game yang nantinya akan dimainkan. Pengaturan-pengaturan tersebut diantaranya :
1.       Level
Berguna untuk memilih stage atau lokasi peperangan yang akan dipakai.
2.       Victory
Ialah opsi yang kita dapat atur untuk memilih berapa kali kita harus menang dari lawan sehingga game ini dapat segera berakhir.
3.      Player (ada 4 opsi)
Kita bisa mengatur pemain-pemain yang akan bertarung pada game, entah itu kita semua yang akan bermain, kita melawan komputer, atau biarkan semua komputer yang akan bermain dan kita tinggal melihat hasilnya.
4.       Comp AI
Menunjukkan level kecerdasan buatan yang ada pada lawan ketika kita melawan komputer. Level ini terdiri dari easy (mudah), medium (sedang), dan hard (sulit).
5.       Tombol Back
Berguna untuk kembali ke menu utama game.
6.       Tombol Start
Memulai permainan.

Jika kita sudah melakukan pengaturan, kita dapat langsung bermain dengan menekan tombol Start. Setelah itu game akan dimulai, dan semua pemain akan bertarung sesuai dengan aturan yang telah kami jelaskan sebelumnya.

Penjelasan Elemen Game
Mari kita mulai membahas semua elemen yang ada pada game ketika permainan ini dijalankan.

1.       Stage
Ada 9 pilihan stage peperangan yang dapat dipilih, diantaranya Bricktown, Amazon, Magneto, Coral-Lagoon, Move-It, Pyrotopia, Fourway, Tundra, dan Junkyard. Masing-masing stage memiliki keunikan tersendiri yang membuat “aura” peperangan pada game akan semakin menarik. Berikut ini adalah salah satu screenshoot dari stage Pyrotopia.
2.       Karakter Game 
Karakter pada game ini ada 4, dimana kesemuanya dapat dimainkan oleh kita, maupun dimainkan oleh komputer. Masing-masing dari karakter tersebut memiliki kontrol yang berbeda-beda, berikut ini kami akan jabarkan karakter-karakter yang ada pada game Pyromasters beserta kontrol yang digunakan.
3.       Bom 
Elemen bom yang dipakai untuk masing-masing karakter dalam berperang memiliki ciri khas yang berbeda-beda. Berikut penjabarannya :
 4.       Bonus 
Berikut ini kami akan menjabarkan bonus-bonus yang ada di dinding tertentu pada stage, dan dapat dipakai untuk kebutuhan berperang .

Pemanfatan Kecerdasan Buatan
Seperti yang telah diterangkan sebelumnya, bahwa acuan kami untuk menilai pemanfaatan kecerdasan buatan pada game ini terletak pada pemain yang diperankan oleh komputer. Sesuai dengan level yang terbagi pada pengaturan Comp AI , yaitu easy, medium, dan hard, maka setiap kecerdasan buatan yang ditanamkan pada setiap level tersebut akan berbeda-beda cara penanganannya. Semakin tinggi level dari Comp AI (paling rendah level easy, dan paling tinggi level hard) maka semakin tinggi pula cara pemahaman, dan penalaran komputer untuk melakukan strategi perang pada game.

Hal ini dapat kita nilai dari kepintaran pergerakan dari komputer di setiap levelnya, di level easy komputer akan kurang berhati-hati dalam menerapkan strategi perang, baik itu dari sisi pemahaman meletakkan bom di tempat yang tepat, sampai pergerakan yang sebenarnya tidak perlu sehingga bisa mengakibatkan komputer terbunuh oleh bomnya sendiri.

Lain halnya jika komputer memiliki tingkat kecerdasan buatan lebih tinggi, semakin tinggi levelnya maka komputer akan menerapkan strategi perang yang dirasanya sempurna untuk mengalahkan lawan, dan juga melakukan pergerakan-pergerakan yang dapat menguntungkan dirinya, namun merugikan lawannya.

berikut video dari game Pyromasters:









___________________________________________________________________________________




Ada beberapa metode yang telah di usulkan, dan setiap metode mempunyai karekteristik berbeda-beda dengan keungulan dan kekurangannya masing-masing. Diantaranya adalah sebagai berikut :

a. Blind/Un-Informated Search

Disini digunakan istilah blid atau buta karena memang tidak ada informasi awal yang digunakan dalam proses pencarian. Ada enam metode dalam Blid :

    * BFS (Breadth-First Search), pencarian dilakukan pada semua simpul dalam setiap level secara berurutan dari kiri ke kanan.
    * DFS (Depth-First Search), pencarian dilakukan pada semua simpul dalam setiap level dari yang paling kiri.
    * DLS (Depth-Limeted Search), metode ini berusaha mengatasi kelemahan DFS dengan mematasi kedalam maksimum dari suatu jalur solusi.
    * UCS (Uniform-CostSearch), konsepnya hampir sama dengan BFS, bedanya adalah bahwa BFS menggunakan urutan level dari yang paling rendah sampai yang paling tinggi. Sedangkan UCS dari yang paling kecil sampai yang paling besar.
    * IDS (Interactif-Deepening Search), metode yang menggabungkan antara kelebihan BFS dan DFS, tetapikonsekuensinya adalah time complexcit-nya menjadi lebih tinngi.
    * BDS (Bi-Derectional Search), pencarian dari dua arah maju (dari strat ke goel) dan mundur ( dari goel ke strat ),maka telah ditemukan, yaitu degan cara menggabungkan kedua jalur yang bertemu.



    * Bangkitkan dan uji (Generate-and-Test)
   Metode Generate-and-Test adalah metode yang paling sederhana dalam pencarian heuristic. Jika pembangkitan possible solution dikerjakan secara sistematis, maka prosedur akan mencari solusinya, jika ada. Tetapi jika ruang masalahnya sangat luas, mungkin memerlukan waktu yang sangat lama.
Algoritma Generate-and-Test adalah prosedur DFS karena solusi harus dibangkitkan secara lengkap sebelum dilakukan test. Algoritma ini berbentuk sistematis, pencarian sederhana yang mendalam dari ruang permasalahan. Generate & test juga dapat dilakukan dengan pembangkitan solusi secara acak, tetapi tidak ada jaminan solusinya akan ditemukan.

    * Pendakian Bukit (Hill Climbing)
Hill Climbing berbeda Generate-and-Test, yaitu pada feedback dari prosedur test untuk membantu pembangkit menentukan yang langsung dipindahkan dalam ruang pencarian. Dalam prosedur Generate & test , respon fungsi pengujian hanya ya atau tidak. Tapi jika pengujian ditambahkan dengan atauran fungsi-fungsi yang menyediakan estimasi dari bagaimana mendekati state yang diberikan ke state tujuan, prosedur pembangkit dapat mengeksplorasi ini sebagaimana ditunjukkan di bawah. HC sering digunakan jika terdapat fungsi heuristic yang baik untuk mengevaluasi state. Sebagai contoh, anda berada di sebuah kota yang tidak dikenal, tanpa peta dan anda ingin menuju ke pusat kota. Cara sederhana adalah gedung yang tinggi. Fungsi heuristics-nya adalah jarak antara lokasi sekarang dengan gedung yang tinggi dan state yang diperlukan adalah jarak yang terpendek.
    * Pencarian Terbaik Lebih Dulu
    * Greedy Best –First Search
   Merupakan metode yang membangkitkan suksesor dengan mempertimbangkan harga (didapat dari fungsi heuristik tertentu) dari setiap node, bukan dari aturan baku seperti DFS maupun BFS
    * Modified Bi-directional A*
    * Dynamic Weighting A*
 * Constraint Satisfaction  
 * Alpha Beta Prunning.
 * Means-End-Anlysis.

c.       Fungsi Heuristik

    * Masalah Pencarian Rute Terpendek
    * Masalah 8-puzzle


Bangkitkan dan uji (Generate-and-Test)


Metode Generate-and-Test adalah metode yang paling sederhana dalam pencarian heuristic. Jika pembangkitan possible solution dikerjakan secara sistematis, maka prosedur akan mencari solusinya, jika ada. Tetapi jika ruang masalahnya sangat luas, mungkin memerlukan waktu yang sangat lama.
Algoritma Generate-and-Test adalah prosedur DFS karena solusi harus dibangkitkan secara lengkap sebelum dilakukan test. Algoritma ini berbentuk sistematis, pencarian sederhana yang mendalam dari ruang permasalahan. Generate & test juga dapat dilakukan dengan pembangkitan solusi secara acak, tetapi tidak ada jaminan solusinya akan ditemukan.

Metode ini merupakan penggabungan antaradepth-first searchdengan pelacakan mundur (backtracking), yaitu bergerak ke belakang menuju pada suatu keadaan
awal.

Strategi bangkitkan dan uji (generate and test) merupakan pendekatan yang paling sederhana dari semua pendekatan yang akan dibicarakan.

· Pendekatan ini meliputi langkah–langkah
sebagai berikut :
  1. Buatlah/bangkitkan sebuah solusi yang memungkinkan. Untuk sebuah problema hal ini dapat berarti pembuatan sebuah titik khusus dalam ruang problema.
  2. Lakukan pengujian untuk melihat apakahsolusi yang dibuat benar–benar merupakan sebuah solusi, dengan cara membandingkan titik khusus tersebut dengan goal-nya (solusi).
  3. Jika telah diperoleh sebuah solusi, langkah–langkah tersebut dapat dihentikan. Jika belum, kembalilah ke langkah pertama.

· Jika pembangkitan atau pembuatan solusi– solusi yang dimungkinkan dapat dilakukan secara sistematis, maka prosedur ini akan dapat segera menemukan solusinya, (bila ada).

· Namun, jika ruang problema sangat besar, maka proses ini akan membutuhkan waktu yang lama.

· Metode generate and test ini kurang efisien untuk masalah yang besar atau kompleks.

Algoritma :

  1. Bangkitkan suatu kemungkinan solusi (membangkitkan suatu tititk tertentu atau lintasan tertentu dari keadaan awal).
  2. Uji untuk melihat apakah node tersebut benar-benarmerupakan solusinya dengan cara membandingkannode terebut atau node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang diharapkan.
  3. Jika solusi ditemukan, keluar. Jika tidak, ulangi kembali langkah pertama.

Contoh : “Travelling Salesman Problem (TSP)”

Seorang salesman ingin mengunjungi n kota. Jarak antara tiap-tiap kota sudah diketahui. Kita ingin mengetahui ruter terpendek dimana setaip kota hanya boleh dikkunjungi tepat 1 kali. Misalkan ada 4 kota dengan jarak antara tiap-tiap kota seperti berikut ini :

Penyelesainan dengan Metode generate and test



Alur Pencarian dengan Metode generate and test



Sumber :
http://www.mofunzone.com/
http://www.mofunzone.com/online_games/pyromasters.shtml
http://en.wikipedia.org/wiki/Bomberman_%28series%29
http://blog.uin-malang.ac.id/muvid8/2010/10/08/tugas-2-ai-teknik-pencarian

Sumber Gambar :
http://ui11.gamespot.com/1290/bomberman1b_2.png
http://static.letsbuyit.com/filer/images/uk/products/original/101/17/bomberman-land-touch-2-ds-10117912.jpeg

Minggu, 03 Oktober 2010

KECERDASAN BUATAN (ARTIFICIAL INTELLIGENCE)

DEFINISI

Kecerdasan buatan (Artificial Intelligence) :
Bagian dari ilmu komputer yang mempelajari bagaimana membuat mesin (komputer) dapat melakukan pekerjaan seperti dan sebaik yang dilakukan oleh manusia bahkan bisa lebih baik daripada yang dilakukan manusia.
Menurut John McCarthy, 1956, AI :
Untuk mengetahui dan memodelkan proses – proses berpikir manusia dan mendesain mesin agar dapat menirukan perilaku manusia.
Cerdas = memiliki pengetahuan + pengalaman, penalaran (bagaimana membuat keputusan &
mengambil tindakan), moral yang baik

2 bagian utama yg dibutuhkan untuk aplikasi kecerdasan buatan :
a. basis pengetahuan (knowledge base): berisi fakta-fakta, teori, pemikiran & hubungan antara satu dengan lainnya.
b. motor inferensi (inference engine) : kemampuan menarik kesimpulan berdasarkan pengalaman

BEDA KECERDASAN BUATAN & KECERDASAN ALAMI

Kelebihan kecerdasan buatan :
1. Lebih bersifat permanen. Kecerdasan alami bisa berubah karena sifat manusia pelupa. Kecerdasan buatan tidak berubah selama sistem komputer & program tidak mengubahnya.
2. Lebih mudah diduplikasi & disebarkan. Mentransfer pengetahuan manusia dari 1 orang ke orang lain membutuhkan proses yang sangat lama & keahlian tidak akan pernah dapat diduplikasi dengan lengkap.Jadi jika pengetahuan terletak pada suatu sistem komputer, pengetahuan tersebut dapat disalin dari komputer tersebut & dapat dipindahkan dengan mudah ke komputer yang lain.
3. Lebih murah. Menyediakan layanan komputer akan lebih mudah & murah dibandingkan mendatangkan seseorang untuk mengerjakan sejumlah pekerjaan dalam jangka waktu yang sangat lama.
4. Bersifat konsisten karena kecerdasan buatan adalah bagian dari teknologi komputer sedangkan kecerdasan alami senantiasa berubah-ubah
5. Dapat didokumentasi.Keputusan yang dibuat komputer dapat didokumentasi dengan mudah dengan cara melacak setiap aktivitas dari sistem tersebut. Kecerdasan alami sangat sulit untuk direproduksi.
6. Lebih cepat
7. Lebih baik 
Kelebihan kecerdasan alami :
1. Kreatif : manusia memiliki kemampuan untuk menambah pengetahuan, sedangkan pada kecerdasan buatan untuk menambah pengetahuan harus dilakukan melalui sistem yang dibangun.
2. Memungkinkan orang untuk menggunakan pengalaman secara langsung. Sedangkan pada kecerdasan buatan harus bekerja dengan input-input simbolik.
3. Pemikiran manusia dapat digunakan secara luas, sedangkan kecerdasan buatan sangat terbatas.


SEJARAH KECERDASAN BUATAN

Kecerdasan Buatan termasuk bidang ilmu yang relatif muda. Pada tahun 1950-an para  ilmuwan dan peneliti  mulai  memikirkan bagaimana  caranya  agar  mesin dapat melakukan pekerjaannya  seperti  yang  bisa  dikerjakan oleh manusia. Alan Turing, seorang matematikawan  Inggris  pertama  kali  mengusulkan adanya  tes  untuk melihat bisa tidaknya sebuah mesi dikatakan cerdas. Hasil tes tersebut kemudian dikenal dengan Turing Test, dimana si mesin tersebut menyamar seolah-olah sebagai seseorang di dalam suatu permainan yang  mampu memberikan respon terhadap serangkaian pertanyaan yang diajukan. Turing beranggapan bahwa, jika  mesin dapat  membuat  seseorang percaya bahwa dirinya mampu berkomunikasi dengan orang lain, maka dapat dikatakan bahwa mesin tersebut cerdas (seperti layaknya manusia).
Kecerdasan  Buatan sendiri  dimunculkan oleh seorang  profesor  dari Massachusetts Institute of Technology yang bernama John McCarthy pada tahun 1956 pada  Dartmouth Conference  yang  dihadiri  oleh para  peneliti  AI. Pada  konferensi tersebut juga didefinisikan tujuan utama dari Kecerdasan Buatan, yaitu: mengetahui dan memodelkan proses-proses berfikir manusia dan mendesain mesin agar rapat menirukan kelakuan manusia tersebut.
Beberapa program AI yang mulai dibuat pada tahun 1956-1966, antara lain:
1. Logic  Theorist, diperkenalkan pada  Dartmouth Conference, program  ini  dapat
membuktikan teorema-teorema matematika.
2. Sad Sam, diprogram oleh Robert K. Lindsay (1960). Program ini dapat mengetahui
kalimat-kalimat  sederhana  yang ditulis  dalam  bahasa  Inggris  dan mampu
memberikan jawaban dari fakta-fakta yang didengar dalam sebuah percakapan.
3. ELIZA, diprogram  oleh Joseph Weinzenbaum  (1967). Program  ini  mampu
melakukan terapi terhadap pasien dengan memberikan beberapa pertanyaan.

KECERDASAN BUATAN PADA APLIKASI KOMERSIAL

Lingkup utama kecerdasan buatan :
1. Sistem pakar (expert system) : komputer sebagai sarana untuk menyimpan pengetahuan para pakar sehingga komputer memiliki keahlian menyelesaikan permasalahan dengan meniru keahlian yang dimiliki pakar.
2. Pengolahan bahasa alami (natural language processing) : user dapat berkomunikasi dengan komputer menggunakan bahasa sehari-hari, misal bahasa inggris, bahasa indonesia, bahasa jawa, dll
3. Pengenalan ucapan (speech recognition) : manusia dapat berkomunikasi dengan komputer menggunakan suara.
4. Robotika & sistem sensor
5. Computer vision : menginterpretasikan gambar atau objek-objek tampak melalui komputer
6. Intelligent computer-aided instruction : komputer dapat digunakan sebagai tutor yang dapat melatih & mengajar
7. Game playing

 Apa saja yang dikerjakan dalam bagian-bagian AI berikut ini: 
  •  Machine Vision : Bertujuan pada pengenalan pola dalam beberapa jalan yang sama sebagai kegiatan sistem visual/indera manusia.
  • Robotics : Difokuskan pada produksi alat-alat mekanik yang dapat mengendalikan gerak. Sebagai contoh: sebuah robot sederhana mampu atau dapat bergerak/pindah ke depan, belakang, kanan atau kiri atau pindah tempat ke ruangan berbeda. Sebuah robot sebenarnya buta akan bentuk urutan dari aksi bila tanpa usaha untuk mengganti komponennya atau bisa mendeteksi dan memperbaiki kesalahan dalam rencananya akan menjadi sulit bila tanpa kecerdasan. Sering sebuah robot akan diformulasikan pada sebuah rencana dasar pada informasi yang tidak lengkap dan benar dalam menjalankan sebuah rencana
  • Speech Processing : Bertujuan pada pengenalan dan sintesa pembicaraan manusia.
  • Theorem Proving : Usaha untuk membuktikan secara otomatis masalah-masalah dalam matematika dan logika.
  • General Problem Solving : Bertujuan pada pemecahan kelas-kelas dari masalah-masalah yang ditekankan dalam sebuah bahasa formal.
  • Pattern Recognation: Difokuskan pada pengenalan dan klasifikasi dari polapola.
  • Game Playing: Pembuatan program-program bermain permainan.
  • Machine Learning : Bertujuan pada produksi mesin-mesin yang mengakumulasi pengetahuan dengan contoh-contoh observasi.
  • Learning merupakan sebuah persoalan sulit untuk program AI, dalam mencapai kesuksesan diperlukan dalam pemecahan persoalan. Bagian kemampuan untuk mempelajari komponen terpenting dari tindak tanduk/jalan kecerdasan.Sebuah sistem pakar harus berkemampuan ekstensif dan dapat menghitung kerugian dalam memecahkan sebuah persoalan. Tidak seperti manusia, bilamana jika ia diberikan persoalan yang serupa pada waktu berikutnya, dia tidak akan ingat solusinya. Dia membentuk urutan yang sama untuk menghitung lagi. Learning merupakan sebuah area yang sulit diteliti, beberapa program te-lah ditulis dengan tujuan bahwa ini bukan merupakan hasil(goal) yang diinginkan.
  • Planning adalah aspek terpenting pendukung untuk mendesain atau merancang robot-robot dengan kemampuan menyele-saikan tugas mereka dengan tingkat fleksibelitas dan tanggap terhadap dunia luar.Planning merupakan masalah sulit dari sejumlah alasan yang tidak lebih dari ukuran tempat kosong(space) yang mungkin diu-rutkan dan dipindahkan.
  • Neural Network atau Parallel Distributed: teknik-teknik terbaik untuk merepresentasikan pengetahuan dan merancang algoritma pencarian yang hati-hati untuk implementasi kecerdasan. 
Lapangan dari Artificial Intelligence adalah gabungan beberapa area study, Yaitu:
_ logic
_ Searching
_ Vision, Recognition dan Pattern Matching
_ Natural Language Processing
_ Expert System
_ Robotik
_ Learning
_ Uncertainty dan Fuzzy Logic


Penjelasan mengenai Lapangan dari Artificial Intelligence, sebagai berikut:
_ LOGIC
Program dapat digunakan untuk mempelajari perbaikan logika dari sebuah argumen dengan menerapkan aturan logika standar.

_ SEARCHING
Diterapkan pada AI mengacu pada pencarian untuk penyelesaian sebuah masalah.

_ VISION, RECOGNITION DAN PATTERN MATCHING
Penting untuk beberapa aplikasi, termasuk robotik dan pengolah citra(image processing). Pada hal ini dibutuhkan untuk memperbolehkan komputer berhubungan secara langsung ke dunia dan manusia. Jika komputer berhubungan secara menyeluruh dengan dunia manusia, maka dibutuhkan beberapa kemampuan bayangan (vision).

_ NATURAL LANGUAGE PROCESSING(NLP)
Bagian yang paling sulit dari sasaran AI untuk mendapatkannya karena NLP memperbolehkan komputer untuk mengerti bahasa manusia secara langsung.
Permasalahan:
1. Ukuran kekompleksan bahasa manusia.
2. Mencoba untuk membuat komputer mengerti informasi secara konteks.
Produk komersial pertama dari AI yang memiliki 2 buah atribute :
a)      Diperbolehkan memasukkan informasi tentang subyek ke dalam komputer  (knowledge Base/dasar pengetahuan)
b)      Menyelidiki knowledge base dan berlaku sebagai expert atau pakar pada subyek

_ ROBOTIK
Digunakan untuk mempelajari mengontrol gerakan.

_ LEARNING
Bertransaksi dengan pembuatan program yang belajar dari kesalahan dari
observasi atau permintaan komputer mempunyai kemampuan untuk
mengambil keuntungan dari pengalaman.

_ UNCERTAINTY(Ketidak Pastian) DAN FUZZY LOGIC
Komputer dapat berpikir dengan menggunakan pengetahuan yang tidak
lengkap dengan menerapkan penggunaan Fuzzy Logic.



Contoh Artificial Intelligence :



AI di PES 2010 lebih cerdas. Pemain bertahan akan lebih pintar dalam menjaga pemain lawan, menutup pergerakan lawan, atau mengisi kekosongan yang ditinggalkan temannya. Pada waktu menyerang, AI bisa menempatkan pemain sedemikian sehingga bebas dari penjagaan lawan, lebih leluasa menerima umpan, dengan pola serangan yang lebih bervariasi.



Sumber:
www.unimmer.ac.id/download/Kecerdasan_buatan.pdf
webdosen.budiluhur.ac.id/dosen/930011/Kuliah/buku_AI.PDF
www.imdb.com/title/tt0212720/
en.wikipedia.org/wiki/Artificial_intelligence
www.webopedia.com/TERM/A/artificial_intelligence.html

Nama Anggota :
- Aloysius Varian          (50407082)
- Danang Pribadi          (50407228)
- Febri Prasetyo           (50407350)
- Henrico Immanuel    (50407413)
- Nugroho Wibowo     (50407629)
- Reinhard                   (50407699)
- Riko Aprilianto          (50407728)