Laporan Project Aplikasi Sistem Multimedia

Evermont Gift Shop

Latar Belakang

Sekarang ini banyak orang yang lebih memilih untuk belanja secara online karena lebih mudah untuk memilih. Maka dari itu kami membuat sebuah aplikasi untuk memudahkan masyarakat untuk belanja secara online yang kami beri nama Evermont Gift Shop. Kami menyediakan berbagai produk yang dapat dipilih customer dengan cara yang mudah dimengerti oleh customer.

ScreenShot Aplikasi

547

Ini adalah tampilan awal dari aplikasi kami. Ada logo dari online shop kami, ada juga tombol How to buy, Products, About Us, dan Contact Us.

548

Jika customer menekan tombol “How to Buy” customer dapat tersambung ke bagian dimana kami memberi tahu bagaimana cara customer dapat memesan produk-produk yang kami tawarkan. Dan kami juga memberikan tombol ”Back to Home” yang dimana jika customer menekan tombol tersebut, customer dapat kembali ke tampilan awal dari aplikasi kami.

543

545

546

Jika customer menekan tombol “Products”, customer dapat melihat semua produk-produk dan harga yang kami tawarkan. Jika customer menekan tombol “Next”, customer dapat melihat produk selanjutnya. Dan jika customer sudah memilih produknya, customer dapat menekan tombol “Buy”t untuk ke step pembelian selanjutnya. Customer dapat kembali ke tampilan awal lagi dengan cara menekan tombol “Back to Home”.

541

Ini adalah tampilan ketika customer menekan tombol “Buy” dari tampilan di atas, customer dapat tersambung ke bagian dimana customer harus mengisi nomor telefon untuk kami hubungi lebih lanjut. Jika customer sudah mengisi nomor telefon customer dapat menekan tombol “Submit”.

556

Ini adalah tampilan jika customer menekan tombol “About Us” customer dapat melihat video tentang persahabatan yang dimana customer bisa mempunyai ide untuk memberikan kado untuk orang-orang terdekat. Video ini juga memiliki kaitan yang erat dari aplikasi kami yaitu gift shop.

544

Jika customer ingin mengetahui tentang “Evermont Gift Shop” lebih lanjut customer dapat menekan tombol “Contact Us” yang memberikan informasi tentang Facebook dan Twitter dari Evermont Gift Shop.


Anggota Kelompok 2 :

TRIA NITA SITUMORANG (1601284384)

EVELINA LARISA (1601288331)

MONICA MARIA PRUDANCE (1601288722)

RAYMOND (1601223104)

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Natural Language Processing

1. Text Classification

juga dikenal sebagai categorization, yaitu diberi teks dari beberapa jenis, memutuskan mana dari satu set standar dari kelas itu milik. Identifikasi Bahasa dan klasifikasi genre adalah contoh dari klasifikasi teks, seperti analisis sentimen (mengklasifikasikan film atau produk review sebagai positif atau negatif) dan deteksi spam (mengelompokkan pesan email sebagai spam atau tidak-spam).

Salah satu contoh pemanfaatan teks mining adalah text categorization yaitu proses pengelompokan dokumen, yang dalam tugas akhir ini adalah konten web page, ke dalam beberapa kelas yang telah ditentukan. Jika tidak ada overlap antar kelas, yaitu setiap dokumen hanya dikelompokan kedalam satu kelas maka text categorization ini disebut single label text categorization. Text categorization bertujuan untuk menemukan model dalam mengkategorisasikan teks natural language. Model tersebut akan digunakan untuk menentukan kelas dari suatu dokumen.

Cara lain untuk berpikir tentang klasifikasi adalah sebagai masalah dalam kompresi data. Sebuah algoritma kompresi lossless mengambil urutan simbol, mendeteksi pola-pola berulang di dalamnya, dan menulis deskripsi dari urutan yang lebih kompak daripada yang asli.
Misalnya, teks “0,142857142857142857” mungkin dikompresi ke Compression algoritma bekerja dengan membangun kamus subsequences teks, dan kemudian mengacu pada entri dalam kamus. Contoh di sini hanya satu entri kamus, “142.857.”

Akibatnya, algoritma kompresi menciptakan sebuah model bahasa. Algoritma LZW khususnya langsung model distribusi probabilitas maksimum entropi. Untuk melakukan klasifikasi dengan kompresi, pertama-tama kita bersabar bersama-sama semua pesan pelatihan spam dan kompres mereka sebagai

Beberapa metode text categorization yang sering dipakai antara lain : k- Nearest Neighbor, Naïve Bayes, Support Vektor Machine, Decision Tree, Neural Networks, Boosting. Dalam pengaplikasian text categorization terdapat beberapa tahap, yaitu : preprocessing, training phase dan testing phase.

– Preprocessing
Tahap pertama dalam text categorization adalah dokumen preprocessing adalah :

1. Ekstrasi Term
Ekstrasi term dilakukan untuk menentukan kumpulan term yang mendeskripsikan dokumen. Kumpulan dokumen di parsing untuk menghasilkan daftar term yang ada pada seluruh dokumen. Daftar term yang dihasilkan disaring dengan membuang tanda baca, angka, simbol dan stopwords. Dalam tugas akhir ini akan dibahas juga mengenai pengaruh stopwords removal terhadap hasil klasifikasi. Berikut ini merupakan penjelasan singkat mengenai stopwords.
Kebanyakan bahasa resmi di berbagai negara memiliki kata fungsi dan kata sambung seperti artikel dan preposisi yang hampir selalu muncul pada dokumen teks. Biasanya kata-kata ini tidak memiliki arti yang lebih di dalam memenuhi kebutuhan seorang searcher di dalam mencari informasi. Kata-kata tersebut (misalnya a, an, dan on pada bahasa Inggris) disebut sebagai Stopwords.
Sebuah sistem Text Retrieval biasanya disertai dengan sebuah Stoplist. Stoplist berisi sekumpulan kata yang ‘tidak relevan’, namun sering sekali muncul dalam sebuah dokumen. Dengan kata lain Stoplist berisi sekumpulan Stopwords.
Stopwords removal adalah sebuah proses untuk menghilangkan kata yang ‘tidak relevan’ pada hasil parsing sebuah dokumen teks dengan cara membandingkannya dengan Stoplist yang ada.

2. Seleksi Term
Jumlah term yang dihasilkan pada feature ekstrasi dapat menjadi suatu data yang berdimensi cukup besar. Karena dimensi dari ruang feature merupakan bag-of-words hasil pemisahan kata dari dokumennya. Untuk itu perlu dilakukan feature selection untuk mengurangi jumlah dimensi.

3. Representasi Dokumen
Supaya teks natural language dapat digunakan sebagai inputan untuk metode klasifikasi maka teks natural language diubah kedalam representasi vektor. Dokumen direpresentasikan sebagai vektor dari bobot term, dimana setiap term menggambarkan informasi khusus tentang suatu dokumen. Pembobotan dilakukan dengan melakukan perhitungan TFIDF. Term beserta bobotnya kemudian disusun dalam bentuk matrik.

– Training Phase
Tahap kedua dari text categorization adalah training. Pada tahap ini system akan membangun model yang berfungsi untuk menentukan kelas dari dokumen yang belum diketahui kelasnya. Tahap ini menggunakan data yang telah diketahui kelasnya (data training) yang kemudian akan dibentuk model yang direpresantasikan melalui data statistik berupa mean dan standar deviasi masing-masing term pada setiap kelas.

