INPUT AND OUTPUT

Posted in Tutorial on November 25, 2009 by diskrit

 

OUTPUT
untuk melakukan output, kita bisa mengunakan istilah write. Ada juga istilah nl yang digunakan untuk membuat enter(new line).
contoh penggunaan:
?-write(‘contoh menggunakan write’),nl.
contoh menggunakan write
yes
terlihat bahwa tanda kutip tidak muncul.
jika memang ingin mengisi tanda kutip, maka bisa dipakai writeq
contoh:
?-writeq(‘contoh kutip’),nl.
‘contoh kutip’
yes
INPUT
di prolog kita bisa menggunakan read. read ini hanya bisa dipakai untuk satu argumen dan harus variabel.
contoh:
?-read(X).
:27.
X=27
?-read(Y).
:’ini adalah kalimat’.
Y=’ini adalah kalimat’
dan jika variabel sudah dipakai, maka output akan benar jika inputan sesuai.
contoh:
?-X=adi,read(X).
:jim.
no
?-X=adi,read(X).
:adi.
X=adi
INPUT DAN OUTPUT MENGGUNAKAN KARAKTER
OUTPUT

untuk melakukan output karakter kita bisa menggunakan predikat put. predikat ini hanya bisa dipakai untuk satu argumen dan harus menggunakan angka dari 0-255(kode ASCII).
contoh: ?-put(97),nl.
a
yes
?-put(64),nl.
@
yes
INPUT

disini kita disediakan 2 predikat untuk melakukan input karakter. Yang pertama adalah get0. predikat ini hanya bisa dipakai untuk satu argumen dan itu harus variabel.
contoh:
?-get0(N).
:a
N=97
jadi disini kita menginput suatu variabel N dengan a, yang mana kode ASCII dari a adalah 97.
untuk predikat get, sama halnya dengan get0, akan tetapi get ini mengevaluasi karakter spasi(white space).
contoh:
?-get(M).
:Z
M=90
?-get(M).
:     Z
M=90
bisa dilihat dari contoh diatas, hasil keduanya tetap sama, karena predikat get mengevaluasi white space.
jika kita memakai get0 maka hasilnya akan beda.
?-get0(M).
:     Z
M=32
Using Characters: Examples
Readin predikat didefinisikan secara rekursif. Ini menyebabkan satu karakter untuk
input dan variabel X untuk terikat kepada para (numerik) nilai ASCII. Tindakan diambil
(proses (X) tujuan) tergantung pada apakah atau tidak X memiliki nilai 42 berarti karakter a*. Jika memiliki, evaluasi tujuan berhenti. Jika tidak, nilai dari X adalah output,
diikuti oleh baris baru, diikuti dengan sebuah panggilan ke readin lebih lanjut. Proses ini berlangsung tanpa batas waktu sampai karakter a * yang dibaca.Adajuga versi yang diperluas yaitu Kali ini ASCII nilai-nilai input adalah karakter yang tidak output, tetapi jumlah karakter (termasuk *) adalah output. Predikat hitungan didefinisikan dengan dua argumen yang dapat dibaca sebagai ‘jumlah karakter dihitung sejauh ini’ dan ‘jumlah total
karakter sebelum * ‘. Ada juga program rekrusif yaitu didasarkan dari 2 sebelumnya yang
menunjukkan bagaimana membaca dalam serangkaian diakhiri dengan karakter * dan menghitung jumlahvokal. Karakter dibaca dalam satu demi satu sampai sebuah karakter dengan nilai ASCII 42(menandakan *) adalah dijumpai.Di sini, dua argumen dari predikat hitungan dapat diartikan sebagai “jumlah huruf hidup sejauh ini ‘dan’ jumlah total huruf hidup ‘. Tiga argumen proses predikat dapat dibaca sebagai “nilai ASCII karakter input ‘,’ yang jumlah huruf hidup sampai dengan tetapi tidak termasuk karakter ‘dan’ jumlah total
huruf hidup ‘, masing-masing.Pertama dua argumen dari predikat processChar dapat ditafsirkan dalam cara yang sama seperti untuk proses, tetapi argumen ketiga adalah “jumlah huruf hidup dan termasuk karakter (argumen pertama) ‘.Predikat huruf hidup tes untuk salah satu dari 10 kemungkinan huruf hidup (lima huruf dan lima huruf kecil), menggunakan nilai-nilai ASCII.
Input and Output Using Files
Prolog mengambil semua input dari current input stream dan menulis semua output ke
current output stream. Secara default kedua urutan ini bernama pengguna,
menunjukkan pengguna terminal, yaitu untuk input keyboard dan layar untuk memperoleh keluaran. Perhatikan bahwa tidak ada file bisa terbuka untuk input maupun
output pada waktu yang sama (kecuali pengguna) dan bahwa pengguna input dan output stream tidak dapat ditutup.
File Output: Changing the Current Output Stream
current output stream dapat diubah menggunakan tell / 1 predikat. Ini membutuhkan
argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya
kirim ( ‘outfile.txt’). Mengevaluasi tell menyebabkan file bernama untuk menjadi arus keluaran arus. Jika file belum terbuka, file dengan nama tertentu pertama kali diciptakan
(semua file yang sudah ada dengan nama yang sama akan dihapus). Perhatikan bahwa file yang sesuai dengan current output stream sebelumnya tetap terbuka ketika current output stream baru dipilih. Hanya current ouput stream dapat ditutup .Output ke sebuah File
Meskipun definisi di atas tell menyatakan bahwa ’semua file yang sudah ada dengan yang sama Namanya dihapus ‘, ada kemungkinan lain, yang penting bagi beberapa
aplikasi, yaitu bahwa file tersebut tidak dihapus dan setiap output ditempatkan setelah
akhir isi yang ada file. Baik ‘menimpa’ dan ‘append’ pilihan kemungkinan besar akan tersedia dalam pelaksanaan praktis Prolog tetapi mungkin melibatkan menggunakan predikat yang berbeda (misalnya terbuka) sebagai pengganti atau serta tell.
File Input: Changing the Current Input Stream
Input stream yang aktif dapat diubah dengan menggunakan see/ 1 predikat. Ini membutuhkan argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya0see ( ‘myfile.txt’). Mengevaluasi sebuah tujuan see menyebabkan file bernama curent input stream.Jika file ini belum terbuka itu pertama kali dibuka (untuk akses baca saja). Jika tidak mungkin untuk membuka file dengan nama yang diberikan, kesalahan akan dihasilkan Built-in predikat see / 1 memerlukan satu argumen, yang harus menjadi variabel dan biasanya akan terikat. Mengevaluasi sebuah tujuan see menyebabkan variabel yang akan terikat nama current input stream.
Reading from file: End of File
Jika akhir file ditemukan ketika mengevaluasi tujuan read (X), variabel X akan
terikat ke atom end_of_file.
Jika akhir file ditemukan saat mengevaluasi tujuan mendapatkan (X) atau get0 (X),
variabel X akan terikat kepada seorang ‘khusus’ nilai numerik. Sebagai nilai-nilai ASCII harus dalam
kisaran 0-255 inklusif, ini biasanya akan menjadi -1, tetapi dapat bervariasi dari satu
Prolog pelaksanaan lain.
Reading from file: End of Record
Tergantung pada versi Prolog digunakan, mungkin ada ketidakcocokan untuk
karakter input antara membaca akhir sebuah catatan (yaitu karakter (s) yang
menandai akhir baris) dari terminal pengguna dan dari sebuah file.
Biasanya akhir baris dari input pada terminal pengguna akan ditunjukkan oleh
karakter dengan nilai ASCII 13. Akhir sebuah catatan dalam sebuah file umumnya akan
ditunjukkan oleh dua nilai ASCII: 13 diikuti oleh 10.
Program berikut menunjukkan bagaimana membaca dalam serangkaian karakter dari
keyboard dan mencetak mereka keluar, satu per baris.
Perhatikan penggunaan put daripada write dan bahwa tes untuk nilai ASCII 13 menghindari kebutuhan untuk karakter seperti * untuk menunjukkan ‘akhir input’
?- readline.
: Prolog test
P
r
o
l
o
g
t
e
s
t
yes

