Contoh Program Source Code /

Metode Forward Chaining dengan Java

Posted on1/08/2016
Join with us

Metode Forward Chaining dengan Java

Forward Chaining (runut maju) 

Forward Chaining (runut maju) mempunyai arti memakai himpunan aturan kondisi-aksi . Dalam metode ini, data dipakai unt menentukan aturan mana yg akan dijalankan, lalu aturan tersebut dijalankan. Mungkin proses menambahkan data ke memori kerja. Proses diulang sampai ditemukan suatu hasil (Wilson,1998).

Forward chaining mrp salah satu dari dua metode utama penalaran ketika memakai mesin inferensi & dapat digambarkan secara logis sebagai aplikasi berulang dari modus ponens. Forward chaining mrp strategi implementasi yg populer untuk sistem pakar, bisnis & sistem aturan produksi. Kebalikan dari forward chaining mrp backward chaining.
Metode Forward Chaining disebut juga penalaran dari bawah ke atas krn penalaran dari fakta pd level  bawah menuju konklusi pd level atas yg didasarkan pd fakta. Dalam hal ini pelacakan diawali dari informasi masukan, & selanjutnya mencoba menggambarkan kesimpulan.

Forward chaining mrp metode pencarian yg memulai proses pencarian dari sekumpulan data atau fakta, dari fakta-fakta tersebut  dicari suatu kesimpulan yg menjadi solusi dari problem yg dihadapi. Backward Chaining mrp metode pencarian yg arahnya kebalikan dari Forward Chaining. Proses pencarian diawali dari tujuan, yaitu kesimpulan yg menjadi solusi dari problem yg dihadapi.

Forward chaining diawali dengan data yg tersedia & memakai aturan inferensi untuk mengambil data lebih (dari pengguna akhir, misalnya) sampai tujuan tercapai. Sebuah mesin inferensi memakai forward chaining pencarian aturan inferensi sampai menemukan satu di mana yg (Jika klausul) dikenal untuk menjadi kenyataan. Ketika aturan tersebut ditemukan, mesin dapat menyimpulkan, atau menyimpulkan, akibatnya (Kemudian klausa), sehingga penambahan informasi baru untuk data.

Mesin inferensi akan iterate melalui proses ini sampai tujuan tercapai.

Contoh problem memakai Forward Chaining, diketahui kaidah tipe IF..THEN..berikut:
IF A THEN B
IF B THEN C
IF C THEN D
Dalam metode ini, data dipakai unt menentukan aturan mana yg akan dijalankan, lalu aturan tersebut dijalankan. unt langkah-langkahnya sebagai berikut :
  1. Catat fakta pertama yg sudah diinputkan oleh user.
  2. Cari rule yg bagian premisnya sesuai dg fakta yg diinputkan.
  3. Jika rule tdk ada maka cari fakta selanjutnya, lalu kembali ke langkah no 2.
  4. Jika rule ada maka akan ketemu konklusi sementara
  5. Cari rule yg memakai konklusi sementara sebagai premis
  6. Jika rule tdk ada maka penyakit tdk ditemukan.
  7. Namun jika rule terpenuhi cari fakta selanjutnya yg sesuai dg konklusi sementara.
  8. Cari rule yg memakai konklusi sementara & fakta selanjutnya sebagai premis.
  9. Jika rule tdk terpenuhi maka penyakit tdk ditemukan, namun jika rule terpenuhi maka penyakit ditemukan.
Tipe sistem yg dapat dicari dengan Forward Chaining :
  1. Sistem yg dipersentasikan dengan satu atau beberapa kondisi.
  2. Untuk setiap kondisi, sistem mecari rule-rule dalam knowledge base untuk rule-rule yg berkorespondensi dengan kondisi dalam bagian IF
  3. Setiap rule dapat menghasilkan kondisi baru dari konklusi yg diminta pada bagian THEN. Kondisi baru ini ditambahkan ke kondisi lain yg sudah ada.
  4. Setiap kondisi yg ditambahkan ke sistem akan diproses. Jika ditemui suatu kondisi baru dari konklusi yg diminta, sistem akan kembali ke langkah 2 & mencari rule-rule dalam knowledge base kembali. Jika tidak ada konklusi baru, sesi ini berakhir.
