EduLaptop Advisor

Aplikasi expert system sederhana berbasis forward chaining untuk rekomendasi laptop mahasiswa.

pythonflaskreactexpert-systemforward-chainingaicampus-project

Share this project:

Project Overview

πŸŽ“ EduLaptop Advisor

image

Aplikasi sederhana berbasis Forward Chaining yang merekomendasikan laptop terbaik untuk mahasiswa berdasarkan jurusan, aktivitas utama, dan budget.
Dibuat menggunakan React (Frontend) dan Flask (Backend).


πŸ‘¨β€πŸ’» Identitas Pembuat

Nama NPM Mata Kuliah
Daffa Fathan 4522210082 Intelligent System

🧠 Deskripsi Singkat

EduLaptop Advisor merupakan sistem pakar sederhana yang menggunakan metode forward chaining untuk menentukan rekomendasi laptop yang sesuai kebutuhan pengguna.
Pengguna hanya perlu memilih:

  1. Jurusan (misal: Informatika, DKV, Bisnis, dsb)
  2. Aktivitas utama (misal: Coding, Desain, Office)
  3. Budget (Rp)

Lalu sistem akan menampilkan rekomendasi laptop beserta aturan-aturan (rules) yang digunakan dalam proses inferensi.


βš™οΈ Teknologi yang Digunakan

Backend

  • Python 3.x
  • Flask
  • Flask-CORS

Frontend

  • React + Vite
  • Tailwind CSS

πŸš€ Cara Menjalankan Project

1. Jalankan Backend (Flask)

cd backend
pip install flask flask-cors
python app.py

Secara default, backend akan berjalan di:

http://localhost:5000

2. Jalankan Frontend (React)

cd frontend
npm install
npm run dev

Frontend akan berjalan di:

http://localhost:5173

🧩 Struktur Project

EduLaptop-Advisor/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app.py
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   β”œβ”€β”€ App.css
β”‚   β”‚   └── ...
β”‚   └── package.json
β”‚
└── README.md

🧠 Contoh Aturan (Forward Chaining Rules)

Kondisi Aturan yang Digunakan Rekomendasi
Jurusan Informatika + Aktivitas Coding + Budget 12jt Butuh CPU kuat & RAM besar ASUS ZenBook 14 / Acer Swift X
Jurusan DKV + Aktivitas Desain + Budget 9jt Butuh GPU Dedicated & Layar IPS ASUS Vivobook 15 / IdeaPad Slim 3
Jurusan Bisnis + Aktivitas Office + Budget 6jt Butuh laptop ringan & hemat daya Acer Swift 1 / Lenovo IdeaPad 1

🧾 API Endpoint

POST /recommend

Request Body:

{
  "jurusan": "informatika",
  "aktivitas": "coding",
  "budget": 12000000
}

Response:

{
  "input_fakta_awal": ["jurusan_informatika", "aktivitas_coding", "budget_mid"],
  "fakta_akhir": [
    "jurusan_informatika",
    "aktivitas_coding",
    "butuh_cpu_i5",
    "butuh_ram_8gb",
    "butuh_ram_16gb",
    "kategori_mid_range",
    "rekomendasi_vivobook_lenovo_ideapad"
  ],
  "log_inferensi": [
    "Rule diterapkan: {'jurusan_informatika'} β†’ butuh_cpu_i5",
    "Rule diterapkan: {'jurusan_informatika'} β†’ butuh_ram_8gb",
    "Rule diterapkan: {'aktivitas_coding'} β†’ butuh_cpu_i5",
    "Rule diterapkan: {'aktivitas_coding'} β†’ butuh_ram_16gb",
    "Rule diterapkan: {'budget_mid'} β†’ kategori_mid_range",
    "Rule diterapkan: {'kategori_mid_range'} β†’ rekomendasi_vivobook_lenovo_ideapad"
  ],
  "rekomendasi": "ASUS Vivobook 15 / Lenovo IdeaPad Slim 3 / HP 14"
}

POST /feedback

Request Body

{
  "jurusan": "informatika",
  "aktivitas": "coding",
  "budget": 9000000,
  "rekomendasi": "ASUS Vivobook 15 / Lenovo IdeaPad Slim 3 / HP 14",
  "feedback": "sesuai"
}

Response

{
  "status": "success",
  "message": "Feedback diterima dan disimpan ke learning_data.json"
}

Catatan:

  1. Nilai feedback dapat berupa "sesuai" atau "tidak_sesuai".
  2. Sistem akan memantau kombinasi yang sering mendapat feedback positif.
  3. Jika pola tertentu muncul berulang kali, sistem otomatis menambah aturan baru agar inferensi berikutnya lebih relevan.

🧬 Mekanisme Learning Agent

  1. Sistem menyimpan setiap kombinasi fakta + hasil rekomendasi + feedback pengguna.
  2. Jika pola tertentu (misal: β€œjurusan desain + aktivitas editing + budget tinggi”) sering mendapat feedback positif, maka:
IF jurusan_desain AND aktivitas_editing AND budget_high β†’ rekomendasi_macbook_air_m2

akan otomatis ditambahkan ke basis pengetahuan.

  1. Dengan ini, sistem belajar secara adaptif, sehingga rekomendasi berikutnya semakin sesuai dengan preferensi pengguna.