outputuntuk melakukan output, kita bisa mengunakan istilah write. Ada juga istilah nl yang digunakan untuk membuat enter(new line).contoh penggunaan:?-write(‘contoh menggunakan write’),nl.contoh menggunakan writeyesterlihat bahwa tanda kutip tidak muncul.jika memang ingin mengisi tanda kutip, maka bisa dipakai writeqcontoh:?-writeq(‘contoh kutip’),nl.’contoh kutip’yes
inputdi prolog kita bisa menggunakan read. read ini hanya bisa dipakai untuk satu argumen dan harus variabel.contoh:?-read(X).:27.X=27
?-read(Y).:’ini adalah kalimat’.Y=’ini adalah kalimat’
dan jika variabel sudah dipakai, maka output akan benar jika inputan sesuai.contoh:?-X=adi,read(X).:jim.no
?-X=adi,read(X).:adi.X=adi
input dan output menggunakan karakter
outputuntuk melakukan output karakter kita bisa menggunakan predikat put. predikat ini hanya bisa dipakai untuk satu argumen dan harus menggunakan angka dari 0-255(kode ASCII).contoh: ?-put(97),nl. a yes
?-put(64),nl. @ yes
inputdisini kita disediakan 2 predikat untuk melakukan input karakter. Yang pertama adalah get0. predikat ini hanya bisa dipakai untuk satu argumen dan itu harus variabel.contoh:?-get0(N).:aN=97jadi disini kita menginput suatu variabel N dengan a, yang mana kode ASCII dari a adalah 97.
untuk predikat get, sama halnya dengan get0, akan tetapi get ini mengevaluasi karakter spasi(white space).contoh:?-get(M).:ZM=90
?-get(M).:     ZM=90bisa dilihat dari contoh diatas, hasil keduanya tetap sama, karena predikat get mengevaluasi white space.jika kita memakai get0 maka hasilnya akan beda.?-get0(M).:     ZM=32
Using Characters: Examples
Readin predikat didefinisikan secara rekursif. Ini menyebabkan satu karakter untukinput dan variabel X untuk terikat kepada para (numerik) nilai ASCII. Tindakan diambil(proses (X) tujuan) tergantung pada apakah atau tidak X memiliki nilai 42 berarti karakter a*. Jika memiliki, evaluasi tujuan berhenti. Jika tidak, nilai dari X adalah output,diikuti oleh baris baru, diikuti dengan sebuah panggilan ke readin lebih lanjut. Proses ini berlangsung tanpa batas waktu sampai karakter a * yang dibaca.Adajuga versi yang diperluas yaitu Kali ini ASCII nilai-nilai input adalah karakter yang tidak output, tetapi jumlah karakter (termasuk *) adalah output. Predikat hitungan didefinisikan dengan dua argumen yang dapat dibaca sebagai ‘jumlah karakter dihitung sejauh ini’ dan ‘jumlah totalkarakter sebelum * ‘. Ada juga program rekrusif yaitu didasarkan dari 2 sebelumnya yangmenunjukkan bagaimana membaca dalam serangkaian diakhiri dengan karakter * dan menghitung jumlahvokal. Karakter dibaca dalam satu demi satu sampai sebuah karakter dengan nilai ASCII 42(menandakan *) adalah dijumpai.Di sini, dua argumen dari predikat hitungan dapat diartikan sebagai “jumlah huruf hidup sejauh ini ‘dan’ jumlah total huruf hidup ‘. Tiga argumen proses predikat dapat dibaca sebagai “nilai ASCII karakter input ‘,’ yang jumlah huruf hidup sampai dengan tetapi tidak termasuk karakter ‘dan’ jumlah totalhuruf hidup ‘, masing-masing.Pertama dua argumen dari predikat processChar dapat ditafsirkan dalam cara yang sama seperti untuk proses, tetapi argumen ketiga adalah “jumlah huruf hidup dan termasuk karakter (argumen pertama) ‘.Predikat huruf hidup tes untuk salah satu dari 10 kemungkinan huruf hidup (lima huruf dan lima huruf kecil), menggunakan nilai-nilai ASCII.