Terdapat 10 aturan yg tersimpan dalam basis pengetahuan yaitu :
R1 : if A and B then C
R2 : if C then D
R3 : if A and E then F
R4 : if A then G
R5 : if F and G then D
R6 : if G and E then H
R7 : if C and H then I
R8 : if I and A then J
R9 : if G then J
R10 : if J then K
Fakta awal yg diberikan hanya A & E, ingin membuktikan apakah K bernilai benar. Proses penalaran forward chaining terlihat pada gambar dibawah :

Metode Forward Chaining dengan Java

Contoh Kasus

Sistem Pakar : Penasihat Keuangan
Kasus : Seorang user ingin berkonsultasi apakah tepat jika dia berinvestasi pada stock IBM?
Variabel-variabel yg digunakan :
A = punya uang $10.000 untuk investasi
B = berusia < 30 tahun
C = tingkat pendidikan pada level college
D = pendapatan minimum pertahun $40.000
E = investasi pada bidang Sekuritas (Asuransi)
F = investasi pada saham pertumbuhan (growth stock)
G = investasi pada saham IBM
Setiap variabel dapat bernilai TRUE atau FALSE

FAKTA YANG ADA :

  • Diasumsikan si user (investor) punya data:
  • Memiliki uang $10.000 (A TRUE)
  • Berusia 25 tahun (B TRUE)
  • Dia ingin meminta nasihat apakah tepat jika berinvestasi pada IBM stock?
RULES :
  • R1 : IF seseorang punya uang $10.000 untuk berinvestasi AND dia berpendidikan pada level college THEN dia harus berinvestasi pada bidang sekuritas
  • R2 : IF seseorang punya pendapatan per tahun min $40.000 AND dia berpendidikan pada level college THEN dia harus berinvestasi pada saham pertumbuhan (growth stocks)
  • R3 : IF seseorang berusia < 30 tahun AND dia berinvestasi pada bidang sekuritas THEN dia sebaiknya berinvestasi pada saham pertumbuhan
  • R4 : IF seseorang berusia <> 22 tahun THEN dia berpendidikan college
  • R5 : IF seseorang ingin berinvestasi pada saham pertumbuhan THEN saham yg dipilih mrp saham IBM.
Rule simplification:
R1: IF A and C, THEN E
R2: IF D and C, THEN F
R3: IF B and E, THEN F
R4: IF B, THEN C
R5: IF F, THEN G
Solusi dengan Forward Chaining :
  • Step I : IF A and C Then E = R1
  • Step II : IF B then C A,B,C -> True = R4
  • Step III : If A and C then E A,B,C -> True = R2
  • Step IV : If B ad E then F A,B,C,E,F -> true = R3
  • step V : if F then G. G->True
kesimpulan : Cocok untuk investasi saham IBM

Contoh Program Metode Forward Chaining dengan Java

Dasar-dasar kecerdasan buatan: Ini mrp implementasi forward chaining yg bekerja dg basis pengetahuan bentuk tanduk. Memiliki beberapa kesulitan menemukan apapun yg sederhana & mudah dimengerti  Contoh program ini di buat dengan bahasa pemrograman Java.

Source Code Java

import java.util.*;
import java.io.*;
 
// unt menjalankan hanya melakukan: FC baru (bertanya, tahu) & lalu fc.execute ()
// Tanyakan mrp simbol proposisi
// & memberitahu mrp basis pengetahuan
// Bertanya: r
// Kirim: p => q; q => r; p; q;
 
