Kamis, 17 November 2011

Belajar membuat sistem pakar dengan Strawberry Prolog

Saya akan membuat sebuah sistem pakar penyakit dengan menggunakan aplikasi Strawberry Prolog. Langkah pertama yang harus dilakukan adalah membuka Strawberry prolog tersebut. Pilih menu File lalu klik New, pilih Strawberry Project, klik OK. berikut ini adalah tampilan awalnya : 

Selanjutnya kita harus menuliskan codding ini untuk menghasilkan sebuah sistem pakar :
Penyakit(demam).
Penyakit(flu).
Penyakit(typus).
Penyakit(bisul).
Penyakit(diare).
Penyakit(galau).
Penyakit(muntahber).
Penyakit(tuli).
Ciri(demam,demam,badan_panas,pusing,lesu,lunglay ).
Ciri(flu,pusing,batuk,meriang,meler,mampet).
Ciri(tyfus,mual,maag,lemas,pusing,panas).
Ciri(bisul,bisul,nanah,sakit,benjolan,bau).
Ciri(diare,diare,mules,berak,lemas,pusing).
Ciri(galau,bengong,cuek,mata_bengkak,pipi_sembab,muka_kucel).
Ciri(muntahber,mules,panas,encer,lemas,pusing).
Ciri(tuli,tidak_mendengar,cuek,gak_nyambung,ngeselin,bikin_orang_marah).
tespenyakit(X,Y,Z,A,B,C):-
Penyakit(X),
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
Ciri(X,Y,Z,A,B,C).
?-
read(M,"Masukan gejala 1: "),
read(N,"Masukan gejala 2: "),
read(O,"Masukan gejala 3: "),
read(P,"Masukan gejala 4: "),
read(Q,"Masukan gejala 5: "),
tespenyakit(X,M,N,O,P,Q),
write(M),nl,
write(N),nl,
write(O),nl,
write(P),nl,
write(Q),nl,
write(X).

Sistem pakar yang saya buat ini adalah sistem pakar dalam bidang kedokteran. Sistem pakar ini akan memberi kesimpulan penyakit dari lima gejala yang kita input. Gejala – gejala ini disebut knowledge base. Sedangkan solusi dari penyakit tersebut merupakan fungsi. Misalnya, “Penyakit(demam). “ ini merupakan sebuah fungsi, dan ciri – cirinya disebut knowledge base. Kemudian kita menuliskan” tespenyakit(X,Y,Z,A,B,C) ”. Tespenyakit ini merupakan seperti pointer untuk ciri penyakit. Fungsi penyakit ini dideklarasikan dengan variable X dan Y,Z,A,B,C merupakan variable pengganti dari knowledge yang dimasukkan.
Selanjutnya adalah menuliskan coding yang akan meminta sebuah inputan, yaitu :

read(M,"Masukan gejala 1: "),
read(N,"Masukan gejala 2: "),
read(O,"Masukan gejala 3: "),
read(P,"Masukan gejala 4: "),
read(Q,"Masukan gejala 5: "),

Perintah read merupakan perintah yang digunakan untuk membaca atau memasukkan input, maka akan menampilkan sebuah window baru, misalnya yang berjudul “Masukan gelaja 1:” kemudian gelaja 1 yang kita input ini akan disimpan kedalam variable M, gejala 2 akan dimasukkan kedalam variable N, gejala 3 akan dimasukkan kedalam variable O, gejala 4 akan dimasukkan kedalam variable P, dan gejala 5 akan dimasukkan kedalam variable Q.
            Kemudian kita menuliskan :
tespenyakit(X,M,N,O,P,Q),
write(M),nl,
write(N),nl,
write(O),nl,
write(P),nl,
write(Q),nl,
write(X).
Perintah diatas berfungsi untuk memasukkan semua inputan yang sudah dimasukkan kedalam fungsi penyakit yang kemudian fungsi tersebut akan dibandingkan dengan knowledge base yang tadi sudah kita tuliskan cirinya. Kemudian program ini akan menghasilkan sebuah output penyakit dimana penyakit ini didapatkan ketika ciri yang dimasukkan sama dengan knowledge yang dituliskan. Penulisan ciri pada saat input harus sama persis dengan apa yang sudah dituliskan, besar kecil huruf dan penggunaan karakter akan  mempengaruhi perbandingannya. Jika sudah selesai, maka output akan ditampilkan dan penyakit yang sesuai dengan gejalanya akan bertuliskan Yes. Misalnya kita memasukkan ciri penyakit tyfus, maka akan keluar hasil seperti ini :


1 komentar:

  1. makasih sangat bermanfaat, tapi mau tanya ini kenapa kok ga da output dan pemberitahuan salah atau benarnya, programnya diem ajah
    :)

    Ciri(flu,pusing,batuk,meriang,meler,mampet).
    Ciri(tyfus,mual,maag,lemas,pusing,panas).
    Ciri(bisul,bisul,nanah,sakit,benjolan,bau).
    Ciri(diare,diare,mules,berak,lemas,pusing).
    Ciri(galau,bengong,cuek,mata_bengkak,pipi_sembab,muka_kucel).
    Ciri(muntahber,mules,panas,encer,lemas,pusing).
    Ciri(tuli,tidak_mendengar,cuek,gak_nyambung,ngeselin,bikin_orang_marah).
    tespenyakit(X,Y,Z,A,B,C):-
    Penyakit(X),
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    Ciri(X,Y,Z,A,B,C).
    ?-
    read(M,"Masukan gejala 1: "),
    read(N,"Masukan gejala 2: "),
    read(O,"Masukan gejala 3: "),
    read(P,"Masukan gejala 4: "),
    read(Q,"Masukan gejala 5: "),
    tespenyakit(X,M,N,O,P,Q),
    write(M),nl,
    write(N),nl,
    write(O),nl,
    write(P),nl,
    write(Q),nl,
    write(X).
    read(M,"Masukan gejala 1: "),
    read(N,"Masukan gejala 2: "),
    read(O,"Masukan gejala 3: "),
    read(P,"Masukan gejala 4: "),
    read(Q,"Masukan gejala 5: "),
    tespenyakit(X,M,N,O,P,Q),
    write(M),nl,
    write(N),nl,
    write(O),nl,
    write(P),nl,
    write(Q),nl,
    write(X).

















    BalasHapus