– Testing Phase
Tahap terakhir adalah tahap pengujian yang akan memberikan kelas pada data testing dengan menggunakan model yang telah dibangun pada tahap training. Tujuan dilakukan testing adalah untuk mengetahui performansi dari model yang telah dibentuk. Dengan beberapa parameter pengukuran yaitu akurasi, precision, recall, dan f-measure.

– Pembobotan
Vector space model merepresentasikan dokumen dengan term yang memiliki bobot. Bobot tersebut menyatakan kepentingan/kontribusi term terhadap suatu dokumen dan kumpulan dokumen. Kepentingan suatu kata dalam dokumen dapat dilihat dari frekuensi kemunculannya terhadap dokumen. Biasanya term yang berbeda memiliki frekuensi yang berbeda. Dibawah ini terdapat beberapa metode pembobotan :

1. Term Frequency
Term frequency merupakan metode yang paling sederhana dalam membobotkan setiap term. Setiap term diasumsikan memiliki kepentingan yang proporsional terhadap jumlah kemunculan term pada dokumen. Bobot dari term t pada dokumen d yaitu :

TF(d,t) = f (d, t)

Dimana f(d,t) adalah frekuensi kemunculan term t pada dokumen d

2. Inverse Document Frequency (IDF)
Bila term frequency memperhatiakan kemunculan term didalam dokumen, maka IDF memperhatikan kemunculan term pada kumpulan dokumen. Latar belakang pembobotan ini adalah term yang jarang muncul pada kumpulan dokumen sangat bernilai. Kepentingan tiap term diasumsikan memilki proporsi yang berkebalikan dengan jumlah dokumen yang mengandung term. Faktor IDF dari term t yaitu :

IDF(t) = log( n / df(t) )

Dimana N adalah jumlah seluruh dokumen, df(t) jumlah dokumen yang mengandung term t.

3. TFIDF
Perkalian antara term frequency dan IDF dapat menghasilkan performansi yang lebih baik. Kombinasi bobot dari term t pada dokumen d yaitu :

TDIF(d,t) = TF(d,t) x IDF(t)

Term yang sering muncul pada dokumen tapi jarang muncul pada kumpulan dokumen memberikan nilai bobot yang tinggi. TFIDF akan meningkat dengan jumlah kemunculan term pada dokumen dan berkurang dengan jumlah term yang muncul pada dokumen.

2. Information Retrieval