class FC{

// Membuat variabel
public static String tell;
public static String ask;
public static ArrayList<String> agenda;
 
public static ArrayList<String> facts;
public static ArrayList<String> clauses;
public static ArrayList<Integer> count;
public static ArrayList<String> entailed;
 
 
public FC(String a, String t){

     // Inisialisasi variabel
     agenda  = new ArrayList<String>();
     clauses  = new ArrayList<String>();
     entailed  = new ArrayList<String>();
     facts  = new ArrayList<String>();
     count  = new ArrayList<Integer>();
     tell = t;
     ask = a;
     init(tell);
}
 
// Metode yg menyebut fcentails utama () 
// metode & mengembalikan output kembali ke iengine

public String execute(){
     String output = "";
     if (fcentails()){
     
      // metode kembali benar sehingga memerlukan
      output = "YES: ";
      
      // unt masing-masing memerlukan simbol
      for (int i=0;i<entailed.size();i++){
           output += entailed.get(i)+", ";
      }
      output += ask;     
     }
     else{
      output = "NO";
     }
     return output;     
}
 
// FC algorithm
public boolean fcentails(){

// loop melalui sementara ada fakta yg belum diolah
while(!agenda.isEmpty()){

     // mengambil item pertama & memprosesnya
      String p = agenda.remove(0);
     
     // menambah mensyaratkan
     entailed.add(p);
     
     // unt masing-masing klausa....
     for (int i=0;i<clauses.size();i++){
     
      // .... yg mengandung p di premisnya
      if (premiseContains(clauses.get(i),p)){
      Integer j = count.get(i);
      
      // mengurangi jumlah: elemen yg tdk diketahui di setiap premis
      count.set(i,--j);
      
      // semua elemen dalam premis yg sekarang dikenal
      if (count.get(i)==0){
      
           // kesimpulan sudah terbukti begitu dimasukkan ke dalam agenda
           String head = clauses.get(i).split("=>")[1];
           
           // sudah kami hanya membuktikan 'meminta'?
           if (head.equals(ask))
       return true;
           agenda.add(head);           
      }
      }     
     }
     }
     
     // jika kita tiba di sini lalu meminta tdk dapat mensyaratkan
     return false;
} 
 
// Metode yg mendirikan nilai awal unt forward chaining 
// mengambil dalam string yg mewakili KB & memisahkannya 
// simbol & klausa, menghitung menghitung dll ..

public static void init(String tell){
   String[] sentences = tell.split(";");
     for (int i=0;i<sentences.length;i++){
 
     if (!sentences[i].contains("=>")) 
     
      // menambahkan fakta unt diproses
      agenda.add(sentences[i]);
     else{
     
      // menambahkan kalimat
      clauses.add(sentences[i]);
      count.add(sentences[i].split("&").length);
      }
     }
}
 
// Metode yg memeriksa jika p muncul dalam premis klausul yg diberikan
// Masukan: klausa, p
// Output: benar jika p mrp premis klausa

public static boolean premiseContains(String clause, String p){
     String premise = clause.split("=>")[0];
     String[] conjuncts = premise.split("&");
     
     // memeriksa apakah p dalam premis
     if (conjuncts.length==1)
     return premise.equals(p);
     else
     return Arrays.asList(conjuncts).contains(p);
}
}



Metode Forward Chaining dengan Java

Forward Chaining (runut maju) 

Forward Chaining (runut maju) mempunyai arti memakai himpunan aturan kondisi-aksi . Dalam metode ini, data dipakai unt menentukan aturan mana yg akan dijalankan, lalu aturan tersebut dijalankan. Mungkin proses menambahkan data ke memori kerja. Proses diulang sampai ditemukan suatu hasil (Wilson,1998).

