SELAMAT DATANG DI RIDWANMUNAWARCRUZER.BLOGSPOT.COM

Selasa, 12 April 2011

Kecerdasan Buatan


PENDAHULUAN
Pengertian Kecerdasan Buatan
            Kecerdasan buatan atau artificial intelligrnce merupakan salah satu bagian dari ilmu computer yang membuat mesin agar dapat melakukan pekerjaan seperti yang dilakukan oleh manusia. Pada awal diciptakannya, komputer hanya difungsikan sebagai alat hitung saja. Namun seiring dengan perkembangan zaman, maka peran komputer semakin mendominasi kehidupan manusia. Komputer tidak lagi hanya digunakan sebagai alat hitung, lebih dari itu komputer diharapkan untuk diberdayakan untuk mengerjakan segala sesuatu yang bisa dikerjakan oleh manusia.
            Manusia bisa menjadi pandai dalam menyelesaikan segala permasalahan di dunia karena manusia mempunyai pengetahuan dan pengalaman. Pengetahuan diperoleh dari belajar. Semakin banyak bekal pengetahuan yang dimiliki oleh seseorang tentu saja diharapkan agar lebih mampu dalam menyelesaikan permasalahan. Namun bekal pengetahuan saja tidak cukup, manusia juga diberikan akal untuk melakukan penalaran, mengambil kesimpulan berdasarkan pengetahuan dan pengalaman yang mereka miliki.
            Agar komputer dapat bertindak dan sebaik manusia, maka komputer juga harus diberi bekal pengetahuan dan mempunyai kemampuan untuk menalar. Untukk itu pula artificial intelligence akan mencoba untuk memberikan beberapa metode untuk membekali komputer dengan kedua komponen tersebut agar komputer bisa menjadi mesin yang pintar.