tugas mencari dokumen yang relevan dengan kebutuhan pengguna untuk informasi. Contoh yang paling terkenal dari sistem temu kembali informasi adalah mesin pencari di World Wide Web. Seorang pengguna Web dapat mengetik query seperti [ AI ke mesin pencari dan melihat daftar halaman yang relevan. Pada bagian ini, kita akan melihat bagaimana sistem tersebut dibangun. Sebuah pencarian informasi ( selanjutnya IR ) sistem dapat dicirikan oleh :
Sebuah korpus dokumen. Setiap sistem harus memutuskan apa yang ingin memperlakukan sebagai dokumen : sebuah paragraf, halaman, atau teks multipage.
Pertanyaan yang diajukan dalam bahasa query. Sebuah query menentukan apa yang pengguna ingin tahu. Bahasa query dapat hanya daftar kata, seperti [ buku AI ] ; atau dapat menentukan kalimat dari kata-kata yang harus berdekatan. Sebuah hasil set. Ini subset dari dokumen yang hakim sistem IR untuk menjadi relevan dengan query. Oleh relevan -, kita berarti mungkin berguna bagi orang yang berpose query, untuk informasi tertentu perlu dinyatakan dalam query -.
Presentasi hasil set. Ini dapat yang sederhana seperti daftar peringkat judul dokumen atau serumit warna peta berputar dari hasil set diproyeksikan ke ruang tiga – dimensi, diberikan sebagai tampilan dua dimensi.
– Information Retrieval = searching information
– Mencari informasi seperti dokumen berdasarkan permintaan (input pengguna) untuk mendapatkan informasi yang dibutuhkan pengguna dari semua dokumen.
Misalnya adalah mencari informasi dengan search engine di Dunia Wide Web (www), misalnya Google.

Karakteristik Information Retrieval
1. Sebuah kumpulan tulisan (document). Sistem harus menentukan mana yang ingin dianggap sebagai dokumen (paper). Contoh: sebuah paragraf, halaman, dll
2. User Query
Query adalah formula yang digunakan untuk mencari informasi yang dibutuhkan oleh pengguna. Dalam bentuk yang paling sederhana, sebuah query adalah kata kunci dan dokumen yang mengandung kata kunci adalah dokumen yang dicari
Contoh: [AI book]; [“Al book”]; [AI AND book];
[AI NEAR book] [AI book site:www.aaai.org].
3. Set of Results
Hasil dari query. Sebuah bagian dari dokumen yang relevan dengan query.
4. Display of result sets
Bisa daftar hasil di peringkat dokumen judul.

Awalnya, sistem bekerja Information Retrieval menggunakan Model Boolean. Tapi sekarang sebagian besar ditinggalkan.

Model Information Retrieval ada tiga jenis, yaitu :

• Model Boolean : merupakan model IR sederhana yang berdasarkan atas teori himpunan dan aljabar boolean
• Model Vector Space : merupakan model IR yang merepresentasikan dokumen dan query dalam bentuk vektor dimensional
• Model Probabilistic : merupakan model IR yang menggunakan framework probabilistik
Model ruang vektor dan model probabilistik adalah model yang menggunakan pembobotan kata dan perangkingan dokumen. Hasil retrieval yang didapat dari model-model ini adalah dokumen terangking yang dianggap paling relevan terhadap query.
Dalam model ruang vektor, dokumen dan query direpresentasikan sebagai vektor dalam dalam ruang vektor yang disusun dalam indeks term, kemudian dimodelkan dengan persamaan geometri. Sedangkan model probabilistik membuat asumsi-asumsi distribusi term dalam dokumen relevan dan tidak relevan dalam orde estimasi kemungkinan relevansi suatu dokumen terhadap suatu query.

3. HITS Algorithm

HITS (Hyperlink-Induced Topic Search)
Hal ini hampir sama dengan algoritma PageRank, tapi HITS tidak menghitung jumlah link di halaman, tapi melihat-lihat link ditemukan, jika sesuai dengan tujuan link, kata-kata yang lebih tepat antara link asal ke link tujuan, semakin tinggi nilai otoritas halaman.

Hyperlink-Induced Topic Search Kleinberg memberikan gagasan baru tentang hubungan antara hubs dan authorities. Dalam algoritma HITS, setiap simpul (situs) p diberi bobot hub (xp) dan bobot authority (yp) melalui operasi

11

yang dalam hal ini nilai xp diperoleh dari jumlah seluruh nilai yq di mana q adalah situs-situs yang menunjuk (mengandung hyperlink) ke situs p (notasi q  p menunjukkan bahwa q menunjuk ke p). Sementara nilai yp diperoleh dari jumlah seluruh nilai xq. Dari operasi tersebut, dapat dilihat bahwa antara hubs dan authorities terdapat sebuah hubungan yang saling memperkuat satu sama lain, yaitu: sebuah hub yang bagus menunjuk ke banyak authorities yang juga bagus, sementara sebuah authority yang bagus ditunjuk oleh banyak hubs yang juga bagus.

21

Untuk melakukan update secara berkala dari nilai-nilai tersebut, terdapat cara yang lebih singkat dibanding dengan melakukan perhitungan ulang dari rumus yang telah dibahas sebelumnya. Pertama-tama, nomori situs-situs hasil pencarian dengan angka {1,2,…,n} dan tentukan matriks ketetanggaan A yang berukuran n x n dari situs-situs tersebut. Lalu, himpun seluruh nilai x dalam sebuah vektor x = (x1,x2,…,xn) , lakukan hal yang serupa pada seluruh nilai y. Selanjutnya, update nilai x dan y dapat dilakukan melalui operasi

Di bawah ini adalah gambaran keseluruhan dari algoritma HITS.

langkah 1: Kumpulkan sejumlah r situs hasil pencarian sebuah topik yang terletak paling atas (highest-ranked) dari sebuah search engine. Sejumlah r situs ini dikumpulkan dalam sebuah himpunan akar (root) R.

langkah 2: Buatlah sebuah himpunan basis (base) S yang berukuran n, dengan cara memperbesar himpunan R (yaitu, menambah anggota himpunan dengan semua situs yang ditunjuk oleh situs-situs di R dan paling banyak sejumlah d situs tambahan tersebut menunjuk ke situs-situs di R).
langkah 3: Buatlah graf G[S] yang dihasilkan oleh situs-situs pada himpunan S sebagai simpul. Terdapat dua jenis links dalam graf G[S] ini, yaitu: transverse links (links antara situs-situs yang alamat domainnya berbeda) dan intrinsic links (links antara situs-situs yang berdomain sama). Semua sisi yang terbentuk dari intrinsic links dihapus dari graf G[S], sehingga yang tersisa hanyalah sisi-sisi dari transverse links.

langkah 4: Buat matriks ketetanggaan A yang berukuran n x n dan juga matriks transposnya AT. Normalisasikan vektor eigen ε1 dari ATA yang bersesuaian dengan nilai eigen λ1 terbesar.

langkah 5: Temukan elemen-elemen dengan nilai absolut dari hasil normalisasi vektor eigen yang besar. Kemudian, definisikan elemen-elemen tersebut sebagain authorities.

Pada akhirnya, algoritma HITS ini menghasilkan sebuah daftar singkat yang terdiri dari situs-situs dengan bobot hub terbesar serta situs-situs dengan bobot authority terbesar. Yang menarik dari algoritma HITS adalah: setelah memanfaatkan kata kunci (topik yang dicari) untuk membuat himpunan akar (root) R, algoritma ini selanjutnya sama sekali tidak mempedulikan isi tekstual dari situs-situs hasil pencarian tersebut. Dengan kata lain, HITS murni merupakan sebuah algoritma berbasis link setelah himpunan akar terbentuk. Walaupun demikian, secara mengejutkan HITS memberikan hasil pencarian yang baik untuk banyak kata kunci. Sebagai contoh, ketika dites dengan kata kunci ”search engine”, lima authorities terbaik yang dihasilkan oleh algoritma HITS adalah Yahoo!, Lycos, AltaVista, Magellan, dan Excite − padahal tidak satupun dari situs-situs tersebut mengandung kata ”search engine”.

4. Prolog

Sejarah Prolog

Prolog merupakan singkatan dari “Programing In Logic” pertama kali dikembangkan oleh Alain Colmetrouer dan P.Roussel di Universitas Marseilles Prancis tahun 1972. Selama tahun 70an, prolog populer di Eropa untuk aplikasi AI. Sedangkan di Amerika Serikat, para peneliti juga mengembangkan bahasa lain untuk aplikasi yang sama yaitu LISP. LISP mempunyai kelebihan dibandingkan prolog , tetapi LISP lebih sulit dipelajari.
Pada awalnya, Prolog dan LISP sangat lambat dalam eksekusi program dan memakan memori yang besar sehingga hanya kalangan tertentu yang menggunakannya. Dengan adanya Compiler Prolog, kecepatan eksekusi program dapat ditingkatkan, namun Prolog masih dipandang sebagai bahasa yang terbatas (hanya digunakan di kalangan perguruan tinggi dan riset).
Pandangan tersebut tiba-tiba berubah di tahun 1981 pada konverensi internasional I dalam sistem generasi kelima di Tokyo, Jepang. Jepang yang saat itu mengalami kesulitan bersaing dalam pemasaran komputer dengan Amerika Serikat, mencanangkan rencana pengembangan teknologi hardware dan software untuk tahun 1990an. Dan bahasa yang dipilih adalah Prolog.
Sejak saat itu, banyak orang menaruh minat pada prolog dan saat itu telah dikembangkan versi prolog yang mempunyai kecepatan dan kemampuan yang lebih tinggi, lebih murah dan lebih mudah digunakan, baik untuk komputer mainframe maupun komputer pribadi sehingga Prolog menjadi alat yang penting dalam program aplikasi kecerdasan buatan (AI) dan pengembangan sistem pakar (expert sistem).

Perbedaan Prolog dengan Bahasa Pemrograman Lainnya

Hampir semua bahasa pemrograman yang ada pada saat ini seperti Pascal, C, Fortran, disebutprocedural language untuk menggunakan bahasa tersebut diperlukan algoritma atau prosedur yang dibuat untuk menyelesaikan masalah. Program dapat menjalankan prosedur yang sama berulang-ulang dengan data masukkan yang berbeda-beda. Prosedur serta pengendalian program sepenuhnya ditentukan oleh programmer dan perhitungan yang dilakukan sesuai dengan prosedur yang telah dibuat. Dengan kata lain, Pemrograman harus memberi tahu komputer bagaimana komputer harus menyelesaikan masalah.
Prolog mempunyai sifat-sifat yang berbeda dengan bahasa yang disebutkan diatas, prolog disebut sebagai object oriented language atau declarative language. Dalam prolog tidak terdapat prosedur, tapi hanya tampilan data-data object (fakta) yang akan diolah dengan relasi antar object tersebut yang membentuk suatu aturan. Aturan-aturan ini disebut heuristik dan diperlukan dalam mencari suatu jawaban, dengan kata lain, prolog dalam prolog adalah database.
Pemrogram menentukan tujuan (Goal) dan komputer akan menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya. Caranya dengan menggunakan “Formal Reasoning” yaitu membuktikan cocok tidaknya tujuan dengan data-data yang telah ada dan relasinya. Prolog memecahkan masalah seperti yang dilakukan oleh pikiran manusia.
Dengan demikian, Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang procedure pemecahannya tidak diketahui, khusunya untuk memecahkan masalah non numeric.
Keampuhan Prolog
Terletak pada kemampuannya dalam mengambil kesimpulan (jawaban) dari data-data yang ada. Karena program dalam bahasa prolog tidak memerlukan prosedur (algoritma). Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.
Misalnya, dalam pembuatan program catur dengan prolog untuk menentukkan gerakan catur anda tidak perlu menganalisis semua kemungkinan atau menentukkan suatu prosedur tertentu untuk untuk menentukan gerakan berikutnya. Tetapi anda cukup menuliskan aturan umum permainan catur dan lebih baik lagi jika ditambah dengan aturan yang diperoleh dari pengalaman. Prolog akan menentukan sendiri langkah yang akan diambil berdasarkan data-data yang ada saat itu dan aturan-aturan yang diberikan.

Aplikasi Prolog

Prolog digunakan khususnya dibidang kecerdasan buatan (Artificial Intelegent) meliputi bidang:
1. Sistem Pakar (Expert System)
adalah program yang menggunakan teknik pengambilan kesimpulan dari data-data yang didapat seperti yang dilakukan oleh seorang ahli dalam memecahkan masalah. sebagai contoh program mendiagnosa penyakit. Pemakai menentukan tujuan (goal) yaitu penyakit yang diderita, untuk mendapatkan jawaban, program akan memberi pertanyaan yang harus dijawab oleh pemakai program.

2. Pengolahan bahasa alami (Natural Language Processing)
Natural Language Processing adalah program yang dibuat agar pemakai dapat berkomunikasi dengan komputer dalam bahasa manusia sehari-hari. Sebagai contoh adalah Lotus HAL, yaitu program Bantu untuk Lotus 1-2-3 agar dapat menerima perintah bahasa inggris seperti bahasa biasa. Program pengolahan bahasa alami menggunakan teknik AI dalam analisis input bahasa yang dimasukan melalui keyboard, program tersebut berusaha mengidentifikasi sintak, semantik dan konteks yang terkandung dalam suatu kalimat agar bisa sampai pada kesimpulan untuk bisa memberikan jawaban.

3. Robotik
Dalam robotik, Prolog digunakan untuk mengolah data masukan yang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan. Apalagi kalau robot menemukan peristiwa yang tidak diharapkan atau situasi yang berbeda.

4. Pengenalan Pola (Pattern Recognition)
Pengenalan pola banyak diterapkan dalam bidang robotik dan pengolahan citra (image processing). Misalkan, bagaimana komputer dapat membedakan gambar sebuah benda dan gambar benda yang lain, atau sebuah obyek yang berada diatas obyek lain.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Artificial Intelligence Learning

Jaringan Saraf Tiruan (Artificial Neural Network) merupakan salah satu sistem pemrosesan informasi yang didesain dengan menirukan cara kerja otak manusia dalam menyelesaikan suatu masalah dengan melakukan proses belajar melalui perubahan bobot sinapsisnya. Jaringan saraf tiruan mampu melakukan pengenalan kegiatan berbasis data masa lalu. Data masa lalu akan dipelajari oleh jaringan saraf tiruan sehingga mempunyai kemampuan untuk memberikan keputusan terhadap data yang belum pernah dipelajari. Selain itu jaringan saraf tiruan merupakan suatu metode komputasi yang meniru sistem jaringan saraf biologi.

Metode ini menggunakan ini elemen perhitungan non-linear dasar yang disebut neuron yang diorganisasikan sebagai jaringan yang saling berhubungan, sehingga mirip dengan jaringan saraf manusia. Jaringan saraf tiruan dibentuk untuk memecahkan masalah tertentu seperti pengenalan pola klafikasi karena proses pembelajaran. Layaknya neuron biologi, jaringan saraf tiruan merupakan sistem yang bersifat “foult tolerant” dalam 2 hal. Pertama dapat mengenali sinyal input yang agak berbeda dari yang pernah diterima. Kedua tetap mampu bekerja meskipun beberapa neuronnya tidak mampu bekerja dengan baik. Jika sebuah neuron rusak, neuron yang lainnya dapat dilatih untuk menggantikan fungsi neuron yang rusak tersebut.

Jaringan saraf tiruan seperti manusia, belajar dari suatu contoh karena mempunyai karakteristik yang adaptif, yaitu dapat belajar dari data-data sebelumnya dan mengenal pola data yang selalu berubah. Selain itu, jaringan saraf tiruan merupakan sistem yang terprogram artinya semua keluaran atau kesimpulan yang ditarik oleh jaringan didasarkan pada pengalamannya selama mengikiuti proses pembelajaran/pelatihan. Hal yang ingin dicapai dengan melatih jaringan saraf tiruan adalah untuk mencapai keseimbangan antara kemampuan memorisasi dan generalisasi. Kemampuan memorisasi adalah kemampuan jaringan saraf tiruan unutk mengambil kembali secara sempurna sebuah pola yang dipelajari. Sedangkan kemampuan generalisasi merupakan kemampuan jaringan saraf tiruan untuk menghasilkan respons yang bisa diterima terhadap pola-pola input yang serupa (namun tidak identik) dengan pola-pola yanhg sebelumnya telah dipelajari. Hal ini sangat bermanfaat bila pada suatu saat ke dalam jarinagn saraf tiruan itu diinputkan informasi baru yang belum pernah dipelajari, maka jarinagn saraf tiruan itu masih akan tetap dapat memberikan tanggapan yang baik, memberikan keluaran yang paling mendekati.

Cara pembelajaran atau pelatihan jaringan saraf tiruan dikelompokkan menjadi beberapa bagian, 2 diantaranya supervised learning dan unsupervised learning.

A. SUPERVISED LEARNING

Supervised-Learning1

Supervised learning merupakan suatu pembelajaran yang terawasi dimana jika output yang diharapkan telah diketahui sebelumnya. Biasanya pembelajaran ini dilakukan dengan menggunakan data yang telah ada. Pada metode ini, setiap pola yang diberikan kedalam jaringan saraf tiruan telah diketahui outputnya. Satu pola input akan diberikan ke satu neuron pada lapisan input. Pola ini akan dirambatkan di sepanjang jaringan syaraf hingga sampai ke neuron pada lapisan output. Lapisan output ini akan membangkitkan pola output yang nantinya akan dicocokkan dengan pola output targetnya. Nah, apabila terjadi perbedaan antara pola output hasil pembelajaran dengan pola output target, maka akan muncul error. Dan apabila nilai error ini masih cukup besar, itu berarti masih perlu dilakukan pembelajaran yang lebih lanjut. Contoh algoritma jaringan saraf tiruan yang mernggunakan metode supervised learning adalah hebbian (hebb rule), perceptron, adaline, boltzman, hapfield, dan backpropagation.

Pada kesempatan ini saya akan membahas tentang metode hebb rule dan perceptron.
v Hebb rule merupakan metode pembelajaran dalam supervised yang paling sederhana, karena pada metoode ini pembelajaran dilakukan dengan cara memperbaiki nilai bobot sedemikian rupa sehingga jika ada 2 neuron yang terhubung, dan keduanya pada kondisi hidup (on) pada saat yang sama, maka bobot antara kedua dinaikkan. Apabila data dipresentasiakn secara bipolar, maka perbaikan bobotnya adalah

wi(baru)=wi(lama)+xi*y

Keterangan:
wi : bobot data input ke-i;
xi : input data ke-i;
y : output data.

Misalkan kita menggunakan pasangan vektor input (s) dan vektor output sebagai pasangan vektor yang akan dilatih. Sedangkan vektor yang hendak digunakan sebagai testing adalah vektor (x).
Algoritma pasangan vektor diatas adalah sebagai berikut:

0. Insialisasi semua bobot dimana:
wij=0;
i =1,2……n;
j =1,2…..m

1. Pada pasangan input-output(s-t), maka terlebih dahulu dilakukan langkah-langkah sebagai berikut:
a. Set input dengan nilai yang sama dengan vektor inputnya:
xi=si; (i=1,2……,n)
b. Set outputnya dengan nilai yang sam dengan vektor outputnya:
yj=tj; (j=1,2,…..,m)
c. Kemudian jika terjadi kesalahan maka perbaiki bobotnya:
wij(baru)=wij(lama)+xi*yj;
(i=1,2,….,n dan j=1,2,….,m)
sebagai catatan bahwa nilai bias selalu 1.

Contoh:
Sebagaimana yang kita ketahui dalam fungsi OR jika A & B= 0 maka “OR” 0, tetapi jika salah satunya adalah 1 maka “OR” 1, atau dengan kata lain jika angkanya berbeda maka hasilnya 1. Misalkan kita ingin membuat jaringan syaraf untuk melakukan pembelajaran terhadap fungsi OR dengan input dan target bipolar sebagai berikut:

Input Bias Target
-1 -1 1 -1
-1 1 1 1
1 -1 1 1
1 1 1 1

X= T= Bobot awal=
-1 -1 -1 w=
-1 1 1 0
1 -1 1 0
1 1 1 b=0
(catatan penting: bobot awal dan bobot bias kita set=0)

Data ke-1
w1 = 0+1=1
w2 =0+1=1
b =0-1=-1

Data ke-2
w1 = 1-1=0
w2 =1+1=2
b =0+1=1

Data ke-3
w1 = 0+1=1
w2 =2-1=1
b =0+1=1

Data ke-4
w1 = 1+1=2
w2 =1+1=2
b =1+1=2

Kita melakukan pengetesan terhadap salah satu data yang ada, misal kita ambil x=[-1-1] dan kita masukkan pada data ke-4 maka hasilnya adalah sebagai berikut:

y=2+(-1*2)+(-1*2)=-2

karena nilai yin=-2, maka y=f(yin)=f(-2)=-1 (cocok dengan output yang diberikan)
Perceptron merupakan salah satu bentuk jaringan syaraf tiruan yang sederhana. Perceptron biasanya digunakan untuk mengklasifikasikan suatu tipe pola tertentu yang sering dikenal dengan pemisahan secara linear. Pada dasarnya, perceptron pada jaringan syaraf dengan satu lapisan memiliki bobot yang bisa diatur dan suatu nilai ambang(thershold). Algoritma yang digunakan oleh aturan perceptron ini akan mengatur parameter-parameter bebasnya melalui proses pembelajaran. Nilai thershold( pada fungsi aktivasi adalah non negatif. Fungsi aktivasi ini dibuat sedemikian rupa sehingga terjadi pembatasan antara daerah positif dan daerah negatif.

Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan yaitu:
w1x1+ w2x2+b >
Sedangkan garis pemisah antara daerah negatif dengan daerah nol memiliki pertidaksamaan:
w1x1+ w2x2+b < –
Misalkan kita gunakan pasangan vektor input (s) dan vektor output (t) sebagai pasangan vektor yang akan dilatih.

Algoritmanya adalah:

0. Inisialisasi semua bobot dan bias:
(agar penyelesaiannya jadi lebih sederhana maka kita set semua bobot dan bias sama dengan nol).
Set learning rate( ): (0< 1).

1. Selama kondisi berhenti bernilai false. Lakukan langkah-langkah sebagai berikut:
(i) Untuk setiap pasangan pembelajaran s-t, maka:

a. Set input dengan nilai sama dengan vektor input:
xi=si;

b. Hitung respon untuk unit output:
yin=b+y-

c. Perbaiki bobot dan bias jika terjadi error:
jika y≠t maka:
wi(baru)=wi(lama)+
b(baru)=b(lama)+
jika tidak, maka:
wi(baru)= wi(lama)
b(baru)=b(lama)

Selanjutnya lakukan tes kondisi berhenti: jika tidak terjadi perubahan pada bobot pada (i) maka kondisi berhenti adalah TRUE, namun jika masih terjadi perubahan pada kondisi berhenti maka FALSE.
Nah, algoritma seperti diatas dapat digunakan baik untuk input biner maupun bipolar, dengan tertentu, dan bias yang dapat diatur. Pada algoritma tersebut bobot-bobot yang diperbaiki hanyalah bobot-bobot yang berhubungan dengan input yang aktif (xi≠0) dan bobot-bobot yang tidak menghasilkan nilai y yang benar.

Sebagai contoh, misalkan kita ingin membuat jaringan syaraf yang melakukan pembelajaran terhadap fungsi AND dengan input biner dan target bipolar sebagai berikut:
Input Bias Target
1 1 1 1
1 0 1 -1
0 1 1 -1
0 0 1 -1

Bobot awal : w=[0,0 0,0]
Bobot bias awal : b=[0,0]
Learning rate( ) : 0,8
Thershold(tetha) : 0,5

Epoh ke-1(siklus perubahan bobot ke-1)
Data ke-1
yin=0,0+0,0+0,0=0,0
Hasil aktivasi= 0(-0,5 < yin 0,5)
Target = -1

Bobot baru yang diperoleh:
w1= 0,8+0,8*-1,0*1,0=0,8
w2= 0,8+0,8*-1,0*1,0=0,0

Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,0
Data ke-3
yin=0,0+0,0+0,8=0,8
Hasil aktivasi= 1( yin > 0,5)
Target = -1

Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*0,0=0,0
w2= 0,8+0,8*-1,0*1,0=0,8

Maka bobot bias barunya:
b= 0,0+0,8*-1,0=-0,8

Data ke-4
yin=-0,8+0,0+0,0=-0,8
Hasil aktivasi= -1( yin 0,5)
Target = 1

Data ke-2
yin=-3,2+1,6+0,0=-1,6
Hasil aktivasi=-1(yin <-0,5)
Target = -1

Data ke-3
yin=-3,2+0,0+2,4=-0,8
Hasil aktivasi=-1(yin <-0,5)
Target = -1

Data ke-4
yin=-3,2+0,0+0,0=-3,2
Hasil aktivasi=-1(yin 0,5
Sedangkan garuis yang membatasi antara daerah negatif dan daerah nolnya memenuhi pertidaksamaan:
1,6×1+2,4×2-3,2 < – 0,5

B. UNSUPERVISED LEARNING

Unsupervised-Learning2

Unsupervised learning merupakan pembelajan yang tidak terawasi dimana tidak memerlukan target output. Pada metode ini tidak dapat ditentukan hasil seperti apa yang diharapkan selama proses pembelajaran, nilai bobot yang disusun dalam proses range tertentu tergantung pada nilai output yang diberikan. Tujuan metode uinsupervised learning ini agar kita dapat mengelompokkan unit-unit yang hampir sama dalam satu area tertentu. Pembelajaran ini biasanya sangat cocok untuk klasifikasi pola. Contoh algoritma jaringan saraf tiruan yang menggunakan metode unsupervised ini adalah competitive, hebbian, kohonen, LVQ(Learning Vector Quantization), neocognitron.

Pada kali ini saya akan membahas tentang metode kohonen. Jaringan syaraf self organizing, yang sering disebut juga topology preserving maps, yang mengansumsikan sebuah struktur topologi antar unit-unit cluster. Jaringan syaraf self organizing ini pertama kali diperkenalkan oleh Tuevo Kohonen dari University of Helsinki pada tahun 1981. Jaringan kohonen SOM(Self Organizing Map) merupakan salah satu model jaringan syaraf yang menggunakan metode pembelajaran unsupervised. Jaringan kohonen SOM terdiri dari 2 lapisan(layer), yaitu lapisan input dan lapisan output. Setiap neuron dalalm lapisan input terhubung dengan setiap neuron pada lapisan output. Setiap neuron dalam lapisan output merepresentasikan kelas dari input yang diberikan.

Penulisan istilah yang ada pada struktur jaringan kohonen Self Organizing Map adalah sebagai berikut:
X : vektor input pembelajaran.
X=(x1, x2,…, xj,…..,xn)
: learning rate
: radius neighborhood
X1 : neuron/node input
w0j : bias pada neuron output ke-j
Yj : neuron/node output ke-j
C : konstanta

Berikut ini adalah tahapan Algoritma dari kohonen self organizing map adalah sebagai berikut :
Langkah 1. Inisialisasikan bobot wij. Set parameter-parameter tetangga dan set parameter learning rate.
Langkah 2. Selama kondisi berhenti masih bernilai salah, kerjakan langkah-langkah berikut ini :

a. Untuk masing-masing vektor input x, lakukan :
Titik Pusat
(0,0) x,y

b. Untuk masing-masing j, lakukan perhitungan :
D(j)= )

c. Tentukan J sampai D( j) bernilai minimum.

d. Untuk masing-masing unit j dengan spesifikasi tetangga tertentu pada j dan untuk semua I, kerjakan :
wij(baru)=(wij)lama+ [xi –wij( lama)]

e. Perbaiki learning rate ( )

f. Kurangi radius tetangga pada waktu-waktu tertentu.

g. Tes kondisi berhenti.
Sebagai contohnya, data yang digunakan adalah penelitian berupa realisasi penerimaan keuangan daerah tingkat II suatu propinsi serta jumlah penduduk pertengahan tahunnya dalam sebuah kabupaten/kota. Atribut-atribut yang digunakan dalam penelitian ini adalah:
a. X1 = Jumlah penduduk
b. Pendapatan Daerah Sendiri(PDS) yang terdiri dari:

1. Pendapatan Asli Daerah(PDA) yang berupa:
ü X2 = Pajak Daerah
ü X3 = Retribusi Daerah
ü X4 = Bagian laba usaha daerah
ü X4 = Penerimaan lain-lain

2. Bagian pendapatan dari pemerintah dan instansi yang lebih tinggi yang berupa:
ü X6 = Bagi hasil pajak
ü X7 = Bagi hasil bukan pajak
ü X8 = Subsidi daerah otonom
ü X9 = Bantuan pembangunan
ü X10= Penerimaan lainnya

3. Pinjaman pemerintah daerah
ü X11= Pinjaman Pemerintah Pusat
ü X12= Pinjaman Lembaga Keuangan Dalam Negeri
ü X13= Pinjaman Dari Luar Negeri

Data set yang digunakan sebagai input tersebut dinormalkan dengan nilai rata-rata sebagai acuan yang analog dengan persamaan:

f(x)-

Berdasarkan data yang tesebut maka akan terlihat untuk masing-masing atribut memiliki nilai terendah, nilai tertinggi, dan nilai rata-rata. Selanjutnya dari nilai rata-rata tersebut maka akan menjadi acuan untuk menentukan input dari data menuju ke input pada jaringan saraf tiruan kohonen dengan pengkodean 1 dan 0. Kemudian data-data input tersebut akan diproses oleh JST sehingga menghasilkan output berupa kelompok daerah tingkat II berdasarkan penerimaan daerah. Jaringan kohonen SOM ini akan menghubungkan antara neuron input dan neuron output dengan koneksi bobot, yang mana bobot ini selalu diperbaiki pada proses iterasi pelatihan jaringan. Kemudian aliran informasi system JST ini akan mengelompokan tingkat kesejahteraan daerah tingkat II, diawali dengan dimasukkannya data penerimaan daerah. Data-data inilah yang akan berfungsi sebagai input awal selain parameter input berupa learning rate( ), dan radius neighborhood(R).

C. REINFORCEMENT LEARNING

Reinforcement-Learning3

Pembelajaran mesin metode reinforcement learning menjadi suatu pilihan dalam penentuan pengendalian robot. Metode ini mengasumsikan bahwa lingkungan terdefinisi sebagai himpunan keadaan (states) S dengan agen (robot) memiliki pilihan aksi A dengan jumlah tertentu. Untuk setiap langkah, yang didefinisikan sebagai pembagian waktu secara diskrit, agen melakukan pengamatan terhadap keadaan lingkungan, st ,dan memberikan keluaran berupa aksi, at.

Agen mendapatkan suatu reward, R yang menunjukkan kualitas aksi yang diberikan agen berdasarkan ekspektasi pemrogram. Agen kemudian melakukan observasi ulang terhadap lingkungannya, . Keadaan yang dituju dari metode pembelajaran ini ialah mendapatkan experience tuples (st, , , ), dan mendapatkan pembelajaran atas suatu pemetaan keadaan-keadaan untuk mengukur nilai jangka panjang pada keadaan tersebut. Pemetaan tersebut didefinisikan sebagai optimal value function.

Salah satu algoritma reinforcement learning yang dapat digunakan adalah Q-Learning.
Fungsi tersebut merepresentasikan nilai reward akibat agent mengambil aksi a dari keadaan s yang mengakibatkan perpindahan keadaan menjadi s’. Parameter merupakan discount factor sebagai ukuran terhadap reward yang pada proses berikutnya. Setelah mendapatkan Q-function yang optimal, terdapat pertimbangan optimasi p*(s) yang merupakan nilai maksimum dari suatu keadaan.

Nilai Q-function disimpan dalam suatu struktur tabel dalam indeks yang mengacu pada state dan action. Untuk setiap waktu robot menghasilkan aksi, experience tuple dihasilkan dan tabel untuk keadaan s dan aksi a.
Dalam pemrograman robot, implementasi reinforcement learning merupakan dukungan yang mempermudah hubungan aksi robot terhadap keadaan lingkungan. Suatu robot dapat memandang sebuah task sebagai fungsi reward yang lebih terbebas dari bias program dibandingkan melalui pemetaan kondisional.

Dalam penelitian ini, persoalan penentuan jalur merupakan suatu persoalan deterministik yang dapat dikategorikan sebagai exploration problem. Dalam hal ini, agent membutuhkan tahapan khusus untuk mempelajari lajurnya dan menyimpan informasi hasil pembelajarannya. Eksplorasi
yang dilakukan sebagai tahapan pembelajaran peta lajur dilakukan menggunakan strategi pencarian tertentu.

Strategi pencarian yang diimplementasikan dalam penyelesaian pencarian jalur pada penelitian ini menggunakan metode Greedy Best-First Search. Bentuk sederhana dalam metode ini adalah mencari pengambilan estimasi langkah terpendek menuju goal state. Fungsi yang menghitung estimasi tersebut dinamakan fungsi heuristik yang dilambangkan dengan h:

h(n) = estimasi langkah terpendek menuju goal

Dalam strategi ini, agent diprogram untuk mengambil keputusan berupa action dengan nilai reward tertentu. Nilai reward tersebut menjadi informasi bagi agent untuk memilih action yang mengakibatkan pengambilan langkah terdekat terhadap goal. Nilai tersebut didapatkan melalui reinforcement learning dan digunakan untuk diacu sebagai fungsi heuristik pada strategi pencarian Greedy Best-First Search.
Depth-First Search

Metode pencarian Depth-First Search (DFS) merupakan metode uninformed search. Hal ini menunjukkan bahwa pencarian melalui DFS dilakukan tanpa dukungan informasi nilai apapun, termasuk jumlah langkah menuju goal state. Dalam metode ini, agent hanya mampu membedakan state yang berkedudukan sebagai goal dan yang bukan (Russel, 1995).

Apabila dimodelkan melalui graf pohon pencarian, agent pada metode DFS melakukan pencarian yang terfokus pada kedalaman aras di setiap titiknya. Apabila agent sudah tidak bisa lagi mencari lebih dalam sedangkan ia berada pada state non-goal, agent akan melakukan backtracking menuju state pada aras lebih rendah. Agent yang melakukan bactracking melakukan pencarian melalui sisi yang belum dicari pada titik di aras yang lebih rendah. Ekspansi dilakukan hingga agent menemukan goal state.

Persoalan yang diselesaikan melalui pendekatan pembelajaran mesin reinforcement learning memiliki sejumlah keadaan yang tertentu (state) yang diperoleh berdasarkan aksi (action) yang dilakukan agent. Aksi yang dilakukan disertai dengan nilai reward tertentu bergantung pada pendekatan penyelesaian masalah. Melalui proses learning, agent berusaha mencari sejumlah aksi yang memberikan nilai reward maksimal hingga goal state tercapai dan agent menghentikan pencarian action. Proses learning yang dilakukan dapat disederhanakan sebagai entry nilai bagi tabel state-action-reward yang menjadi model yang dibangun sebagai acuan fungsi target dalam kondisi pengujian.

Dalam penerapan pembelajaran mesin menggunakan Q-learning, sebagaimana penjelasan pada dasar teori sebelumnya, terdapat suatu nilai Q yang merupakan reward akibat pengambilan suatu action dari state tertentu, dengan suatu nilai tambahan. Nilai ini didapat melalui pengalian suatu faktor secara rekursif terhadap rangkaian reward pada agent. Rangkaian reward tersebut mendapatkan referensi nilai terhadap immediate reward pada goal state.

Sebagaimana penjelasan sebelumnya, goal state bersifat absorptif sehingga eksplorasi yang mencapai state tersebut menghentikan eksplorasi agent.
Agent memiliki susunan informasi mengenai reward untuk setiap aksi dalam bentuk table entry yang diperbarui dalam setiap pembelajaran. Informasi mengenai reward untuk setiap action dalam state tertentu pada table entry ini diinisiasi dengan nilai nol. Pembaruan nilai mengacu pada fungsi Q (s,a) yang telah didefinisikan sebelumnya. Secara ilustrasi.

DECISION LEARNING TREE

Decision Tree Learning digunakan pada statistik, data mining, dan machine learning. Decision Tree Learning menggunakan Decision Tree sebagai model prediktif yang memetakan observasi sesuatu menjadi sebuah kesimpulan target nilai. Input dari Decision Tree Learning adalah data diskret dan outputnya berupa RULE (pohon pengetahuan)

DATA SAMPLE

1

Ada 10 variabel yang digunakan untuk dasar mengambil keputusan. Kelas keputusan ada dua yakni Menunggu/Tidak di sebuah restoran
ALT : Alternate ; Bar : ada bar atau tidak ; FRI : Weekend ; Hun : Hungry ;PAT: pengunjung ; Price:harga ; RES: Reservation ; Type : tipe restoran ;EST: estimated time

HASILNYA POHON KEPUTUSAN

1 (1)

Kotak yang diarsir adalah daun . Kotak tanpa arsiran adalah akar atau cabang . Pola untuk mengubah menjadi RULE adalah
1) Akar/Cabang adalah proposisi pembentuk frase IF
2) Daun adalah proposisi pembentuk Frase THEN
Contoh
1) IF Patron = None THEN Wait = False
2) IF Patron = Full and Hungry = Yes and Type = French Then wait = true
3) IF Patron = Full and Hungry = Yes and Type = Thai and Fri/Sat = yes Then wait = true
dst

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Count On Me