Forward chaining mrp salah satu dari dua metode utama penalaran ketika memakai mesin inferensi & dapat digambarkan secara logis sebagai aplikasi berulang dari modus ponens. Forward chaining mrp strategi implementasi yg populer untuk sistem pakar, bisnis & sistem aturan produksi. Kebalikan dari forward chaining mrp backward chaining.
Metode Forward Chaining disebut juga penalaran dari bawah ke atas krn penalaran dari fakta pd level  bawah menuju konklusi pd level atas yg didasarkan pd fakta. Dalam hal ini pelacakan diawali dari informasi masukan, & selanjutnya mencoba menggambarkan kesimpulan.

Forward chaining mrp metode pencarian yg memulai proses pencarian dari sekumpulan data atau fakta, dari fakta-fakta tersebut  dicari suatu kesimpulan yg menjadi solusi dari problem yg dihadapi. Backward Chaining mrp metode pencarian yg arahnya kebalikan dari Forward Chaining. Proses pencarian diawali dari tujuan, yaitu kesimpulan yg menjadi solusi dari problem yg dihadapi.

Forward chaining diawali dengan data yg tersedia & memakai aturan inferensi untuk mengambil data lebih (dari pengguna akhir, misalnya) sampai tujuan tercapai. Sebuah mesin inferensi memakai forward chaining pencarian aturan inferensi sampai menemukan satu di mana yg (Jika klausul) dikenal untuk menjadi kenyataan. Ketika aturan tersebut ditemukan, mesin dapat menyimpulkan, atau menyimpulkan, akibatnya (Kemudian klausa), sehingga penambahan informasi baru untuk data.

Mesin inferensi akan iterate melalui proses ini sampai tujuan tercapai.

Contoh problem memakai Forward Chaining, diketahui kaidah tipe IF..THEN..berikut:
IF A THEN B
IF B THEN C
IF C THEN D
Dalam metode ini, data dipakai unt menentukan aturan mana yg akan dijalankan, lalu aturan tersebut dijalankan. unt langkah-langkahnya sebagai berikut :
  1. Catat fakta pertama yg sudah diinputkan oleh user.
  2. Cari rule yg bagian premisnya sesuai dg fakta yg diinputkan.
  3. Jika rule tdk ada maka cari fakta selanjutnya, lalu kembali ke langkah no 2.
  4. Jika rule ada maka akan ketemu konklusi sementara
  5. Cari rule yg memakai konklusi sementara sebagai premis
  6. Jika rule tdk ada maka penyakit tdk ditemukan.
  7. Namun jika rule terpenuhi cari fakta selanjutnya yg sesuai dg konklusi sementara.
  8. Cari rule yg memakai konklusi sementara & fakta selanjutnya sebagai premis.
  9. Jika rule tdk terpenuhi maka penyakit tdk ditemukan, namun jika rule terpenuhi maka penyakit ditemukan.
Tipe sistem yg dapat dicari dengan Forward Chaining :
  1. Sistem yg dipersentasikan dengan satu atau beberapa kondisi.
  2. Untuk setiap kondisi, sistem mecari rule-rule dalam knowledge base untuk rule-rule yg berkorespondensi dengan kondisi dalam bagian IF
  3. Setiap rule dapat menghasilkan kondisi baru dari konklusi yg diminta pada bagian THEN. Kondisi baru ini ditambahkan ke kondisi lain yg sudah ada.
  4. Setiap kondisi yg ditambahkan ke sistem akan diproses. Jika ditemui suatu kondisi baru dari konklusi yg diminta, sistem akan kembali ke langkah 2 & mencari rule-rule dalam knowledge base kembali. Jika tidak ada konklusi baru, sesi ini berakhir.
Terdapat 10 aturan yg tersimpan dalam basis pengetahuan yaitu :
R1 : if A and B then C
R2 : if C then D
R3 : if A and E then F
R4 : if A then G
R5 : if F and G then D
R6 : if G and E then H
R7 : if C and H then I
R8 : if I and A then J
R9 : if G then J
R10 : if J then K
Fakta awal yg diberikan hanya A & E, ingin membuktikan apakah K bernilai benar. Proses penalaran forward chaining terlihat pada gambar dibawah :