Lebih detailnya, pengertian kecerdasan buatan dapat dipandang dari beberapa sudut pandang, antara lain:
1.      Sudut pandang kecerdasan
Kecerdasan buatan akan membuat mensin menjadi ‘cerdas’ (mampu berbuat seperti apa yang dilakukan oleh manusia).
2.      Sudut pandang penelitian
Kecerdasan buatan adalah studi bagaimana membuat agar membuat komputer lebih dapat melakukan sesuatu sebaik yang dilakukan oleh manusia.
Domain yang sering dibahas oleh para peneliti meliputi:
a.       Mundanese task
-          Persepsi (vision & speech)
-          Bahasa alami (understanding,generation & translation
-          Pemikiran yang bersifat commonsense
-          Robot control
b.      Formal task
-          Permainan/games
-          Matematika(geometri, logika, kalkulus, integeral, pembuktian.
c.       Expert task
-          analisis financial
-          analisis medical
-          analisis ilmu pengetahuan
-          rekayasa(desain, pencarian kegagalan, perencanaan manufaktur)
3.      sudut pandang bisnis
kecerdasan buatan adalah kumpulan peralatan yang sangat powerful dan metodologis dalam menyelesaikan masalah-masalah bisnis.
4.      Sudut pandang pemrograman
Kecerdasan buatan meliputi studi tentang pemrograman simbolik, penyelesaian masalah (problem solving) dan pencarian(searching).

Untuk melakukan aplikasi kecerdasan buatan ada 2 bagian utama yang sangat dibutuhkan (Gambar 1.1), yaitu:
a.       Basis Pengetahuan (Knowledge Base), berisi tentang fakta-fakta, teori, pemikiran dan hubungan antar sesuatu dengan yang lainnya.
b.      Motor inferensi (inference Engine), yaitu kemampuan menarik kesimpulan berdasarkan pengalaman.

KOMPUTER
Gambar 1.1 Penerapan Kecerdasan Buatan di Komputer

Komponen Turbo Prolog
-          Domains -> pendefinisian tipe data
-          Predicates -> pola kalkulus predikat yang digunakan dalam program
-          Clauses -> koding program
-          Goal -> hasil yang akan dicari dan ditampilkan

Representasi Pengetahuan
1.      Kalkulus predikat – > representasi pengetahuan secara deklaratif.
2.      Jaringan semantic – > representasi pengetahuan secara diagram.
3.      Kaidah produksi – > representasi pengetahuan secara implikasi atau hubungan sebab akibat.

Inferensi dengan rekursi dan list
Rekursi (pengulangan) dan list (daftar) adalah teknik pemrograman yang penting dalam turbo prolog. Rekursi adalah aturan yang memanggil dirinya sendiri untuk melaksanakan suatu maksud dalam program. List adalah tipe data yang merupakan kumpulan objek serupa. Seringkali terhadap tipe data list perlu dilakukan proses rekursi.

Membuat jendela-jendela tampilan
Sintak/predicate – > makewindow(No,AL,AR,J,B,K,T,L)

Argument
Arti
Keterangan
No
Nomor Jendela
Untuk menandai jendela tempat kita berada
AL
Atribut Layar
Berupa kode warna Layar
AR
Atribut Rangka
Berupa kode warna rangka
J
Judul
Nama Judul Window
B
Baris
Posisi baris awal
K
Kolom
Posisi Kolom Awal
T
Tinggi
Tinggi jendela (0..25)
L
Lebar
Lebar jendela (0..80)

Latar Depan
Latar Belakang
Warna
Angka
Warna
Angka
Hitam
0
Hitam
0
Biru
1
Abu-abu
8
Hijau
2
Biru
16
Cyan
3
Biru terang
24
Merah
4
Hijau
32
Magenta
5
Hijau terang
40
Coklat
6
Cyan
48
Putih
7
Merah
64
Abu-abu
8
Merah terang
72
Biru terang
9
Magenta
80
Hijau terang
10
Magenta terang
88
Cyan terang
11
Coklat
96
Merah terang
12
Kuning
104
Magenta terang
13
Putih
112
Kuning
14
Putih terang
120
Putih terang
15













MODUL 1
PROGRAM 1 (Kelulusan)
a.      Coding
Domains
            Nama=symbol
            Nilai=real
            Kelulusan=symbol
Predicates
            hasil_ujian(Nama,Nilai,Kelulusan).
            Tuliskan.
Clauses
            hasil_ujian(budiman,70.6,lulus).
            hasil_ujian(paijo,50.1,tidak_lulus).
            hasil_ujian(bambang,50.7,lulus_bersyarat).
            hasil_ujian(tuti,90.2,lulus).
            hasil_ujian(sari,60.0,lulus).
            hasil_ujian(hendri,88.88,lulus).
            Tuliskan:-
            hasil_ujian(Nama,Nilai,Kelulusan),
            write("Nama=",Nama,"Nilai=",Nilai,"Kelulusan=",Kelulusan),nl,fail.

b.      Output
Pertanyaan 1 :
1)      Jelaskan yang membedakan penggunaan huruf besar dan huruf kecil dalam program Turbo Prolog!
2)      Jelaskan bagaimanakah membuat bagian Database?

Jawab Pertanyaan 1
1)      Nama varibel harus diawali huruf besar atau garis bawah(_) dan. Pada Predikat harus diawali dengan huruf kecil dan dapat diikuti dengan huruf, bilangan atau garis bawah
2)      Untuk membuat bagian database pada bahasa pemrograman prolog adalah dengan cara menuliskan fakta-fakta yang ada didalam clausa kemudian buat aturannya.

PROGRAM 2(Silsilah)
a.       Coding
Domains
            orang=symbol
Predicates
            ibu(orang,orang)
            ayah(orang,orang)
            ortu(orang,orang)
            pendahulu(orang,orang)
Clauses
ibu(bagus,painem).
ibu(mariam,painem).
ibu(paino,painem).
ibu(tono,susi).
ibu(tini,susi).
ibu(budi,mariam).
ibu(marisa,mariam).
ibu(ikang,imah).
ayah(bagus,tugian).
ayah(mariam,tugiman).
ayah(paino,tugiman).
ayah(tono,bagus).
ayah(tini,bagus).
ayah(budi,paijo).
ayah(marisa,paijo).
ayah(ikang,paino).
ortu(A,B):-
ibu(A,B).
ORTU(A,B):-
ayah(A,B).
pendahulu(A,B):-
ortu(A,B1)and
pendahulu(B1,B).