Input and Output Using Files
Prolog mengambil semua input dari current input stream dan menulis semua output kecurrent output stream. Secara default kedua urutan ini bernama pengguna,menunjukkan pengguna terminal, yaitu untuk input keyboard dan layar untuk memperoleh keluaran. Perhatikan bahwa tidak ada file bisa terbuka untuk input maupunoutput pada waktu yang sama (kecuali pengguna) dan bahwa pengguna input dan output stream tidak dapat ditutup.
File Output: Changing the Current Output Stream
current output stream dapat diubah menggunakan tell / 1 predikat. Ini membutuhkanargumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnyakirim ( ‘outfile.txt’). Mengevaluasi tell menyebabkan file bernama untuk menjadi arus keluaran arus. Jika file belum terbuka, file dengan nama tertentu pertama kali diciptakan(semua file yang sudah ada dengan nama yang sama akan dihapus). Perhatikan bahwa file yang sesuai dengan current output stream sebelumnya tetap terbuka ketika current output stream baru dipilih. Hanya current ouput stream dapat ditutup .Output ke sebuah FileMeskipun definisi di atas tell menyatakan bahwa ’semua file yang sudah ada dengan yang sama Namanya dihapus ‘, ada kemungkinan lain, yang penting bagi beberapaaplikasi, yaitu bahwa file tersebut tidak dihapus dan setiap output ditempatkan setelahakhir isi yang ada file. Baik ‘menimpa’ dan ‘append’ pilihan kemungkinan besar akan tersedia dalam pelaksanaan praktis Prolog tetapi mungkin melibatkan menggunakan predikat yang berbeda (misalnya terbuka) sebagai pengganti atau serta tell.
File Input: Changing the Current Input Stream
Input stream yang aktif dapat diubah dengan menggunakan see/ 1 predikat. Ini membutuhkan argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya0see ( ‘myfile.txt’). Mengevaluasi sebuah tujuan see menyebabkan file bernama curent input stream.Jika file ini belum terbuka itu pertama kali dibuka (untuk akses baca saja). Jika tidak mungkin untuk membuka file dengan nama yang diberikan, kesalahan akan dihasilkan Built-in predikat see / 1 memerlukan satu argumen, yang harus menjadi variabel dan biasanya akan terikat. Mengevaluasi sebuah tujuan see menyebabkan variabel yang akan terikat nama current input stream.
Reading from file: End of File

Jika akhir file ditemukan ketika mengevaluasi tujuan read (X), variabel X akanterikat ke atom end_of_file.Jika akhir file ditemukan saat mengevaluasi tujuan mendapatkan (X) atau get0 (X),variabel X akan terikat kepada seorang ‘khusus’ nilai numerik. Sebagai nilai-nilai ASCII harus dalamkisaran 0-255 inklusif, ini biasanya akan menjadi -1, tetapi dapat bervariasi dari satuProlog pelaksanaan lain.
Reading from file: End of RecordTergantung pada versi Prolog digunakan, mungkin ada ketidakcocokan untukkarakter input antara membaca akhir sebuah catatan (yaitu karakter (s) yangmenandai akhir baris) dari terminal pengguna dan dari sebuah file.Biasanya akhir baris dari input pada terminal pengguna akan ditunjukkan olehkarakter dengan nilai ASCII 13. Akhir sebuah catatan dalam sebuah file umumnya akanditunjukkan oleh dua nilai ASCII: 13 diikuti oleh 10.Program berikut menunjukkan bagaimana membaca dalam serangkaian karakter darikeyboard dan mencetak mereka keluar, satu per baris.Perhatikan penggunaan put daripada write dan bahwa tes untuk nilai ASCII 13 menghindari kebutuhan untuk karakter seperti * untuk menunjukkan ‘akhir input’

 

