Welcome to my blog, hope you enjoy reading
RSS

Rabu, 23 Desember 2009

Development of Simple Expert System for Event Register at East Java

Fenomena banyaknya pasien rumas sakit jiwa saat ini mengundang kita untuk lebih mendalami tentang fenomena tersebut. Setelah kami membaca beberapa resensi dan artikel, ternyata penyebab utama banyaknya pasien rumah sakit jiwa tersebut adalah karena stress. Stress dan kesibukan yang tinggi akan menjadikan seseorang menjadi terbebani karena kurangnya refreshing. Maka kami membuat ekspert system tentang panduan even-even yang berlangsung dalam satu tahun sebagai panduan untuk berlibur dan melepaskan penat, meliputi nama event, kota, tanggal penyelenggaraan, klasifikasi, dan genre-nya.

We have three facts: daftarEven, jarak, and foodAvailableAt, shown below:

/*******************************************************
 * daftarEven(Name, Place, Month, Start-Date, *
 *               End-Date, Classification, Genre)      *
 *******************************************************/
daftarEven(shopping-festival, surabaya, 5, 1, 31, family, shopping).
daftarEven(bromo-bike-festival, probolinggo, 8, 26, 31, adult, sport).
daftarEvent(valentineday-party, surabaya, 2, 14, 14, adolescent, party).
daftarEvent(pimits, surabaya, 11, 10, 17, student, science).
daftarEvent(sesindo, surabaya, 12, 12, 12, profesional, seminar).
daftarEvent(persebaya-vs-psm, surabaya, 12, 16, 16, family, sport).
daftarEvent(computer-expo, surabaya, 7, 16, 31, family, exibition).
daftarEvent(konser-ultah, surabaya, 5, 31, 31, adolescent, music).
daftarEvent(kbs, surabaya, -1, -1, -1, family, zoo).
daftarEvent(pandan-wangi, surabaya, -1, -1, -1, family, food).
daftarEvent(karapan-sapi, madura, 8, 17, 20, family, culture).
daftarEvent(reog, ponorogo, -1, -1, -1, family, culture).

foodAvailableAt(shopping-festival,expensive).
foodAvailableAt(persebaya-vs-psm,cheap).
foodAvailableAt(kbs,medium).
foodAvailableAt(pandan-wangi,medium).
foodAvailableAt(valentineday-party,expensive).

jarak(surabaya,probolinggo,100).
jarak(surabaya,madura,50).
jarak(surabaya,ponorogo,125).
jarak(madura,probolinggo),150).
jarak(madura,ponorogo,175).
jarak(probolinggo,ponorogo,200).


Then we make rules :

/*************************************
 * U T I L I T Y   F U N C T I O N S *
 *************************************/
dekat(X,Y)           :- X = Y ;
                 (jarak(X,Y,D), D =< 150) ;
                 (jarak(Y,X,D), D =< 150).

/*E=event,M=month,Ds=date start,De=date-end*/
getDates(E,M,Ds,De)  :- daftarEvent(E,_,M,Ds,De,_,_).
allYearEvent(E)      :- daftarEvent(E,_,-1,-1,-1,_,_).
suitableForKids(E)   :- daftarEvent(E,_,_,_,_,family,_).

/*P=place,c=classification,G=genre*/

getEvent(E,P,C,G)    :- daftarEvent(E,P,_,_,_,C,G).

nearEvents(E,P)      :- dekat(P,Y), getEvent(E,Y,_,_).

/*T=tarif*/

foodAvailable(E,T)   :- foodAvailableAt(E,T) ;
                       (getEvent(E,_,T,G), G = food).

Facts and rules di atas kita simpan dalam file event.pl. Kemudian file pl tersebut kita consult dalam program prolog.



Testing Result
* mencari apakah ada tempat makan di pandan-wangi dan seberapa mahal?
   ? foodAvailable(pandan-wangi, P).


* mencari event pada tempat yang dekat dengan surabaya
   ? nearEvents(E,surabaya).















* mencari adult events di surabaya untuk adult.
        ? getEvents(E,surabaya,adult,_).



 Not the best, but  may useful for u :)

Rabu, 09 Desember 2009

LOOPS IN PROLOG

1. Looping a Fixed Number of Times
Example 1
The following program outputs integers from a specified value down to 1.

Note: Must be M is N-1, loop (M). Because loop(N-1) will not work.
 The result is like this:
?- loop(6).
The value is: 6
The value is: 5
The value is: 4
The value is: 3
The value is: 2
The value is: 1
yes


Selasa, 24 November 2009

INPUT AND OUTPUT in Prolog