Metode Forward Chaining dengan Java

Contoh Kasus

Sistem Pakar : Penasihat Keuangan
Kasus : Seorang user ingin berkonsultasi apakah tepat jika dia berinvestasi pada stock IBM?
Variabel-variabel yg digunakan :
A = punya uang $10.000 untuk investasi
B = berusia < 30 tahun
C = tingkat pendidikan pada level college
D = pendapatan minimum pertahun $40.000
E = investasi pada bidang Sekuritas (Asuransi)
F = investasi pada saham pertumbuhan (growth stock)
G = investasi pada saham IBM
Setiap variabel dapat bernilai TRUE atau FALSE

FAKTA YANG ADA :

  • Diasumsikan si user (investor) punya data:
  • Memiliki uang $10.000 (A TRUE)
  • Berusia 25 tahun (B TRUE)
  • Dia ingin meminta nasihat apakah tepat jika berinvestasi pada IBM stock?
RULES :
  • R1 : IF seseorang punya uang $10.000 untuk berinvestasi AND dia berpendidikan pada level college THEN dia harus berinvestasi pada bidang sekuritas
  • R2 : IF seseorang punya pendapatan per tahun min $40.000 AND dia berpendidikan pada level college THEN dia harus berinvestasi pada saham pertumbuhan (growth stocks)
  • R3 : IF seseorang berusia < 30 tahun AND dia berinvestasi pada bidang sekuritas THEN dia sebaiknya berinvestasi pada saham pertumbuhan
  • R4 : IF seseorang berusia <> 22 tahun THEN dia berpendidikan college
  • R5 : IF seseorang ingin berinvestasi pada saham pertumbuhan THEN saham yg dipilih mrp saham IBM.
Rule simplification:
R1: IF A and C, THEN E
R2: IF D and C, THEN F
R3: IF B and E, THEN F
R4: IF B, THEN C
R5: IF F, THEN G
Solusi dengan Forward Chaining :
  • Step I : IF A and C Then E = R1
  • Step II : IF B then C A,B,C -> True = R4
  • Step III : If A and C then E A,B,C -> True = R2
  • Step IV : If B ad E then F A,B,C,E,F -> true = R3
  • step V : if F then G. G->True
kesimpulan : Cocok untuk investasi saham IBM

Contoh Program Metode Forward Chaining dengan Java

Dasar-dasar kecerdasan buatan: Ini mrp implementasi forward chaining yg bekerja dg basis pengetahuan bentuk tanduk. Memiliki beberapa kesulitan menemukan apapun yg sederhana & mudah dimengerti  Contoh program ini di buat dengan bahasa pemrograman Java.

Source Code Java

import java.util.*;
import java.io.*;
 
// unt menjalankan hanya melakukan: FC baru (bertanya, tahu) & lalu fc.execute ()
// Tanyakan mrp simbol proposisi
// & memberitahu mrp basis pengetahuan
// Bertanya: r
// Kirim: p => q; q => r; p; q;
 