b.      Output






Pohon Silsilah

Kesimpulan
Implementasi sebuah sistem silsilah kepada turbo prolog dapat dilakukan dengan cara membuat struktur silsilah dan menjabarkan hubungan antara satu orang dengan yang lain, misalnya tugiman dan mariam hubungan nya bisa AYAH atau ANAK, maka dalam penulisan di turbo prolog menjadi ayah(mariam,tugiman).



















PROGRAM 3(Penjumlahan Bilangan)
a.       Coding
Predicates
            mulai
            run(integer)
            buat_jendela
            bersihkan_jendela
            jumlahkan
Goal
            mulai.
Clauses
            mulai:-
            buat_jendela,jumlahkan.
            buat_jendela:-
            makewindow(1,23,5," ",0,0,25,80),
            makewindow(2,23,5,"Bilangan1",2,5,5,25),
            makewindow(3,23,5," ",2,34,5,10),
            makewindow(4,23,5,"Bilangan2",2,50,5,25),
            makewindow(5,23,5,"Hasil",10,30,5,25),
            makewindow(6,23,5," ",20,0,5,35).
jumlahkan:-
            run(_),bersihkan_jendela,jumlahkan.
            run(Z):-
            shiftwindow(2),
            cursor(2,1),readint(X),
            shiftwindow(3),write("Tambah"),
            shiftwindow(4),
            cursor(2,0),readint(Y),
            shiftwindow(5),Z=X+Y,
            cursor(2,10),
            write(Z),
            shiftwindow(6),
            write("tekan sembarangn Kunci"),
            readchar(_).
            bersihkan_jendela:-
            shiftwindow(2),clearwindow,
            shiftwindow(3),clearwindow,
            shiftwindow(4),clearwindow,
            shiftwindow(5),clearwindow,
            shiftwindow(6),clearwindow

b.      Output

Jawab Pertanyaan 1.3
  1. Diambil salah satu contoh predikat makewindow pada program diatas seperti
makewindow(2,23,5,"Bilangan 1",2,5,5,15),
2.       (No, AttrLa, AttrRang, Judul, Baris, Kolom, Tinggi, Lebar) dimana pada jendela ini nama jendelanya adalah Bilangan 1.
Keterangan :
No       : No jendela yang dibuat. Berguna untuk menandai jendela tempat kita berada
AttrLa : Atribut layar yang berupa kode warna tertentu.
AttrRang : Atribut rangka yang berupa kode warna tertentu.
Judul        : Judul (Kepala) yang berupa string
Baris        : Posisi baris awal jendela
Kolom      : Posisi kolom awal jendela
Tinggi      : Tinggi jendela (0...25)
Lebar       : Lebar  jendela (0...80)

  1. Predikat makewindow, shiftwindow,clearwindow
  • Makewindow
Digunakan untuk membuat tampilan jendela sesuai dengan keinginan.
  • Shiftwindow
Digunakan untuk mengaktifkan jendela
  • Clearwindow
Digunakan untuk membersihkan jendela.


















MODUL  2
PEMBUATAN 9 KOTAK UNTUK GAME PUZZLE-8

Turbo Prolog menyediakan fasilitas untuk pengolahan layar. Mislnya, mengubah atau mengatur warna latar belakang dan atau huruf-huruf, mengubah ukuran jendela, mengisolasi jendela sedemikian sehingga lebih rapi sesuai keinginan kita. Selain itu dapat pula diuat, digunakan dan dihilangkan jendela-jendela tampilan dengan perintah makewindow, shiftwindow, dan removewindow.
Ø  Predicate makewindow :
makewindow (No, AttrLa, AttrRang, Judul, Baris, Kolom, Tinggi, Lebar)