Prolog menyediakan fasilitas untuk menampilkan output dan menginput suatu pernyataan (term) atau karakter baik melalui keyboard maupun dari media lain seperti hard disk atau CD-ROM. Penjelasan mengenai hal tersebut akan kami bahas dalam postingan kali ini.
*   Menampilkan output pernyataan
Untuk menampilkan output berupa pernyataan dapat digunakan predikat bawaan dari prolog, yaitu write, writeq, dan nl. Predikat write/1 (satu argumen) digunakan untuk menampilkan output tanpa tanda petik. Predikat writeq sama dengan predikat write, hanya saja writeq menampilkan pernyataan dengan disertai tanda petik (quote), kecuali jika pernyataan yang ditulis hanya satu kata saja, maka tanda petik tidak tertampilkan. Sedangkan predikat nl/0 (tanpa argumen) berfungsi sama dengan tombol enter, yaitu untuk membuat baris baru (new line).
Contoh penggunaan dari predikat-predikat tersebut adalah sebagai berikut.

1. Outputting Terms
The main built-in predicate provided for outputting terms is write/1. Examples:

?- write(26),nl.
26
yes
?- write('a string of characters'),nl.
a string of characters
yes

2. Inputting Terms
The built-in predicate read/1 is provided to input terms. It takes a single argument, which must be a variable. Example:

?- read(X).
: jim.
X = jim

Sabtu, 21 November 2009

Expert System Design (Examples)

We have examples about practiced rule-based expert system in daily life. You can add your experience in comments, of course :).
As known before rule-based is have model If....Then...., like this:
1. IF it’s a rainy day THEN advise people to bring umbrellas when they go out.

2. IF the road is slippery THEN warn people to drive more carefully.

3. IF red light THEN stop.

4. IF green ligth THEN go.

5. IF gejala1 = sakit kepala AND gejala2 = pilek AND gejala3 = demam THEN  penyakit = influenza

6. JIKA seorang pasien terkena gejala dengan ciri-ciri sebagai berikut:
- Nyeri pipi dengan frekuensi ”sangat sering sekali” dan intensitas rasa sakitnya ”sangat sakit sekali”
- Nyeri kepala dengan frekuensi ”sangat sering sekali” dan intensitas rasa sakitnya ”sangat sakit sekali”
- Hidung buntu dengan frekuensi ”sangat sering sekali” dan intensitas rasa sakitnya ”sangat sakit sekali”
MAKA kemungkinan pertama pasien tersebut menderita Sinusitis maksilaris Akut.
 
7.  Diketahui sistem pakar dengan aturan-aturan sebagai berikut:
    R1 : IF suku bunga turun
            THEN harga obligasi naik
    R2 : IF suku bunga naik
          THEN harga obligasi turun
    R3 : IF suku bunga tidak berubah
           THEN harga obligasi tidak berubah
    R4 : IF dollar naik
           THEN suku bunga turun
    R5 : IF dollar turun
           THEN suku bunga naik
    R6 : IF harga obligasi turun
           THEN beli obligasi

Apabila diketahui bahwa dollar turun, maka buatlah keputusan apakah akan membeli obligasi atau tidak ?
Solusi:

Minggu, 08 November 2009

OPERATOR AND ARITHMETIC in Prolog

Now we have a program like this:

















Then we will convert the seven predicates used to operator form which will result the same as output from the program above.

Below is our new program:

Minggu, 18 Oktober 2009

Fact, Rules, Predicate, and Variable in Prolog

It's the Problem

(1) Type the following program into a file and load it into Prolog.
/* Animals Database */
animal(mammal,tiger,carnivore,stripes).
animal(mammal,hyena,carnivore,ugly).
animal(mammal,lion,carnivore,mane).
animal(mammal,zebra,herbivore,stripes).
animal(bird,eagle,carnivore,large).
animal(bird,sparrow,scavenger,small).
animal(reptile,snake,carnivore,long).
animal(reptile,lizard,scavenger,small).

Devise and test goals to find
(a) all the mammals,
(b) all the carnivores that are mammals,
(c) all the mammals with stripes,
(d) whether there is a reptile that has a mane.

and it's the Solution
1. First,You have to type all those words in notepad and then save it with .pl in the end of it's name.

Rule – Based Expert System

Definition:
Rule Based:
Using "if-this, do that" rules to perform actions. Rules-based products implies flexibility in the software, enabling tasks and data to be easily changed by replacing one or more rules.
Expert System:
An expert system is a computer program that simulates the judgement and behavior of a human or an organization that has expert knowledge and experience in a particular field.
Rule Based Expert System:
Rule-based Expert System: An expert system based on a set of rules that a human expert would follow in diagnosing a problem.

Benefits of Expert Systems