Program Sistem Pendukung Keputusan (SPK) Metode Forward Chaining Bahasa C++

Source Code Sistem Pendukung Keputusan (SPK) Metode Forward Chaining Bahasa C++

 

Minikoding.comSource Code Sistem Pendukung Keputusan (SPK) Metode Forward Chaining Bahasa C++ – Halo sahabat minikoding, pernahkah kalian mendegar Sistem Pendukung Keputusan atau SPK. Sistem ini merupakan perkembangan teknologi dari program aplikasi yang membantu untuk menentukan mana opsi yang terbaik, kesimpulan tercocok dalam proses bisinis.

Dalam SPK terdapat banyak sekali metode – metode yang digunakan. Penggunaan metode biasanya disesuaikan dengan objek yang akan dibuat sebuha sistem pendukung keputusan. Untuk apa ? tentunya untuk membantu dalam menentukan opsi dan kesimpulan terbaik berdasarkan data – data yang relevan. Salah satunya yaitu Metode Forward Chaning.
Kali ini admin akan membahas tentang metode Forward Chaining dalam SPK. Topik utama yang akan diangkat yaitu tentang penulisan code / source code metode Forward Chaining dalam bahasa pemrograman C++. Seprtinya admin tidak banyak membicarakan teorti namun langsung kedalam bentuk code. Apabila anda mebutuhkan teorinya maka silahkan cari referensi di perpustakaan atau sumber – sumber terpercaya lainya.
Artikel Terkait:
Disini admin akan memberi sedikit teori tentang metode forwaed chaining, Jadi Forward Chaining adalah sebagai berikut.

Forward Chaining adalah suatu metode logika dalam sistem pendukung keputusan (SPK) yang memulai dari premis (fakta) yang ada dan berusaha mencari kesimpulan baru melalui suatu aturan yang dikenal. Proses ini dilakukan secara berulang sampai tidak ada kesimpulan baru yang dapat ditemukan atau sampai tercapai tujuan yang ditentukan. Dalam Forward Chaining, fakta dan aturan yang baru diperoleh dapat digunakan sebagai premis dalam proses inferensi berikutnya.

Metode ini biasanya sering digunakan menentukan suatu kesimpulan dari beberapa data fakta yang ada. Contoh program dengan metode Forward Chaining adalah dalam pengambilan keputusan, diagnosa medis, dan pemecahan masalah lainnya yang membutuhkan inferensi dari fakta yang ada.

Inferensi adalah proses menarik kesimpulan atau konklusi dari fakta-fakta atau premis yang diketahui. Dalam sistem pendukung keputusan (SPK), inferensi merupakan bagian penting dalam membuat keputusan, diagnosis, atau memecahkan masalah lainnya. Proses inferensi menggunakan aturan-aturan dan logika untuk mengambil kesimpulan dari fakta-fakta yang ada. Inferensi bisa dilakukan secara manual atau dengan bantuan sistem SPK yang memproses fakta-fakta dan aturan-aturan untuk mengeluarkan kesimpulan.

Source Code Sistem Pendukung Keputusan (SPK) Metode Forward Chaining Bahasa C++

Berikut ini beberapa source code dasar SPK Metode Forward Chaining dengan BahasaC++ :

Code 1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<string> premises = {"A", "B", "C"};
vector<vector<string>> rules = {{"A", "B", "C"}, {"B", "C", "D"}, {"C", "D", "E"}};
vector<string> conclusion = {"D", "E"};

bool checkPremise(string p) {
  for (string premise : premises) {
    if (premise == p) return true;
  }
  return false;
}

bool checkConclusion(string c) {
  for (string concl : conclusion) {
    if (concl == c) return true;
  }
  return false;
}

void forwardChaining(vector<string> prem, vector<vector<string>> rule, vector<string> concl) {
  vector<string> newPremises;
  vector<string> inferred;
  bool premiseExists;
  for (vector<string> rulePremises : rules) {
    premiseExists = true;
    for (string rulePremise : rulePremises) {
      if (!checkPremise(rulePremise)) {
        premiseExists = false;
        break;
      }
    }
    if (premiseExists) {
      for (string ruleConclusion : rulePremises) {
        if (checkConclusion(ruleConclusion)) continue;
        inferred.push_back(ruleConclusion);
        newPremises.push_back(ruleConclusion);
      }
    }
  }
  if (!newPremises.empty()) {
    premises.insert(premises.end(), newPremises.begin(), newPremises.end());
    forwardChaining(premises, rules, conclusion);
  } else {
    cout << "Hasil Inferensi: ";
    for (string inf : inferred) {
      cout << inf << " ";
    }
    cout << endl;
  }
}

int main() {
  cout << "Premises: ";
  for (string prem : premises) {
    cout << prem << " ";
  }
  cout << endl;

  cout << "Aturan: " << endl;
  for (vector<string> rule : rules) {
    for (string prem : rule) {
      cout << prem << " ";
    }
    cout << endl;
  }

  cout << "Kesimpulan: ";
  for (string concl : conclusion) {
    cout << concl << " ";
  }
  cout << endl;

  forwardChaining(premises, rules, conclusion);

  return 0;
}
Keterangan :

Program ini memiliki beberapa premis, aturan, dan kesimpulan yang didefinisikan dalam variabel premises, rules, dan conclusion secara global. Fungsi forwardChaining akan mengeksekusi logika Forward Chaining

Code 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <vector>
#include <string>

using namespace std;

const int MAX = 100;

int main() {
  // Daftar fakta yang dikenal
  vector<string> fakta;
  fakta.push_back("HUJAN");
  fakta.push_back("PAKAI JAKET");

  // Daftar aturan yang dikenal
  vector<string> aturan;
  aturan.push_back("JIKA HUJAN MAKA PAKAI JAKET");

  // Proses inferensi dengan metode Forward Chaining
  for (int i = 0; i < aturan.size(); i++) {
    if (aturan[i].find("JIKA") == 0 && aturan[i].find("MAKA") != string::npos) {
      string fakta1 = aturan[i].substr(4, aturan[i].find("MAKA") - 4);
      string fakta2 = aturan[i].substr(aturan[i].find("MAKA") + 4);
      bool adaFakta1 = false;
      bool adaFakta2 = false;
      for (int j = 0; j < fakta.size(); j++) {
        if (fakta[j] == fakta1) {
          adaFakta1 = true;
        }
        if (fakta[j] == fakta2) {
          adaFakta2 = true;
        }
      }
      if (adaFakta1 && !adaFakta2) {
        fakta.push_back(fakta2);
      }
    }
  }

  // Tampilkan hasil inferensi
  cout << "Hasil inferensi: " << endl;
  for (int i = 0; i < fakta.size(); i++) {
    cout << fakta[i] << endl;
  }

  return 0;
}
Keterangan :

Program ini menerima daftar fakta dan aturan yang dikenal, kemudian melakukan inferensi dengan metode Forward Chaining untuk menambahkan fakta baru jika ada aturan yang sesuai. Pada contoh ini, jika terdapat fakta “HUJAN”, maka akan ditambahkan fakta “PAKAI JAKET”.

Baiklah sahabat Minikoding, itulah code syntax dari Sistem Pendukung Keputusan (SPK) Metode Forward Chaining Bahasa C++. Semoga dapat bermanfaat dan menginpirasi anda.

Leave a Reply

Your email address will not be published. Required fields are marked *