Senin, 14 Desember 2009

Expert System Design in Prolog


EXPERT SYSTEM DESIGN FOR KNOWING THE CHARACTERISTIC OF BLOOD TYPE in SWI PROLOG


Pada Final Project 4, kita telah membuat desain system pakar yang berguna untuk mengetahui karakteristik atau komponen apa saja yang terdapat di dalam setiap golongan darah. Karakteristik tiap golongan darah pun telah kita jelaskan pada final project 4 beserta prolog nya. Namun, kami menganggap prolog yang kami buat sebelumnya belum sempurna. Oleh karena itu, kita akan menunjukkan desain system pakar baru yang kami buat di prolog. Mari kita perhatikan desain system pakar yang telah kami buat:


Sistem Pakar Karakteristik golongan darah ini memiliki data-data sebagai berikut:

Tipe A:

  1. Memiliki Aglutinogen A
  2. Memiliki Aglutinin B
  3. Jika darah ditetesi zat Anti A maka darah akan menggumpal dan Jika darah ditetesi zat Anti B maka darah tidak akan menggumpal.

Tipe B:

  1. Memiliki Aglutinogen B
  2. Memiliki Aglutinin A
  3. Jika darah ditetesi zat Anti A maka darah tidak akan menggumpal dan Jika darah ditetesi zat Anti B maka darah akan menggumpal.

Tipe AB:

  1. Memiliki Aglutinogen A dan B
  2. Tidak memiliki agglutinin
  3. Jika darah ditetesi zat Anti A maka darah akan menggumpa dan Jika darah ditetesi zat Anti B maka darah juga akan menggumpal.

Tipe O:

  1. Tidak Memiliki Aglutinogen
  2. Memiliki Aglutinogen A dan B
  3. Jika darah ditetesi zat Anti A ataupun zat Anti B maka darah tidak akan menggumpal.

Untuk menyimpan Data-Data tersebut dalam notepad agar bisa dijadikan program di prolog maka dapat ditulis atau diketik rule nya pada notepad sebagai berikut:


bloodtype(type_A,aglutinogen_A,aglutinin_B,clump,not_clump).

bloodtype(type_B,aglutinogen_B,aglutinin_A,not_clump,clump).

bloodtype(type_AB,aglutinogen_A_and_B,no_aglutinin,clump,clump).

bloodtype(type_O,no_aglutinogen,aglutinin_A_and_B,not_clump,not_clump).


NB(forgive us if its make you confuse):

type=menjelaskan tentang tipe darah

aglutinogen=menjelaskan aglutinogen yang dimiliki

aglutinin= menjelaskan aglutinin yang dimiliki

clump/not clump=clump/not clump setelah aglutinin menyatakan reaksi darah setelah ditetesi zat Anti A, sedangkan pada clump/not clump bagian akir menyatakan reaksi darah setelah ditetesi zat Anti B.



Kemudian, kami akan membuat program dimana saat di masukkan sebuah kondisi maka dapat disimpulkan jenis golongan darah tersebut. Misalnya:

1. JIKA : Memiliki Aglutinogen A

MAKA : Jenis Golongan Darah adalah Golongan Darah A.

2. JIKA : Memiliki Aglutinin A

MAKA : Jenis Golongan Darah adalah Golongan Darah B.

3. JIKA : Ditetesi zat Anti A menggumpal dan saat ditetesi zat Anti B tidak menggumpal

MAKA : Jenis Golongan Darah adalah Golongan Darah A.


Program pertama yang kami buat yaitu menentukan kondisi aglutinogen yang dimiliki oleh tiap tipe golongan darah. Maka dapat ditulis atau diketik caranya atau rule pada notepad sebagai berikut :


aglutinogen_A:-bloodtype(Darah,Aglutino,_,_,_),Aglutino=aglutinogen_A,

write('Blood Type is '),write(Darah),nl,fail.

aglutinogen_A.


Cara ini juga bisa dilakukan pada setiap golongan darah namun harus merubah persyaratannya terlebih dahulu. Untuk rule selengkapnya, lihat gambar di bawah ini:


Program kedua yang kami buat yaitu menentukan kondisi aglutinin yang dimiliki oleh tiap tipe golongan darah. Maka kita dapat mengetik rulenya pada notepad sebagai berikut :


no_aglutinin:-

bloodtype(Darah,_,Aglutinin,_,_),Aglutinin=no_aglutinin,write('Blood Type is '),write(Darah),nl,fail.

no_aglutinin.