class FC{

// Membuat variabel
public static String tell;
public static String ask;
public static ArrayList<String> agenda;
 
public static ArrayList<String> facts;
public static ArrayList<String> clauses;
public static ArrayList<Integer> count;
public static ArrayList<String> entailed;
 
 
public FC(String a, String t){

     // Inisialisasi variabel
     agenda  = new ArrayList<String>();
     clauses  = new ArrayList<String>();
     entailed  = new ArrayList<String>();
     facts  = new ArrayList<String>();
     count  = new ArrayList<Integer>();
     tell = t;
     ask = a;
     init(tell);
}
 
// Metode yg menyebut fcentails utama () 
// metode & mengembalikan output kembali ke iengine

public String execute(){
     String output = "";
     if (fcentails()){
     
      // metode kembali benar sehingga memerlukan
      output = "YES: ";
      
      // unt masing-masing memerlukan simbol
      for (int i=0;i<entailed.size();i++){
           output += entailed.get(i)+", ";
      }
      output += ask;     
     }
     else{
      output = "NO";
     }
     return output;     
}
 
// FC algorithm
public boolean fcentails(){

// loop melalui sementara ada fakta yg belum diolah
while(!agenda.isEmpty()){

     // mengambil item pertama & memprosesnya
      String p = agenda.remove(0);
     
     // menambah mensyaratkan
     entailed.add(p);
     
     // unt masing-masing klausa....
     for (int i=0;i<clauses.size();i++){
     
      // .... yg mengandung p di premisnya
      if (premiseContains(clauses.get(i),p)){
      Integer j = count.get(i);
      
      // mengurangi jumlah: elemen yg tdk diketahui di setiap premis
      count.set(i,--j);
      
      // semua elemen dalam premis yg sekarang dikenal
      if (count.get(i)==0){
      
           // kesimpulan sudah terbukti begitu dimasukkan ke dalam agenda
           String head = clauses.get(i).split("=>")[1];
           
           // sudah kami hanya membuktikan 'meminta'?
           if (head.equals(ask))
       return true;
           agenda.add(head);           
      }
      }     
     }
     }
     
     // jika kita tiba di sini lalu meminta tdk dapat mensyaratkan
     return false;
} 
 
// Metode yg mendirikan nilai awal unt forward chaining 
// mengambil dalam string yg mewakili KB & memisahkannya 
// simbol & klausa, menghitung menghitung dll ..

public static void init(String tell){
   String[] sentences = tell.split(";");
     for (int i=0;i<sentences.length;i++){
 
     if (!sentences[i].contains("=>")) 
     
      // menambahkan fakta unt diproses
      agenda.add(sentences[i]);
     else{
     
      // menambahkan kalimat
      clauses.add(sentences[i]);
      count.add(sentences[i].split("&").length);
      }
     }
}
 
// Metode yg memeriksa jika p muncul dalam premis klausul yg diberikan
// Masukan: klausa, p
// Output: benar jika p mrp premis klausa

public static boolean premiseContains(String clause, String p){
     String premise = clause.split("=>")[0];
     String[] conjuncts = premise.split("&");
     
     // memeriksa apakah p dalam premis
     if (conjuncts.length==1)
     return premise.equals(p);
     else
     return Arrays.asList(conjuncts).contains(p);
}
}


Metode Forward Chaining dengan Java| Contoh Program

Source CodeMetode Forward Chaining dengan Java

Source Code Tutorial belajar Gratis download Flow Chart PDF ZIP RAR DOC Java C# Visual Basic VB PHP Matlab C++ Penerapan implementasi metode algoritma pemrograman

Tutorial belajarMetode Forward Chaining dengan Java

VB PHP Matlab C++ Penerapan implementasi metode algoritma pemrograman Source Code Tutorial belajar Gratis download Flow Chart PDF ZIP RAR DOC Java C# Visual Basic

Gratis downloadMetode Forward Chaining dengan Java

Chart PDF ZIP RAR DOC Java C# Visual Basic VB PHP Matlab C++ Penerapan implementasi metode algoritma pemrograman Source Code Tutorial belajar Gratis download Flow

Penerapan implementasiMetode Forward Chaining dengan JavaMetode Forward Chaining dengan Java

Posted by: Metode-Algoritma.comMetode Forward Chaining dengan Java| Contoh ProgramUpdated at :







Konsultasi Gratis

Jika ada yang ingin di tanyakan, Kamu bisa melakukan konsultasi gratis kepada team metode-algoritma.com melalui form di bawah. Mohon isi email dengan benar, karena hasil konsultasi akan di kirimkan ke email kamu.


Metode Forward Chaining dengan Java| Contoh Program

Label:,

Copyright © 2013 metode-algoritma.com Allright Reserved|about|sitemap|

Konsultasi gratis