a.       Coding
Domains
Predicates
buat_jendela.
puzzle_S.
bingkai_S.
kotakA_2.
kotakB_3.
kotakC_1.
kotakD_4.
kotakE_6.
kotakF_7.
kotakG_5.
kotakH_8.
kotakI_0.
Clauses
buat_jendela:-
            makewindow(1,1,2,"A",5,25,5,10),
            makewindow(2,3,4,"B",5,35,5,10),
            makewindow(3,5,6,"C",5,45,5,10),
            makewindow(4,7,8,"D",10,25,5,10),
            makewindow(5,9,10,"E",10,35,5,10),
            makewindow(6,11,12,"F",10,45,5,10),
            makewindow(7,13,14,"G",15,25,5,10),
            makewindow(8,15,16,"H",15,35,5,10),
            makewindow(9,17,18,"I",15,45,5,10),
            makewindow(10,19,20,"PUZZLE",0,0,25,80).         
puzzle_S:-bingkai_S,KotakA_2,KotakB_3,KotakC_1,kotakD_4,KotakE_6,KotakF_7,KotakG_5,KotakH_8,KotakI_0.
            bingkai_S:-shiftwindow(10),clearwindow,nl,nl,write(" S").
            kotakA_1:-shiftwindow(1),clearwindow,write(" 2").
            kotakB_2:-shiftwindow(2),clearwindow,write(" 3").
            kotakC_3:-shiftwindow(3),clearwindow,write(" 1").
            kotakD_4:-shiftwindow(4),clearwindow,write(" 4").
            kotakE_5:-shiftwindow(5),clearwindow,write(" 6").
            kotakF_6:-shiftwindow(6),clearwindow,write(" 7").
            kotakG_7:-shiftwindow(7),clearwindow,write(" 5").
            kotakH_8:-shiftwindow(8),clearwindow,write(" 8").
            KotakI_9:-shiftwindow(9),clearwindow,write(" 0").
Goal
            buat_jendela,puzzle_S.

b.      Output
MODUL  3
TEKNIK PENCARIAN DEPTH FIRST SEARCH
DAN BREADTH FIRST SEARCH PADA PERMAINAN PUZZLE-8



Tugas
  • Basis Pengetahuan

S



E



J

2
3
1

2
3
1

2
3
1
4
6
7

4
6
7


4
6
5
8



5
8

5
8
7

A



F



K

2
3
1

2
3
1

2
3
1
4
6


4

7


6
7
5
8
7

5
6
8

4
5
8

B



G



L

2
3
1

2

3

2

1
4
6
7

4
6
1

4
3
7
5

8

5
8
7

5
6
8

C



H



M

2
3


2

1

2
3
1
4
6
1

4
3
6


4
7
5
8
7

5
8
7

5
6
8

D



I



N

2
3
1

2
3
1

2
3
1
4

6

4
8
6

4
7

5
8
7

5

7

5
6
8



  • Aturan Dasar
Perpindahan kotak bernomor ke kotak kosong :
1.    Kanan         : perpindahan kotak bernomor dari kir ke kanan
2.    Kiri             : perpindahan kotak bernomor dari kanan ke kiri
3.    Atas                        : perpindahan kotak bernomor dari bawah ke atas
4.    Bawah        : perpindahan kotak bernomor dari atas ke bawah


  • Ruang Masalah dengan menggunakan diagram graf


  • Nilai Heuristik
Selisih basis pengetahuan dengan Goal
Goal
3
8
2
6
4

5
1
7

No
S
A
B
C
D
E
F
G
H
I
J
K
L
M
N
1
3
3
3
2
3
3
3
2
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
1
1
1
1
1
1
1
2
2
1
1
1
2
1
1
4
1
1
1
1
1
1
1
1
1
1
0
2
1
0
1
5
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
6
1
1
1
1
2
1
2
1
2
2
2
1
2
2
2
7
1
0
1
0
0
1
1
0
0
0
0
1
1
1
2
8
2
2
3
2
2
3
3
2
2
1
2
3
3
3
3
J
11
10
12
9
11
13
13
10
12
10
10
14
14
12
14

  • Teknik Pencarian dengan pelacakan DFS dan BFS
Berdasarkan nilai euristik di atas, maka goal dapat ditelusuri melalui teknik pencarian Depth First Search sperti pada gambar di bawah :