PENERAPAN EXPERT SYSTEM DALAM IDENTIFIKASI NOMOR PLAT KENDARAAN dan PEMBAYARAN UNTUK PARKIR

Posted in Rancangan Sistem Pakar on November 24, 2009 by diskrit

LATAR BELAKANG :

Jika kita ke pusat perbelanjaan atau kantor – kantor yang ramai seperti kantor pemerintahan atau perusahaan – perusahaan besar baik negeri maupun swasta. Terkadang kita melihat betapa ribet dan tidak efisiennya sistem perpakiran di Indonesia. Dewasa ini sistem perparkiran di Indonesia selalu melibatkan manusia di didalamnya sebagai penjaga di pintu masuk dan keluar parkir. Mereka mencatat  nomor plat kendaraan yang masuk dalam tiket parkir (baik secara manual yaitu tulis tangan maupun diketik dan dicetak melalui mesin pencetak tiket) dan memeriksa tiket parkir tersebut saat kendaraan akan keluar meninggalkan area parkir. Begitu pula dalam hal pembayaran yang masih memakai tenaga kerja manusia. Hal ini tentu memakan waktu dan tenaga para pekerjanya, belum lagi karena penerapan pekerja manusia, aspek human error tentu dapat terjadi sewaktu – waktu. Pada intinya kelompok kami menilai sistem perparkiran di Indonesia pada umumnya masih belum efektif dan perlu adanya peningkatan menjadi sistem yang bekerja secara otomatis tanpa bantuan manusia.

 

TUJUAN :

Dengan sistem pengenal (identifikasi) plat nomor kendaraan secara otomatis (memakai mesin) diharapkan sistem perparkiran akan berjalan jauh lebih efektif,efisien, dan bebas dari human error.

 

PENJELASAN :

Sistem ini dimulai dari pintu masuk kendaraan ke  area parkir, dari pintu masuk tersebut terdapat alat berkamera yang mampu mengidentifikasi plat nomor kendaraan. Secara otomatis alat tersebut mencetak tiket  parkir yang terdapat nomor seri plat nomor kendaraan tersebut beserta barcode code tiket yang dapat diambil oleh pengendara. Saat kendaraan tersebut akan keluar area  parkir pengendara hanya tinggal memasukkan tiket ke alat pembaca tiket dan pembayaran yang terdapat pada pintu keluar area parkir. Dalam pintu keluar parkir juga terdapat alat identifikasi nomor plat kendaraan yang akan keluar. Jika barcode dan nomor plat yang tertera pada tiket cocok dengan identifikasi plat nomor kendaraan yang akan keluar serta uang yang dimasukkan oleh pengemudi valid (dalam hal ini memang ditekankan pembayaran dengan uang pas), maka gerbang keluar area parkir akan terbuka dan kendaraan dapat keluar dari area parkir.

Summary :OPERATOR AND ARITHMETIC in Prolog

