Sabtu, 23 Desember 2017

SISTEM PAKAR ANALISA JENIS CABAI



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.



/* 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