Penelusuran yang didapat melalui  jalur   “ S – A – C – G ”
a.       Coding
Domains
Predicates
buat_jendela.
puzzle_S.
bingkai_S.
kotakA_1.
kotakB_2.
kotakC_3.
Clauses
buat_jendela:-
            makewindow(1,1,2,"S",5,25,5,10),
            makewindow(2,3,4,"A",5,35,5,10),
            makewindow(3,5,6,"B",5,45,5,10),
            makewindow(10,11,12,"PUZZLE",0,0,25,80).
           
puzzle_S:-bingkai_S,KotakA_1,KotakB_2,KotakC_3.

            bingkai_S:-shiftwindow(10),clearwindow,nl,nl,write("permainan puzzle-3").
            kotakA_1:-shiftwindow(1),clearwindow,write(" S").
            kotakB_2:-shiftwindow(2),clearwindow,write(" A").
            kotakC_3:-shiftwindow(3),clearwindow,write(" B").
Goal

            buat_jendela,puzzle_S.

b.      Output


Jawaban pertanyaan
a.       Rancangan ukuran dan warna jendela
Dalam program di atas digunakan 4 jendela dengan sebagai predicates berikut:
makewindow(1,14,70,"A",5,25,5,10),
     makewindow(2,15,40,"B",5,35,5,10),
     makewindow(3,16,32,"C",5,45,5,10),
     makewindow(10,0,82," My Puzzle - By: HECKTER ",0,0,25,80).

Dalam perancangan warna
b.      Teknik Depth First Search (DFS) dan Breadth First Search (BFS)























MODUL 4
PERANCANGAN SISTEM PAKAR DIAGNOSIS PENYAKIT ANAK

  1. Mengumpulkan fakta-fakta
·      Penyakit yang akan didiagnosis adalah :
a.    Campak
b.    Campak Jerman
c.    Flu
d.   Pilek
e.    Gondongan
f.     Cacar Air
g.    Batuk rejan
·      Gejala dari masing-masing penyakit adalah :
a.    Campak : demam, batuk, konjongtivitas, ingusan, bintik merak dikulit.
b.    Campak Jerman : demam, sakit kepala, ingusan, adanya bintik merah dikulit.
c.    Flu : demam, batuk, konjungtivitas, ingusan, sakit kepala, pegal(linu), kedinginan, sakit tenggorokan.
d.   Pilek : ingusan, sakit kepala, kedinginan, sakit tenggorokan, bersin-bersin.
e.    Gondongan : demam, pembengkakan kelenjar.
f.     Cacar Air : demam, kulit berbintik, pegal(linu), kedinginan.
g.    Batuk Rejan : batuk, ingusan, bersin-bersin.

2.      Menyusun fakta dalam suatu daftar
Gejala
Penyakit

C
cj
f
p
g
ca
Br
Demam
X
X
X

X
X

Batuk
X

X



X
Konjungtivitas
X

X




Ingusan
X
X
X
X


X
Kulit Berbintik
X
X



X

Sakit Kepala

X
X
X



Pegal (linu)


X


X

Kedinginan


X
X

X

Sakit tenggorokan


X
X

X

Bersin-bersin


X
X


X
Pembengkakan Kelenjar




X


(c : campak, cj : campak jerman, f : flu, p : pilek, g : gondongan, ca : cacar air, br : batuk rejan).

Tugas 2 !!!
1.      Data gejala untuk setiap penyakit:
a.       Campak : demam, batuk, konjongtivitas, ingusan, bintik merak dikulit.
b.      Campak Jerman : demam, sakit kepala, ingusan, adanya bintik merah dikulit.
c.       Flu : demam, batuk, konjungtivitas, ingusan, sakit kepala, pegal(linu), kedinginan, sakit tenggorokan.
d.      Pilek : ingusan, sakit kepala, kedinginan, sakit tenggorokan, bersin-bersin.
e.       Gondongan : demam, pembengkakan kelenjar.
f.       Cacar Air : demam, kulit berbintik, pegal(linu), kedinginan.
g.      Batuk Rejan : batuk, ingusan, bersin-bersin.
a.       Coding
domains
            penyakit = string
            gejala = symbol
            tanya = string
            jawab = char
database
            xpositif(gejala)
            xnegatif(gejala)