Posted in Tutorial on November 12, 2009 by diskrit
1. Operator
Binary predicate (predikat dengan dua argumen) dapat diubah menjadi bentuk infix operator. Contoh :
Standar : makan (kucing,tikus)
infix operator  : kucing makan tikus
Unary predikat (predikat dengan satu argumen) dapat diubah menjadi bentuk prefix operator atau postfix operator. Contoh :
Standar : lucu (anjing)
prefix operator : lucu  anjing
postfix operator: anjing lucu
2. Aritmatika
Dengan Prolog kita dapat melakukan penghitungan aritmatika.
a. Operator Aritmatika
X+Y (penjumlahan)
X-Y (pengurangan)
X*Y (perkalian)
X/Y (pembagian)
X//Y the ‘integer quotient’ of X and Y (the result is truncated to the nearest integer between it and zero)
X^Y (pangkat)
-X (negatif)
abs(X) (nilai absolut)
sin(X) (sinus)
cos(X) (cosinus)
max(X,Y)(nilai terbesar)
sqrt(X) (akar)
b. Pengutamaan Operator Dalam Ekspresi Aritmatika
Prolog menggunakan algoritma aljabar biasa dalam pengopersian aritmatika. Contohnya A+B*C-D. Di dalam ajabar C dan D dikalikan lebih dahulu lalu ditambah dengan A lalu dikurangi dengan D. DI prolog juga demikian. Untuk pengecualian, kita tinggal menggunakan kurung. Contoh : (A+B)*(C+D).
c. Operator Relasi
Operator seperti =, !=, >,>=, <, =<, dapat digunakan di Prolog.
3. Operator Pembanding
Berikut merupakan daftar dari equality operators yang digunakan dalam prolog beserta fungsi dari masing-masing operator.
Arithmetic Expression Equality =:=
Arithmetic Expression Inequality =\=
Terms Identical ==
Terms Not Identical \==
Terms Identical With Unification =
Non-Unification Between Two Terms \=
4. Operator Logika
a. Operator Not
Operator not dapat ditempatkan sebelum predikat untuk memberikan negasi. Predikat yang dinegasikan bernilai benar jika predikat yang asli salah dan bernilai salah jika predikat yang asli benar. Contoh penggunaan operator not :
dog(fido).
?- not dog(fido).
no
?- dog(fred).
no
?- not dog(fred).
yes
b. Operator Disjungsi
Operator disjungsi (;) digunakan sebagai operator ‘atau’. Contoh :
?- 6<3;7 is 5+2.
yes
?- 6*6=:=36;10=8+3.
yes
LATIHAN:
1. membuat program dengan operator form berdasarkan gambar dibawah ini
jadi kita akan merevisi program diatas dengan operator form dan menjadi seperti ini:
setelah direvisi, kita jalankan programnya di swi-prolog, tapi….
ups, ternyata terjadi error saat dijalankan… hal ini diterjadi karena setelah kita revisi tadi menggunakan operator form, sebelumnya kita harus menginisialisasikan operator-operator tersebut agar dikenali.. caranya seperti ini
nah, setelah diconsult ulang ternyata, program sudah bisa dipakai
nah, sekarang kita coba programnya dengan mengetik  X chasesY. dan menekan semicolon (;) sampai keluar tulisan no. dan ternyata hasilnya sama dengan hasil program sebelum revisi.
2.Kali ini kita akan mencoba operasi matematika, yang pertama mencari rata-rata dari 2 bilangan, yang kedua mencari akar dari suatu bilangan, dan yang ketiga mencari nilai terbesar diantara keduanya tadi.
@untuk mencari rata-rata 2 bilangan:
pertama kita buat variabel A=10, B =8 dan rumus rata-ratanya adalah jumlah A dan B dibagi 2..
penulisan di prolog seperti ini ?- A=10, B=8, C=(A+B)/2. Maka hasilnya C = 9.
@Untuk mencari akar
Misal variabel D=81, maka untuk mencari akarnya kita tulis, D is sqrt(81). Maka hasilnya D=9.
@Untuk mencari nilai maksimum dari keduanya
Misal:
E = 25 dan F adalah 75.

Untuk mencari nilai terbesar antara rata-rata bilangan dan akar dari penjumalahan tersebut, kita tulis perintah

?- E is 25, F is 75, G is max(((E+F)/2),sqrt(E+F)).

Hasilnya adalah G = 50. Karena (E+F)/2 memiliki nilai lebih besar dibandingkan akar kuadarat dari (E+F).

Fact, Rules, Predicate, and Variable

Posted in Tutorial on October 22, 2009 by diskrit

Oke, ini adalah tutorial kedua dari logikalogic

Kali ini kita membahas tentang Fact, Rules, Predicate, and Variable yang akan kita aplikasikan di prolog. Tutorial ini berdasarkan soal yang ada di buku Logic Programming Using PROLOG, Exercise 2.

Baik kita mulai dari soal nomor 1:

Disini kita disediakan list animal.

Untitled

kita disuruhan untuk mencari :

1. semua mammalia

2. semua karnivora yang mammalia

3. semua mammalia dengan garis

4. dan semua reptil yang memiliki bulu

pertama – tama kita mengerjakan suruhan yang pertama:

disini kita menggunakan perintah ?- animal(mammal,X,Y,Z). pada prolog seperti gambar berikut

Untitled2

setelah muncul hasil pertama, kita tekan semicolon(;) sampai muncul tulisan “no” untuk melihat seluruh hasil.

untuk suruhan kedua, kita menggunakan perintah ?- animal(mammal,X,carnivore,Y). seperti gambar berikut

Untitled3

untuk suruhan ketiga, kita menggunakan perintah ?-animal(mammal,X,Y,stripes). seperti gambar berikut

Untitled4

dan untuk suruhan terakhir, kita menggunakan perintah ?- animal(reptile,X,Y,mane). dan ternyata tidak ditemukan reptile dengan bulu

Untitled5

nah itu untuk soal nomor satu…

Sekarang kita lanjut ke soal nomor 2 :

disini kita disuruh mencari kemungkinan pasangan yang ada dalam list berikut

Untitled6

disini kami menambah kan perintah pasangan(X,Y) :-person(X,male),person(Y,female). untuk membuat program mencari kemungkinan pasangan.

lalu pada prolog kita memakai perintah pasangan(X,Y). untuk menampilkan semua kemungkinan seperti gambar berikut

Untitled7

Nah sekian Tutorial kedua. Semoga bermanfaat…

Rule-Based Expert System

Posted in Literature on October 21, 2009 by diskrit

Representasi Pengetahuan dengan Rules (aturan) sering disebut juga dengan Sistem Produksi

Suatu Rule Terdiri dari 2 bagian, yaitu:

  • Antacedent, yaitu bagian yang mengekspresikan situasi atau premis (Pernyataan berawalan IF)
  • Konsekuen, yaitu bagian yang menyatakan suatu tindakan tertentu atau konklusi yang diterapkan jika situasi atau premis bernilai benar (Pernyataan berawalan THEN).