Cara ini juga bisa dilakukan pada setiap golongan darah namun harus merubah persyaratannya terlebih dahulu. Untuk rule selengkapnya, lihat gambar di bawah ini:



Program ketiga yang kami buat yaitu menentukan kondisi saat ditetesi zat anti a dan zat anti b yang terjadi pada tiap tipe golongan darah. Kita dapatt mengetik rulenya pada notepad sebagai berikut :


clump_not:-

bloodtype(Darah,_,_,clump,not_clump),

write('Blood Type is '),write(Darah),nl,fail.

clump_not.


NB: clump_not memiliki arti clump = menggumpal saat ditetesi Zat anti A dan

not = tidak menggumpal saat ditetesi zat anti B.

more example: not_not memiliki arti not = tidak menggumpal saat ditetesi zat anti A dan not= tidak menggumpal saat ditetesi zat anti B.


Cara ini juga bisa dilakukan pada setiap golongan darah namun harus merubah persyaratannya terlebih dahulu. Untuk rule selengkapnya, lihat gambar di bawah ini:



Selain ketiga program diatas, kita juga membuat satu lagi yaitu untuk memunculkan semua karakteristik setiap golongan darah. Caranya yaitu:


tipeO:-bloodtype(type_O,Forename,Surname,Forename1,Surname1),write('The characteristic are: '),nl,write(Forename),nl,write(Surname),nl,write('when its dropped'),write(' by Anti A'),write(' ,its will be '),write(Forename1),nl,write('when its dropped'),write(' by Anti B'),write(' ,its will be '),write(Surname1),nl,fail.

tipeO.


NB: forgive us if this rule too complicated to make you understand.

Cara ini juga bisa dilakukan pada setiap golongan darah namun harus merubah persyaratannya terlebih dahulu. Untuk rule selengkapnya, lihat gambar di bawah ini:



Then, setelah kita menyimpan semua rule yang telah kita kerjakan menjadi satu di notepad dengan format .pl atau prolog, maka kita dapat melihat tampilan program kita dalam SWI Prolog sebagai berikut:


1. Kondisi Aglutiogen



NB: keyword yang digunakan yaitu aglutinogen_(tipe aglutinogen) jika tidak ada maka no_aglutinogen.


2. Kondisi Aglutinin



NB: keyword yang digunakan yaitu aglutinin_(tipe aglutinogen) jika tidak ada maka no_aglutinin.


3.Kondisi saat ditetesi zat Anti A dan zat Anti B



NB: keyword yang digunakan yaitu (kondisi darah saat ditetesi zat antiA)_ (darah kondisi darah saat ditetesi zat antiA) jika tidak menggumpal=not, dan jika menggumpal=clump


4. Menampilkan seluruh karakter yang dimiliki oleh golongan darah



NB: keyword yang digunakan yaitu tipe(jenis golongan darah).


This program inspirated by Logic Programming chapter 6

42 komentar:

  1. for mr.cakson, give comment please for our job...

    BalasHapus
  2. alhamdulillah yg pnting selese

    BalasHapus
  3. I always blog walk to your blog, although without leaving any comment :)
    Good Jobs.

    BalasHapus
  4. Download Page nya mana negh?

    BalasHapus
  5. 嗨!很喜歡來這欣賞你的作品,幫你推推推當上人氣王唷.........................

    BalasHapus
  6. 厚 !!!等了好久的更新~~一定要支持的啦(ΘωΘ)........................................

    BalasHapus
  7. 人間好話,要如海綿遇水牢牢吸住.........................

    BalasHapus
  8. 生存乃是不斷地在內心與靈魂交戰;寫作是坐著審判自己。......................................................................

    BalasHapus
  9. 生存乃是不斷地在內心與靈魂交戰;寫作是坐著審判自己。......................................................................

    BalasHapus
  10. 向著星球長驅直進的人,反比踟躕在峽路上的人,更容易達到目的。............................................................

    BalasHapus
  11. 當一個人內心能容納兩樣相互衝突的東西,這個人便開始變得有價值了。............................................................

    BalasHapus
  12. Words are not living in dictionary. Words are living in mind...................................................

    BalasHapus
  13. Always read stuff that will make you look good if you die in the middle of it.............................................................

    BalasHapus
  14. 一個人的價值,應該看他貢獻了什麼,而不是他取得了什麼....................................................

    BalasHapus
  15. 一棵樹除非在春天開了花,否則難望在秋天結果。............................................................

    BalasHapus
  16. 這不過是滑一跤,並不是死掉而爬不起來了。..................................................

    BalasHapus