Video yang mengandung lagu dan foto yang di padukan menjadi satu kesatuan, merupakan hal yang baru saja booming pada dunia anak muda, seperti untuk membuat video anniversary, video ulangtahun, dan masih banyak lagi. Dimana yang sering kita sebut stop motion. Awalnya stopmotion hanyalah di buat dalam pembuatan animasi, dan ya, stopmotion merupakan suatu […]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Searching Informed Search, Adversarial Search, &, Constraint Satisfaction

1. Adversarial search

bekerja dengan cara mencari berbagai kemungkinan solusi atas sebuah masalah. Ini seperti saat kita melakukan permainan rolex atau gambling (tic-tac-toe,), dimana semua kemungkinan akan kita coba. Algoritma ini sulit digunakan untuk melakukan pencarian di internet, sebab berapa banyak kemungkinan yang akan di dapat untuk mencari sebuah kata di internet? Nyaris tak terhingga.

Constraint Satisfaction Problems

Saat kita mencari suatu kata/kalimat di internet, maka algoritma constraint satisfaction search ini sepertinya adalah metode yang paling mendekati atau sesuai dengan keinginan mu. Algoritma pencarian jenis ini, akan mencari solusi dengan cara memberikan berbagai alternatif pilihan. Algoritma ini akan mencari dengan berbagai cara, dan tidak harus dengan cara yang berurutan.Itu tadi beberapa algoritma yang diperlukan saat sebuah search engine akan dibuat. Dan seringkali lebih dari satu algoritma yang digunakan oleh sebuah search engine. Dan seringkali juga, search engine tertentu akan membuat algoritma yang baru