Misalnya:

IF lalulintas pagi ini macet
THEN saya naik sepeda motor saja
v  Konsekuensi atau konklusi pada bagian THEN akan dinyatakan benar jika bagian IF pada sistem tersebut juga benar atau sesuai dengan aturan tertentu
v  Dua metode reasoning (penalaran) pada rules:

  • Forward Chaining : pelacakan dimulai dari keadaan (informasi, fakta atau data) awal, dan kemudian mencocokan dengan tujuan yang diharapkan
  • Backward Chaining: Penalaran ini dimulai dari tujuan atau hipotesa, baru dicocokan dengan keadaan awal atau fakta yang ada.

User Interface: bagian dimana user bisa melihat dan berinteraksi dengan sistem. Biasanya dalam bentuk display teks ataupun grafik yang interaktif.

Developer Interface: bagian dimana knowledge engineer mengembangkan sistem, biasanya dalam bentuk pengembangan source code dari sistem.

Explanation Facility: merupakan subsistem yang bertanggung jawab untuk menyediakan explanation (penjelasan) dari proses reasoning dari sistem.

External Program: program lain seperti database, algoritma ataupun spreedsheat yang bisa digunakan untuk mendukung sistem

KEUNTUNGAN SISTEM BERBASIS ATURAN:

  • Ekspresi yang alamiah (natural)
  • Bagian Pengendali yang terpisah dengan Pengetahuan
  • Modularitas Pengetahuan
  • Mudah melakukan ekspansi sistem
  • Menggunakan pengetahuan yang relefan
  • Dapat menggunakan Pengetahuan Heuristik
  • Dapat menggunakan Pengetahuan yang Uncertainty
  • Dapat menggunakan variabel

KEKURANGAN/KERUGIAN SISTEM BERBASIS ATURAN:

  • Membutuhkan kondisi yang harus benar-benar tepat (exact matching) agar suatu rule dapat di-firing.
  • Tidak dapat melakukan override
  • Sistem bisa menjadi lambat pada set of rules yang besar

Proses pengembangan sistem pakar sama seperti layaknya pengembangan perangkat lunak, dilakukan dalam beberapa tahap.

  1. Mengidentifikasi Masalah dan Kebutuhan. Mengkaji situasi dan memutuskan dengan pasti tentang masalah yang akan dikomputerisasi dan apakah dengan sistem pakar bisa lebih membantu atau tidak.
  2. Menentukan masalah yang cocok. Ada beberapa syarat yang harus dipenuhi agar sistem pakar dapat bekerja dengan baik, yaitu:
    1. Domain masalah tidak terlalu luas
    2. Kompleksitasnya menengah, artinya jika masalah terlalu mudah atau masalah yang sangat kompleks, maka tidak perlu menggunakan sistem pakar
    3. Tersedianya Ahli ataupun sumber kepakaran
    4. Menghasilkan solusi mental bukan fisik, artinya sistem pakar hanya memberikan anjuran, tidak bisa melakukan aktifitas fisik seperti membau atau merasakan
    5. Tidak melibatkan hal-hal yang bersifat common-sense.
  3. Menghitung pengembalian investasi. Termasuk diantaranya biaya pembuatan sistem pakar, biaya pemeliharaan dan biaya training.
  4. Memilih alat pengembangan. Bisa menggunakan software pembuat sistem pakar (seperti: SHELL) atau dirancang dengan bahasa pemrograman AI (Lisp dan PROLOG) maupun  pemrograman konvensional (Basic, Pascal, C, dll)
  5. Rekayasa Pengetahuan. Perlu dilakukan penyempurnaan terhadap aturan-atauran yang sesuai.
  6. Merancang sistem. Bagian ini termasuk pembuatan prototype, serta menerjemahkan pengetahuan menjadi aturan-aturan
  7. Melengkapi proses pengembangan.
  8. Menguji dan memperbaiki kesalahan
  9. Dokumentasi Aplikasi. Jika sistem yang diuji telah memberikan hasil yang sesuai, maka dilakukan dokumentasi dari sistem yang dikembangkan.
  10. Memelihara sistem

Expert System(Sistem Pakar)

Posted in Literature on October 20, 2009 by diskrit

Secara umum, sistem pakar adalah sistem yang berusaha mengadopsi pengetahuan manusia ke komputer yang dirancang untuk memodelkan kemampuan menyelesaikan masalah seperti layaknya seorang pakar. Dengan sistem pakar ini, orang awam pun dapat menyelesaikan masalahnya atau hanya sekedar mencari suatu informasi berkualitas yang sebenarnya hanya dapat diperoleh dengan bantuan para ahli di bidangnya. Sistem pakar ini juga akan dapat membantu aktivitas para pakar sebagai asisten yang berpengalaman dan mempunyai asisten yang berpengalaman dan mempunyai pengetahuan yang dibutuhkan. Dalam penyusunannya, sistem pakar mengkombinasikan kaidah-kaidah penarikan kesimpulan (inference rules) dengan basis pengetahuan tertentu yang diberikan oleh satu atau lebih pakar dalam bidang tertentu. Kombinasi dari kedua hal tersebut disimpan dalam komputer, yang selanjutnya digunakan dalam proses pengambilan keputusan untuk penyelesaian masalah tertentu.

Ciri-Ciri Sistem Pakar

Sistem pakar yang baik harus memenuhi ciri-ciri sebagai berikut :

  • • Memiliki informasi yang handal.
  • • Mudah dimodifikasi.
  • • Dapat digunakan dalam berbagai jenis komputer.
  • • Memiliki kemampuan untuk belajar beradaptasi.

Keuntungan Sistem Pakar

Secara garis besar, banyak manfaat yang dapat diambil dengan adanya sistem pakar, antara lain :

1. Memungkinkan orang awam bisa mengerjakan pekerjaan para ahli.

2. Bisa melakukan proses secara berulang secara otomatis.

3. Menyimpan pengetahuan dan keahlian para pakar.

4. Meningkatkan output dan produktivitas.

5. Meningkatkan kualitas.

6. Mampu mengambil dan melestarikan keahlian para pakar (terutama yang termasuk keahlian langka).

7. Mampu beroperasi dalam lingkungan yang berbahaya.

8. Memiliki kemampuan untuk mengakses pengetahuan.

9. Memiliki reabilitas.

10. Meningkatkan kapabilitas sistem komputer.

11. Memiliki kemampuan untuk bekerja dengan informasi yang tidak lengkap dan mengandung ketidakpastian.

12. Sebagai media pelengkap dalam pelatihan.

13. Meningkatkan kapabilitas dalam penyelesaian masalah.

14. Menghemat waktu dalam pengambilan keputusan

.

Kelemahan Sistem Pakar

Di samping memiliki beberapa keuntungan, sistem pakar juga memiliki beberapa kelemahan, antara lain :

1. Biaya yang diperlukan untuk membuat dan memeliharanya sangat mahal.

2. Sulit dikembangkan. Hal ini tentu saja erat kaitannya dengan ketersediaan pakar di bidangnya.

3. Sistem Pakar tidak 100% bernilai benar.

Alasan Pengembangan Sistem Pakar

Sistem pakar sendiri dikembangkan lebih lanjut dengan alasan :

  • • Dapat menyediakan kepakaran setiap waktu dan di berbagai lokasi.
  • • Secara otomatis mengerjakan tugas-tugas rutin yang membutuhkan seorang pakar.
  • • Seorang pakar akan pensiun atau pergi.
  • • Seorang pakar adalah mahal.
  • • Kepakaran dibutuhkan juga pada lingkungan yang tidak bersahabat.

Modul Penyusun Sistem Pakar

Menurut Staugaard (1987) suatu sistem pakar disusun oleh tiga modul utama yaitu :

1. Modul Penerimaan Pengetahuan (Knowledge Acquisition Mode) Sistem berada pada modul ini, pada saat ia menerima pengetahuan dari pakar. Proses mengumpulkan pengetahuan-pengetahuan yang akan digunakan untuk pengembangan sistem, dilakukan dengan bantuan knowledge engineer. Peran knowledge engineer adalah sebagai penghubung antara suatu sistem pakar dengan pakarnya.

2. Modul Konsultasi (Consultation Mode)

Pada saat sistem berada pada posisi memberikan jawaban atas permasalahan yang diajukan oleh user, sistem pakar berada dalam modul konsultasi. Pada modul ini, user berinteraksi dengan sistem dengan menjawab pertanyaan-pertanyaan yang diajukan oleh sistem.

3. Modul Penjelasan (Explanation Mode)

Modul ini menjelaskan proses pengambilan keputusan oleh system (bagaimana suatu keputusan dapat diperoleh).

Struktur Sistem Pakar

Komponen utama pada struktur sistem pakar menurut Hu et al (1987) meliputi:

1. Basis Pengetahuan (Knowledge Base)

Basis pengetahuan merupakan inti dari suatu sistem pakar, yaitu berupa representasi pengetahuan dari pakar. Basis pengetahuan tersusun atas fakta dan kaidah. Fakta adalah informasi tentang objek, peristiwa, atau situasi. Kaidah adalah cara untuk membangkitkan suatu fakta baru dari fakta yang sudah diketahui.

2. Mesin Inferensi (Inference Engine)

Mesin inferensi berperan sebagai otak dari sistem pakar. Mesin inferensi berfungsi untuk memandu proses penalaran terhadap suatu kondisi, berdasarkan pada basis pengetahuan yang tersedia. Di dalam mesin inferensi terjadi proses untuk memanipulasi dan mengarahkan kaidah, model, dan fakta yang disimpan dalam basis pengetahuan dalam rangka mencapai solusi atau kesimpulan. Dalam prosesnya, mesin inferensi menggunakan strategi penalaran dan strategi pengendalian. Strategi penalaran terdiri dari strategi penalaran pasti (Exact Reasoning) dan strategi penalaran tak pasti (Inexact Reasoning). Exact reasoning akan dilakukan jika semua data yang dibutuhkan untuk menarik suatu kesimpulan tersedia, sedangkan inexact reasoning dilakukan pada keadaan sebaliknya.Strategi pengendalian berfungsi sebagai panduan arah dalam melakukan prose penalaran. Terdapat tiga tehnik pengendalian yang sering digunakan, yaitu forward chaining, backward chaining, dan gabungan dari kedua teknik pengendalian tersebut.

3. Basis Data (Data Base)

Basis data terdiri atas semua fakta yang diperlukan, dimana fakta fakta tersebut digunakan untuk memenuhi kondisi dari kaidah-kaidah dalam sistem. Basis data menyimpan semua fakta, baik fakta awal pada saat sistem mulai beroperasi, maupun fakta-fakta yang diperoleh pada saat proses penarikan kesimpulan sedang dilaksanakan. Basis data digunakan untuk menyimpan data hasil observasi dan data lain yang dibutuhkan selama pemrosesan.

4. Antarmuka Pemakai (User Interface)

Fasilitas ini digunakan sebagai perantara komunikasi antara pemakai.dengan komputer.

Teknik Representasi Pengetahuan

Representasi pengetahuan adalah suatu teknik untuk merepresentasikan basis pengetahuan yang diperoleh ke dalam suatu skema/diagram tertentu sehingga dapat diketahui relasi/keterhubungan antara suatu data dengan data yang lain. Teknik ini membantu knowledge engineer dalam memahami struktur pengetahuan yang akan dibuat sistem pakarnya. Terdapat beberapa teknik representasi pengetahuan yang biasa digunakan dalam pengembangan suatu sistem pakar, yaitu

a. Rule-Based Knowledge

Pengetahuan direpresentasikan dalam suatu bentuk fakta (facts) dan aturan (rules). Bentuk representasi ini terdiri atas premise dan kesimpulan.

b. Frame-Based Knowledge

Pengetahuan direpresentasikan dalam suatu bentuk hirarki atau jaringan frame.

c. Object-Based Knowledge

Pengetahuan direpresentasikan sebagai jaringan dari obyek-obyek. Obyek adalah elemen data yang terdiri dari data dan metoda (proses).

d. Case-Base Reasoning

Pengetahuan direpresentasikan dalam bentuk kesimpulan kasus (cases).

Inferencing dengan Rule : Forward dan Backward Chaining

Inferensi dengan rules merupakan implementasi dari modus ponen, yang direfleksikan dalam mekanisme search (pencarian). Dapat pula mengecek semua rule pada knowledge base dalam arah forward maupun backward. Proses pencarian berlanjut sampai tidak ada rule yang dapat digunakan atau sampai sebuah tujuan (goal) tercapai. Ada dua metode inferencing dengan rules, yaitu forward chaining atau data-driven dan backward chaining atau goal-driven.

a. Backward chaining

  • • Menggunakan pendekatan goal-driven, dimulai dari ekspektasi apa yang diinginkan terjadi (hipotesis), kemudian mengecek pada sebab-sebab yang mendukung (ataupun kontradiktif) dari ekspektasi tersebut.
  • • Jika suatu aplikasi menghasilkan tree yang sempit dan cukup dalam, maka gunakan backward chaining.

b. Forward chaining

  • • Forward chaining merupakan grup dari multiple inferensi yang melakukan pencarian dari suatu masalah kepada solusinya.
  • • Jika klausa premis sesuai dengan situasi (bernilai TRUE), maka proses akan meng-assert konklusi.
  • • Forward chaining adalah data-driven karena inferensi dimulai dengan informasi yang tersedia dan baru konklusi diperoleh.
  • • Jika suatu aplikasi menghasilkan tree yang lebar dan tidak dalam, maka gunakan forward chaining.

How to List All Possible Combination of a Set in PROLOG

Posted in Tutorial on October 12, 2009 by diskrit

Halo, kali ini kami menambah kategori Tutorial dalam blog kami. Tutorial Pertama menggunakan program SWI –Prolog. Prolog adalah bahasa pemrogramman logika yang menggunkan teknik pencarian heuristic .

Ok,  kita mulai Tutorial nya .

1. Buka notepad, mulai buat databasenya. Disini kita membuat elemen – elemen himpunan. Kali ini saya beri nama himpunan “a” dengan elemen 1 dan 2.

1

2. Lalu simpan dalam format *.pl

2
3. Kemudian buka program SWI-Prolog

3
4. Consult file pl tadi, dengan cara File > consult> lalu pilih file yang kita buat tadi dan klik open

4
5. Lalu setelah selesai consult kita ketikkan perintah “a(X),a(Y).” perintah ini untuk menampilkan semua kemungkinan dari elemen – elemen himpunan tadi. Dimana “a” adalah nama himpunan tadi dan X dan Y adalah elemennya.

5
6. Tekan enter, maka hasilnya akan seperti ini.

6
7. Untuk melihat kemungkinan lain tekan “;” sampai muncul tulisan “no”.

7

8. Selesai

Sekian tutorial pertama, tunggu tutorial yang lainnya.

Selamat Mencoba

Welcome

Posted in Artikel on October 1, 2009 by diskrit

Selamat datang di logikalogic Blog
website ini datang dengan tampilan yang fresh, ringan, dan simple

Didalam website ini akan di isi dengan proses dari Final Project kelompok kami untuk mata kuliah Matematika Diskrit….

Semoga blog ini dapat berguna untuk kita semua.

Akhir kata saya ucapkan ….
SELAMAT BERKUNJUNG