predicates
            penyebab(penyakit)
            go
            positif(tanya,gejala)
            negatif(tanya,gejala)
            gejala(gejala)
            clear_fakta2
            simpan(gejala,jawab)
            tanya(tanya,gejala,jawab)
            go_once
            diagnosa(penyakit)
            solusi(penyakit)
goal
            clearwindow,
            makewindow(1,7,7,"    DIAGNOSA PENYAKIT ANAK    ",0,0,24,80),
            go,
            removewindow.

clauses
            go:-
                        go_once,nl,nl,nl,nl,nl,
                        write("Ingin mengulang lagi (Y/T) ?"),
                        readchar(Jawab),nl,
                        clearwindow,
                        Jawab = 'y',
                        go.
            go_once:-
                        diagnosa(_),!,
                        save("test.dat"),
                        clear_fakta2.
            go_once:-
                        write("Maaf penyakit tidak bisa didiagnosa"),nl,
                        clear_fakta2.
            positif(_,Gejala):-
                        xpositif(Gejala),!.
            positif(Tanya,Gejala):-
                        not(xnegatif(Gejala)),
                        tanya(Tanya,Gejala,Jawab),
                        Jawab='y'.
            negatif(_,Gejala):-
                        xnegatif(Gejala),!.
            negatif(Tanya,Gejala):-
                        not(xpositif(Gejala)),
                        tanya(Tanya,Gejala,Jawab),
                        Jawab='t'.
            tanya(Tanya,Gejala,Jawab):-
                        write(Tanya),
                        readchar(Jawab),
                        write(Jawab),nl,
                        simpan(Gejala,Jawab).
            simpan(Gejala,'y'):-
                        asserta(xpositif(Gejala)).
            simpan(Gejala,'t'):-
                        asserta(xnegatif(Gejala)).
            clear_fakta2:-
                        retract(xpositif(_)),fail.
            clear_fakta2:-
                        retract(xnegatif(_)),fail.
            clear_fakta2.

/*------------gejala-----------*/

            gejala(Gejala):-
                        xpositif(Gejala),!.
            gejala(Gejala):-
                        xnegatif(Gejala),!,fail.

            gejala(demam):-
                        positif("Apakah Anda demam (Y/T)?",demam).
            gejala(batuk):-
                        positif("Apakah Anda batuk (Y/T)?",batuk).
            gejala(konjungtivitas):-
                        positif("Apakah Anda merasa konjungtivitas (Y/T)? ",konjungtivitas).
            gejala(ingusan):-
                        positif("Apakah Anda ingusan (Y/T)? ",ingusan).
            gejala(kulit_berbintik):-
                        positif("Apakah Anda mengalami kulit_berbintik (Y/T)? ",kulit_berbintik).
            gejala(sakit_kepala):-
                        positif("Apakah Anda mengalami sakit kepala (Y/T)? ",sakit_kepala).
            gejala(pegal):-
                        positif("Apakah Anda mengalami pegal (linu) (Y/T)?",pegal).
            gejala(kedinginan):-
                        positif("Apakah Anda sering kedinginan (Y/T)? ",kedinginan).
            gejala(sakit_tenggorokan):-
                        positif("Apakah Anda mengalami sakit tenggorokan (Y/T)? ",sakit_tenggorokan).
            gejala(bersin_bersin):-
                        positif("Apakah Anda mengalami bersin bersin (Y/T)? ",bersin_bersin).
            gejala(pembengkakan_kelenjar):-
                        positif("Apakah anda mengalami pembengkakan kelenjar (Y/T)? ",pembengkakan_kelenjar).
           

/* --------------------diagnosa------------------ */

            diagnosa("campak"):-
                        gejala(demam),
                        gejala(batuk),
                        gejala(konjungtivitas),
                        gejala(ingusan),
                        gejala(kulit_berbintik),
                        penyebab("campak").
            diagnosa("campak_jerman"):-
                        gejala(demam),
                        gejala(ingusan),
                        gejala(kulit_berbintik),
                        gejala(sakit_kepala),
                        penyebab("campak_jerman").
            diagnosa("flu"):-
                        gejala(demam),
                        gejala(batuk),
                        gejala(konjungtivitas),
                        gejala(ingusan),
                        gejala(sakit_kepala),
                        gejala(pegal),
                        gejala(kedinginan),
                        gejala(sakit_tenggorokan),
                        penyebab("flu").
            diagnosa("pilek"):-
                        gejala(ingusan),
                        gejala(sakit_kepala),
                        gejala(kedinginan),
                        gejala(sakit_tenggorokan),
                        gejala(bersin_bersin),
                        penyebab("pilek").
            diagnosa("gondongan"):-
                        gejala(demam),
                        gejala(pembengkakan_kelenjar),
                        penyebab("gondongan").
            diagnosa("cacar_air"):-
                        gejala(demam),
                        gejala(kulit_berbintik),
                        gejala(pegal),
                        gejala(kedinginan),
                        penyebab("cacar_air").
            diagnosa("batuk_rejan"):-
                        gejala(batuk),
                        gejala(ingusan),
                        gejala(bersin_bersin),
                        penyebab("batuk_rejan").
           
            penyebab("campak"):-
                        gejala(demam),
                        gejala(batuk),
                        gejala(konjungtivitas),
                        gejala(ingusan),
                        gejala(kulit_berbintik),
                        solusi("campak").
            penyebab("campak_jerman"):-
                        gejala(demam),
                        gejala(ingusan),
                        gejala(kulit_berbintik),
                        gejala(sakit_kepala),
                        solusi("campak_jerman").
           
            penyebab("flu"):-
                        gejala(demam),
                        gejala(batuk),
                        gejala(konjungtivitas),
                        gejala(ingusan),
                        gejala(sakit_kepala),
                        gejala(pegal),
                        gejala(kedinginan),
                        gejala(sakit_tenggorokan),
                        solusi("flu").
            penyebab("pilek"):-
                        gejala(ingusan),
                        gejala(sakit_kepala),
                        gejala(kedinginan),
                        gejala(sakit_tenggorokan),
                        gejala(bersin_bersin),
                        solusi("pilek").
            penyebab("gondongan"):-
                        gejala(demam),
                        gejala(pembengkakan_kelenjar),
                        solusi("gondongan").
            penyebab("cacar_air"):-
                        gejala(demam),
                        gejala(kulit_berbintik),
                        gejala(pegal),
                        gejala(kedinginan),
                        solusi("cacar_air").
            penyebab("batuk_rejan"):-
                        gejala(batuk),
                        gejala(ingusan),
                        gejala(bersin_bersin),
                        solusi("batuk_rejan").
           
            solusi(Penyakit):-
                        upper_lower(BPenyakit,Penyakit),nl,nl,nl,
                        write("     Penyakit Anda adalah     ",BPenyakit),nl.
b.      Output







MODUL 5
PERANCANGAN SISTEM PAKAR KERUSAKAN HARDWARE KOMPUTER
(INPUT DAN OUTPUT DEVICE)

1.      Mengumpulkan fakta-fakta
·      Kerusakan yang akan didiagnosis adalah :
a)   Mouse
b)   Keyboard
c)   Monitor
·         Gejala dari masing-masing penyakit adalah :
a)      Mouse              : lampu_optik_mati, kabel_putus,
b)      Keyboard        : tombol_slip, kabel_putus, tidak_booting
c)      Monitor           : lampu_LED_mati, warna_tidak_focus, gambar_layar_tidak penuh

2.      Menyusun fakta dalam suatu daftar
Gejala
Kerusakan
Mouse
Keyboard
Monitor
lampu_optik_mati


kabel_putus

tombol_slip


tidak_booting


lampu_LED_mati


warna_tidak_focus


gambar_layar_tidak penuh



a.       Coding
domains
            kerusakan = symbol
            gejala = symbol
            tanya = string
            jawab = char
database
            xpositif(gejala)
            xnegatif(gejala)
predicates
            penyebab(kerusakan)
            go
            positif(tanya,gejala)
            negatif(tanya,gejala)
            gejala(gejala)
            clear_fakta2
            simpan(gejala,jawab)
            tanya(tanya,gejala,jawab)
            go_once
            diagnosa(kerusakan)
            solusi(kerusakan)
goal
            clearwindow,
            makewindow(1,15,15,"    PAKAR KERUSAKAN HARDWARE (INPUT DEVICE)    ",0,0,24,80),
            go,
            removewindow.

clauses
            go:-
                        go_once,nl,nl,nl,nl,nl,
                        write("Ingin mengulang lagi (Y/T) ?"),
                        readchar(Jawab),nl,
                        clearwindow,
                        Jawab = 'y',
                        go.
            go_once:-
                        diagnosa(_),!,
                        save("test.dat"),
                        clear_fakta2.
            go_once:-
                        write("MAAF KERUSAKAN TiDAK DAPAT TERDETEKSI"),nl,
                        clear_fakta2.
            positif(_,Gejala):-
                        xpositif(Gejala),!.
            positif(Tanya,Gejala):-
                        not(xnegatif(Gejala)),
                        tanya(Tanya,Gejala,Jawab),
                        Jawab='y'.
            negatif(_,Gejala):-
                        xnegatif(Gejala),!.
            negatif(Tanya,Gejala):-
                        not(xpositif(Gejala)),
                        tanya(Tanya,Gejala,Jawab),
                        Jawab='t'.
            tanya(Tanya,Gejala,Jawab):-
                        write(Tanya),
                        readchar(Jawab),
                        write(Jawab),nl,
                        simpan(Gejala,Jawab).
            simpan(Gejala,'y'):-
                        asserta(xpositif(Gejala)).
            simpan(Gejala,'t'):-
                        asserta(xnegatif(Gejala)).
            clear_fakta2:-
                        retract(xpositif(_)),fail.
            clear_fakta2:-
                        retract(xnegatif(_)),fail.
            clear_fakta2.

/*------------gejala-----------*/

            gejala(Gejala):-
                        xpositif(Gejala),!.
            gejala(Gejala):-
                        xnegatif(Gejala),!,fail.

            gejala(lampu_keyboard_mati):-
                        positif("Apakah lampu_keyboard_mati (Y/T)? ",lampu_keyboard_mati).
            gejala(tidak_booting):-
                        positif("Apakah komputer tidak booting (Y/T)? ",tidak_booting).
            gejala(lampu_optik_mati):-
                        positif("Apakah lampu optik mati (Y/T)? ",lampu_optik_mati).
            gejala(kabel_putus):-
                        positif("Apakah kabel mouse putus (Y/T)? ",kabel_putus).
            gejala(lampu_LED_mati):-
                        positif("Apakah lampu_LED_mati (Y/T)? ", lampu_LED_mati).
            gejala(warna_tidak_focus):-
                        positif("Apakah warna_tidak_focus (Y/T)? ", warna_tidak_focus).
            gejala(gambar_layar_tidak_penuh):-
                        positif("Apakah gambar_layar_tidak_penuh (Y/T)? ", gambar_layar_tidak_penuh).

           
/* --------------------diagnosa------------------ */

           
            diagnosa("keyboard"):-
                        gejala(lampu_keyboard_mati),
                        gejala(tidak_booting),
                        penyebab("keyboard").
            diagnosa("mouse"):-
                        gejala(lampu_optik_mati),
                        gejala(kabel_putus),
                        solusi("mouse").
            diagnosa("monitor"):-
                        gejala(lampu_LED_mati),
                        gejala(warna_tidak_focus),
                        gejala(gambar_layar_tidak_penuh),
                        solusi("monitor").
            penyebab("keyboard"):-
                        gejala(lampu_keyboard_mati),
                        gejala(kabel_putus),
                        gejala(tidak_booting),
                        solusi("keyboard").
            penyebab("mouse"):-
                        gejala(lampu_optik_mati),
                        gejala(kabel_putus),
                        solusi("mouse").
            Penyebab(monitor):-
                        gejala(lampu_LED_mati),
                        gejala(warna_tidak_focus),
                        gejala(gambar_layar_tidak_penuh),
                        solusi("monitor").
                       
           
            solusi(Kerusakan):-
                        upper_lower(BKerusakan,Kerusakan),nl,nl,nl,
                        write("     KERUSAKAN PADA KOMPUTER ANDA ADALAH     ",BKerusakan),nl. 
b.      Output

Tidak ada komentar:

Posting Komentar