2.  Propositional logic merupakan salah satu bentuk (bahasa) representasi logika yang paling tua dan paling sederhana. Dengan cara ini beberapa fakta dapat digambarkan dan dimanipulasi dengan menggunakan aturan-aturan aljabar Boolean. Propositional logic membentuk statement sederhana atau statement yang kompleks dengan menggunakan propositional connective, dimana mekanisme ini menentukan kebenaran dari sebuahstatement kompleks dari nilai kebenaran yang direpresentasikan oleh statement lain yang lebih sederhana. Beberapa operator penghubung dasar yang seringkali dipakai dalam propositional logic ditunjukkan dalam Tabel 2.1. sedangkan tabel kebenaran untuk masing-masing operator dapat dilihat pada Tabel 2.2.

Picture1

Picture2

Contoh :

Proposisi: Semua planet tata-surya mengelilingi matahari.

Dapat diekspresikan ke dalam bentuk:

Picture3

Atau

Sentence: Every body who know Hitler, either like Hitler or think that anyone who killed some one is crazy

Proportional Logic is:

x : [body(x) Ù know(x, Hitler)]®  [like(x, Hitler)Ú (y:$z: killed(y, z) ® crazy(x, y)]

3. Codingan untuk  Algoritma A & Algoritma A* (A Star)

Langkah-langkah pencarian dalam Algoritma A*

Setelah nilai heuristik dari masing-masing node didapat maka kita akan mencari f(n) menggunakan algoritma A* dengan rumus
f(n) = h(n) + g(n) dimana,
h(n) = Nilai heuristik antar Koordinat.
g(n) = Jarak Koordinat ke titik tujuan

Contoh kodingan A*

1

  2

  3

  4

  5

  6

  7

  8

  9

 10

 11

 12

 13

 14

 15

 16

 17

 18

 19

 20

 21

 22

 23

 24

 25

 26

 27

 28

 29

 30

 31

 32

 33

 34

 35

 36

 37

 38

 39

 40

 41

 42

 43

 44

 45

 46

 47

 48

 49

 50

 51

 52

 53

 54

 55

 56

 57

 58

 59

 60

 61

 62

 63

 64

 65

 66

 67

 68

 69

 70

 71

 72

 73

 74

 75

 76

 77

 78

 79

 80

 81

 82

 83

 84

 85

 86

 87

 88

 89

 90

 91

 92

 93

 94

 95

 96

 97

 98

 99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

// Astar.cpp// http://en.wikipedia.org/wiki/A*

// Compiler: Dev-C++ 4.9.9.2

// FB – 201012256

#include <iostream>

#include <iomanip>

#include <queue>

#include <string>

#include <math.h>

#include <ctime>

using namespace std;

const int n=60; // horizontal size of the map

const int m=60; // vertical size size of the map

static int map[n][m];

static int closed_nodes_map[n][m]; // map of closed (tried-out) nodes

static int open_nodes_map[n][m]; // map of open (not-yet-tried) nodes

static int dir_map[n][m]; // map of directions

const int dir=8; // number of possible directions to go at any position

// if dir==4

//static int dx[dir]={1, 0, -1, 0};

//static int dy[dir]={0, 1, 0, -1};

// if dir==8

static int dx[dir]={1, 1, 0, 1, 1, 1, 0, 1};

static int dy[dir]={0, 1, 1, 1, 0, 1, 1, 1};

class node

{

// current position

int xPos;

int yPos;

// total distance already travelled to reach the node

int level;

// priority=level+remaining distance estimate

int priority;  // smaller: higher priority

public:

node(int xp, int yp, int d, int p)

{xPos=xp; yPos=yp; level=d; priority=p;}

int getxPos() const {return xPos;}

int getyPos() const {return yPos;}

int getLevel() const {return level;}

int getPriority() const {return priority;}

void updatePriority(const int & xDest, const int & yDest)

{

priority=level+estimate(xDest, yDest)*10; //A*

}

// give better priority to going strait instead of diagonally

void nextLevel(const int & i) // i: direction

{

level+=(dir==8?(i%2==0?10:14):10);

}

// Estimation function for the remaining distance to the goal.

const int & estimate(const int & xDest, const int & yDest) const

{

static int xd, yd, d;

xd=xDestxPos;

yd=yDestyPos;

// Euclidian Distance

d=static_cast<int>(sqrt(xd*xd+yd*yd));

// Manhattan distance

//d=abs(xd)+abs(yd);

// Chebyshev distance

//d=max(abs(xd), abs(yd));

return(d);

}

};

// Determine priority (in the priority queue)

bool operator<(const node & a, const node & b)

{

return a.getPriority() > b.getPriority();

}

// A-star algorithm.

// The route returned is a string of direction digits.

string pathFind( const int & xStart, const int & yStart,

const int & xFinish, const int & yFinish )

{

static priority_queue<node> pq[2]; // list of open (not-yet-tried) nodes

static int pqi; // pq index

static node* n0;

static node* m0;

static int i, j, x, y, xdx, ydy;

static char c;

pqi=0;

// reset the node maps

for(y=0;y<m;y++)

{

for(x=0;x<n;x++)

{

closed_nodes_map[x][y]=0;

open_nodes_map[x][y]=0;

}

}

// create the start node and push into list of open nodes

n0=new node(xStart, yStart, 0, 0);

n0->updatePriority(xFinish, yFinish);

pq[pqi].push(*n0);

open_nodes_map[x][y]=n0->getPriority(); // mark it on the open nodes map

// A* search

while(!pq[pqi].empty())

{

// get the current node w/ the highest priority

// from the list of open nodes

n0=new node( pq[pqi].top().getxPos(), pq[pqi].top().getyPos(),

pq[pqi].top().getLevel(), pq[pqi].top().getPriority());

x=n0->getxPos(); y=n0->getyPos();

pq[pqi].pop(); // remove the node from the open list

open_nodes_map[x][y]=0;

// mark it on the closed nodes map

closed_nodes_map[x][y]=1;

// quit searching when the goal state is reached

//if((*n0).estimate(xFinish, yFinish) == 0)

if(x==xFinish && y==yFinish)

{

// generate the path from finish to start

// by following the directions

string path=“”;

while(!(x==xStart && y==yStart))

{

j=dir_map[x][y];

c=‘0’+(j+dir/2)%dir;

path=c+path;

x+=dx[j];

y+=dy[j];

}

// garbage collection

delete n0;

// empty the leftover nodes

while(!pq[pqi].empty()) pq[pqi].pop();

return path;

}

// generate moves (child nodes) in all possible directions

for(i=0;i<dir;i++)

{

xdx=x+dx[i]; ydy=y+dy[i];

if(!(xdx<0 || xdx>n1 || ydy<0 || ydy>m1 || map[xdx][ydy]==1

|| closed_nodes_map[xdx][ydy]==1))

{

// generate a child node

m0=new node( xdx, ydy, n0->getLevel(),

n0->getPriority());

m0->nextLevel(i);

m0->updatePriority(xFinish, yFinish);

// if it is not in the open list then add into that

if(open_nodes_map[xdx][ydy]==0)

{

open_nodes_map[xdx][ydy]=m0->getPriority();

pq[pqi].push(*m0);

// mark its parent node direction

dir_map[xdx][ydy]=(i+dir/2)%dir;

}

else if(open_nodes_map[xdx][ydy]>m0->getPriority())

{

// update the priority info

open_nodes_map[xdx][ydy]=m0->getPriority();

// update the parent direction info

dir_map[xdx][ydy]=(i+dir/2)%dir;

// replace the node

// by emptying one pq to the other one

// except the node to be replaced will be ignored

// and the new node will be pushed in instead

while(!(pq[pqi].top().getxPos()==xdx &&

pq[pqi].top().getyPos()==ydy))

{

pq[1pqi].push(pq[pqi].top());

pq[pqi].pop();

}

pq[pqi].pop(); // remove the wanted node

// empty the larger size pq to the smaller one

if(pq[pqi].size()>pq[1pqi].size()) pqi=1pqi;

while(!pq[pqi].empty())

{

pq[1pqi].push(pq[pqi].top());

pq[pqi].pop();

}

pqi=1pqi;

pq[pqi].push(*m0); // add the better node instead

}

else delete m0; // garbage collection

}

}

delete n0; // garbage collection

}

return “”; // no route found

}

int main()

{

srand(time(NULL));

// create empty map

for(int y=0;y<m;y++)

{

for(int x=0;x<n;x++) map[x][y]=0;

}

// fillout the map matrix with a ‘+’ pattern

for(int x=n/8;x<n*7/8;x++)

{

map[x][m/2]=1;

}

for(int y=m/8;y<m*7/8;y++)

{

map[n/2][y]=1;

}

// randomly select start and finish locations

int xA, yA, xB, yB;

switch(rand()%8)

{

case 0: xA=0;yA=0;xB=n1;yB=m1; break;

case 1: xA=0;yA=m1;xB=n1;yB=0; break;

case 2: xA=n/21;yA=m/21;xB=n/2+1;yB=m/2+1; break;

case 3: xA=n/21;yA=m/2+1;xB=n/2+1;yB=m/21; break;

case 4: xA=n/21;yA=0;xB=n/2+1;yB=m1; break;

case 5: xA=n/2+1;yA=m1;xB=n/21;yB=0; break;

case 6: xA=0;yA=m/21;xB=n1;yB=m/2+1; break;

case 7: xA=n1;yA=m/2+1;xB=0;yB=m/21; break;

}

cout<<“Map Size (X,Y): “<<n<<“,”<<m<<endl;

cout<<“Start: “<<xA<<“,”<<yA<<endl;

cout<<“Finish: “<<xB<<“,”<<yB<<endl;

// get the route

clock_t start = clock();

string route=pathFind(xA, yA, xB, yB);

if(route==“”) cout<<“An empty route generated!”<<endl;

clock_t end = clock();

double time_elapsed = double(end start);

cout<<“Time to calculate the route (ms): “<<time_elapsed<<endl;

cout<<“Route:”<<endl;

cout<<route<<endl<<endl;

// follow the route on the map and display it

if(route.length()>0)

{

int j; char c;

int x=xA;

int y=yA;

map[x][y]=2;

for(int i=0;i<route.length();i++)

{

c =route.at(i);

j=atoi(&c);

x=x+dx[j];

y=y+dy[j];

map[x][y]=3;

}

map[x][y]=4;

// display the map with the route

for(int y=0;y<m;y++)

{

for(int x=0;x<n;x++)

if(map[x][y]==0)

cout<<“.”;

else if(map[x][y]==1)

cout<<“O”; //obstacle

else if(map[x][y]==2)

cout<<“S”; //start

else if(map[x][y]==3)

cout<<“R”; //route

else if(map[x][y]==4)

cout<<“F”; //finish

cout<<endl;

}

}

getchar(); // wait for a (Enter) keypress 

return(0);

}

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

welcome in ITworld!

I’m Monica Maria Prudance

NIM 1601288722

IT major

I’m proud to be binusian

and let’s enjoy my blog!

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS