apakah Sistem pakar itu ???
Sistem pakar (Expert System / ES) adalah sistem yang
digunakan untuk menggantikan peranan seorang pakar dalam memberi konsultasi
kepada pimpinan dalam organisasi. Pimpinan organisasi biasa mempekerjakan staff
ahli yang memiliki ke-pakar-an dalam bidang tertentu, misalnya dalam bidang
keuangan, bidang pemasaran, bidang kesehatan, bidang mesin produksi, dan
sebagainya. Ketika pakar sulit diperoleh karena jumlahnya sedikit atau terlalu sibuk
dengan pekerjaan lain, maka diperlukan suatu sistem pakar untuk menggantikan
peranan-nya dalam organisasi.
Ketika suatu sistem pakar akan dibangun, maka seorang
pengembang software (software developer) bekerja bersama dengan seorang pakar,
pengembang ini akan melakukan serangkaian tanya-jawab (knowledge acquisition)
untuk mengumpulkan dasar-dasar pengetahuan (knowledge base) sang pakar.
Dasar-dasar pengetahuan ini kemudian dialihkan menjadi basis-pengetahuan sistem
pakar dalam bentuk fakta dan aturan. Kemudian pengembang membangun suatu mesin
inferensi (inference engine) yang merupakan pembuat keputusan dalam sistem
pakar, mengumpulkan informasi dari user melalui tanya jawab, dan membandingkan
informasi ini dengan basis-pengetahuan, kemudian memutuskan apa yang harus
di-informasikan ke pengguna berdasarkan data/informasi yang diberikannya.
Berikut saya akan mencontohkan bagaimana membuat Sistem
Pakar sederhana dengan menggunakan SWI-Prolog, bisa didapatkan disini.
/* identifikasi cabai
mulai dengan ?- mulai. */
mulai :- hipotesis(Cabai),
write('Saya pikir Cabai itu adalah: '),
write(Cabai),
nl,
ulang.
mulai dengan ?- mulai. */
mulai :- hipotesis(Cabai),
write('Saya pikir Cabai itu adalah: '),
write(Cabai),
nl,
ulang.
/* hipotesis yang akan dites */
hipotesis(merah) :- merah, !.
hipotesis(keriting) :- keriting, !.
hipotesis(bell_pepper) :- bell_pepper, !.
hipotesis(gendot) :- gendot, !.
hipotesis(rawit) :- rawit, !.
hipotesis(jepang) :- jepang, !.
hipotesis(tabasco) :- tabasco, !.
hipotesis(jalapeno):- jalapeno, !.
hipotesis(pimento):- pimento, !.
hipotesis(tidak_dikenali). /* tidak ada diagnosa */
/* aturan identifikasi cabai */
merah :- cukup_pedas,
periksa(berwarna_merah_atau_hijau),
periksa(bentuk_panjang_padat_berisi).
keriting :- pedas,
periksa(berwarna_merah_atau_hijau),
periksa(bentuk_panjang_keriting),
periksa(ukuran_kurang_lebih_5cm).
bell_pepper :- tidak_pedas,
periksa(berwarna_kuning_atau_hijau_atau_merah_atau_ungu),
periksa(bentuk_seperti_lonceng),
periksa(ukuran_gemuk_kurang_lebih_7cm).
gendot :- sangat_pedas,
periksa(berwarna_hijau_atau_orange_atau_kuning),
periksa(bentuk_bulat_pendek_gemuk),
periksa(ukuran_2_sampai_6cm).
rawit :- pedas,
periksa(berwarna_merah_atau_hijau_muda),
periksa(bentuk_seperti_peluru),
periksa(ukuran_kurang_lebih_2cm).
jepang :- sangat_pedas,
periksa(berwarna_merah_atau_hijau_tua),
periksa(bentuk_meliuk-liuk),
periksa(ukuran_kurang_lebih_2cm).
tabasco :- pedas,
periksa(berwarna_merah_atau_orange_atau_kuning),
periksa(bentuk_gemuk_tumpul),
periksa(ukuran_kurang_lebih_1_sampai_2cm).
jalapeno :- cukup_pedas,
periksa(berwarna_hijau_tua_atau_merah),
periksa(bentuk_seperti_peluru),
periksa(ukuran_5_sampai_9cm).
pimento :- tidak_pedas,
periksa(berwarna_merah),
periksa(bentuk_seperti_hati),
periksa(ukuran_panjang_7_samapi_10cm_dan_lebar_5_sampai_7cm).
/* aturan klasifikasi */
tidak_pedas :- periksa(bentuk_gemuk), !.
tidak_pedas :- periksa(tingkat_pedas_0_sampai_500_scoville_units).
cukup_pedas :- periksa(ukuran_5_sampai_10cm).
pedas :- periksa(warna_dominan_merah), !.
pedas :- periksa(tingkat_pedas_30000_sampai_50000_scoville_units).
sangat_pedas :- periksa(ukurannya_pendek), !.
sangat_pedas :- periksa(tingkat_pedas_50000_sampai_350000_scoville_units).
/* Bagaimana cara bertanya */
tanya(Pertanyaan) :-
write('Apakah cabai itu mempunyai ciri '),
write(Pertanyaan),
write('? ),
read(Jawaban),
nl,
( (Jawaban== ya ; Jawaban == y)
->
assert(ya(Pertanyaan)) ;
assert(tidak(Pertanyaan)), fail).
:- dynamic ya/1,tidak/1.
/* Bagaimana memeriksa sesuatu */
periksa(S) :-
(ya(S)
->
true ;
(tidak(S)
->
fail ;
tanya(S))).
/* ulang semua penyataan ya/tidak */
ulang :- retract(ya(_)),fail.
ulang :- retract(tidak(_)),fail.
ulang.
sumber :
Tidak ada komentar :
Posting Komentar