Proyek ini mengimplementasikan Sistem Pendukung Keputusan (SPK) berbasis pemrograman Python untuk menentukan paket internet terbaik dari berbagai provider seluler di Indonesia. Penentuan keputusan dilakukan dengan menggunakan pendekatan optimasi bobot kriteria melalui metaheuristik Chimp Optimization Algorithm (ChOA).
- Irfan Syarifudin (NIM: 24.83.1127)
- Sufutra Jaya Inathasalen (NIM: 24.83.1147)
- Pendahuluan
- Dataset dan Parameter Kriteria
- Proses Normalisasi Data (Preprocessing)
- Algoritma Optimasi Chimp (ChOA)
- Formulasi Matematis & Fungsi Fitness
- Alur Kerja Sistem (Workflow)
- Struktur Kode Sumber
- Persyaratan Sistem & Cara Instalasi
- Hasil Eksekusi Program
- Analisis & Kesimpulan
Dalam era digital, pemilihan paket internet sering kali membingungkan konsumen karena adanya trade-off antar kriteria (misalnya, harga murah biasanya menawarkan kuota kecil atau kualitas jaringan yang kurang optimal). Untuk memecahkan masalah ini, proyek ini menggunakan metode Sistem Pendukung Keputusan (SPK).
Alih-alih menentukan bobot kriteria secara subjektif atau manual, sistem ini memanfaatkan Chimp Optimization Algorithm (ChOA) untuk mengoptimalkan bobot preferensi kriteria agar mendekati target preferensi ideal secara objektif. Skor akhir dari masing-masing alternatif paket dihitung menggunakan metode penjumlahan terbobot (Simple Additive Weighting / Weighted Product concept) untuk menghasilkan perankingan paket internet terbaik.
Sistem mengevaluasi 12 alternatif paket internet dari 6 provider berbeda (Telkomsel, Tri, by.U, Indosat IM3, XL, dan Smartfren) berdasarkan 5 kriteria utama:
- Harga (Cost): Biaya paket dalam Rupiah (Rp). Diinginkan nilai sekecil mungkin.
- Kuota (Benefit): Besarnya volume data dalam Gigabyte (GB). Diinginkan nilai sebesar mungkin.
- Masa Aktif (Benefit): Durasi aktif paket dalam hari. Diinginkan nilai sebesar mungkin.
- Jaringan (Benefit): Skala kualitas sinyal/jaringan (skala 1 - 10). Diinginkan nilai sebesar mungkin.
- Bonus (Benefit): Ketersediaan bonus kuota/layanan tambahan (skala 1 - 10). Diinginkan nilai sebesar mungkin.
| Provider | Nama Paket | Harga (Rp) | Kuota (GB) | Masa Aktif (Hari) | Jaringan (1-10) | Bonus (1-10) |
|---|---|---|---|---|---|---|
| Telkomsel | Super Seru 25 GB | 60.000 | 25 | 28 | 9 | 7 |
| Telkomsel | Super Seru 40 GB | 80.000 | 40 | 28 | 9 | 7 |
| Tri | Happy 30 GB | 70.000 | 30 | 30 | 7 | 6 |
| Tri | AlwaysOn 40 GB | 85.000 | 40 | 30 | 7 | 7 |
| by.U | Yang Bikin Nagih | 50.499 | 12 | 30 | 8 | 5 |
| by.U | Yang Dicap Dua Jempol | 121.199 | 50 | 30 | 8 | 6 |
| Indosat IM3 | Freedom Internet 20 GB | 65.000 | 20 | 30 | 8 | 6 |
| Indosat IM3 | Freedom Internet 40 GB | 100.000 | 40 | 30 | 8 | 7 |
| XL | Xtra Combo Flex M | 53.000 | 10 | 28 | 8 | 6 |
| XL | Xtra Combo Flex M+ | 64.000 | 14 | 28 | 8 | 6 |
| Smartfren | Unlimited Nonstop 12 GB | 56.500 | 12 | 30 | 7 | 8 |
| Smartfren | Unlimited Nonstop 30 GB | 79.500 | 30 | 30 | 7 | 8 |
Untuk menghilangkan perbedaan satuan dan skala antar kriteria, dilakukan normalisasi ke dalam rentang
Pembagian indeks kriteria
-
$j = 1$ : Harga -
$j = 2$ : Kuota -
$j = 3$ : Masa Aktif -
$j = 4$ : Jaringan -
$j = 5$ : Bonus
Rumus normalisasi kriteria secara matematis:
Menggunakan rumus min-max invers agar nilai harga terendah mendapatkan skor normalisasi mendekati
Menggunakan rumus min-max standar:
Normalisasi disesuaikan dengan nilai referensi batas atas (30 hari):
Karena menggunakan rating skala 1 hingga 10, normalisasi dilakukan dengan pembagian skala maksimum:
Chimp Optimization Algorithm (ChOA) adalah algoritma metaheuristik berbasis kecerdasan kelompok (swarm intelligence) yang diinspirasi oleh perilaku sosial dan berburu simpanse. Dalam skenario perburuan alami, koloni simpanse membagi tugasnya ke dalam 4 peran kepemimpinan utama untuk mengepung mangsa:
- Attacker (Penyerang): Mengarahkan serangan langsung ke mangsa. Diwakili oleh individu dengan fitness terbaik ke-1.
- Barrier (Penghalang): Memposisikan diri untuk menghalangi rute pelarian mangsa. Diwakili oleh individu terbaik ke-2.
- Chaser (Pengejar): Mengejar mangsa secara agresif. Diwakili oleh individu terbaik ke-3.
- Driver (Penggiring): Menggiring mangsa ke arah penyerang. Diwakili oleh individu terbaik ke-4.
Dalam implementasi program ini, pergerakan simpanse didorong oleh kombinasi acak dari keempat kepemimpinan tersebut:
Di mana:
-
$r_1, r_2, r_3, r_4 \sim U(0, 1)$ adalah angka acak uniform yang menentukan kontribusi relatif dari masing-masing pemimpin. -
$X_{\text{Attacker}}, X_{\text{Barrier}}, X_{\text{Chaser}}, X_{\text{Driver}}$ adalah vektor posisi dari 4 simpanse terbaik pada iterasi saat ini.
Untuk meningkatkan kemampuan eksplorasi global (diversification) dan menghindari jebakan optimum lokal (local optima trapping), ditambahkan perturbasi acak berbasis distribusi Gaussian:
Terakhir, vektor posisi baru dilakukan pemangkasan batas (clipping) agar tetap berada dalam ruang pencarian valid:
Algoritma ChOA ditugaskan mencari vektor bobot
Setiap koordinat posisi simpanse yang bernilai acak dikonversi menjadi bobot valid melalui normalisasi mutlak (sehingga total bobot selalu bernilai
Di mana
Fungsi fitness didesain berbanding terbalik dengan nilai error (MSE). Target optimasi adalah memaksimalkan nilai ini:
- Nilai fitness maksimal adalah
$1.0$ (tercapai jika MSE bernilai$0$ , yang berarti kecocokan bobot 100% sempurna dengan target).
Setelah bobot optimal $W^* = [w^_1, w^_2, w^_3, w^_4, w^*_5]$ diperoleh dari ChOA, skor kelayakan untuk setiap alternatif paket internet
Alternatif kemudian diurutkan berdasarkan nilai
graph TD
A[Mulai Program] --> B[Inisialisasi Data Mentah Alternatif]
B --> C[Normalisasi Data Fitur Alternatif]
C --> D[Inisialisasi Populasi Simpanse 30 Individu]
D --> E[Mulai Loop Iterasi: 1 s.d. 100]
E --> F[Evaluasi Fitness Setiap Simpanse]
F --> G[Urutkan Fitness & Tentukan Attacker, Barrier, Chaser, Driver]
G --> H[Update Posisi Simpanse dengan Rata-Rata Bobot Pemimpin + Noise Gaussian]
H --> I[Clip Posisi Baru ke Batas Ruang Pencarian 0-1]
I --> J{Iterasi Selesai?}
J -- Tidak --> E
J -- Ya --> K[Ambil Simpanse dengan Fitness Terbaik]
K --> L[Normalisasi Bobot Terbaik Hasil ChOA]
L --> M[Hitung Skor Akhir Alternatif: Dot Product Fitur & Bobot Terbaik]
M --> N[Urutkan Alternatif & Beri Ranking]
N --> O[Cetak Tabel Hasil & Kesimpulan ke Console]
O --> P[Selesai]
Implementasi algoritma ini diatur dalam satu berkas terstruktur main.py dengan pembagian fungsi sebagai berikut:
-
Inisialisasi Data & Normalisasi (Baris 8 - 36): Mendefinisikan dataset dalam
pandas.DataFramedan melakukan transformasi matematis min-max untuk setiap fitur. -
Fungsi
normalize_weights(weights)(Baris 39 - 47): Memastikan semua bobot kandidat bernilai positif dan berjumlah total tepat$1.0$ . -
Fungsi
fitness(weights)(Baris 48 - 53): Menghitung nilai kebugaran (fitness) berdasarkan kedekatan dengan target bobot menggunakan metrik MSE. - Proses Optimasi ChOA (Baris 55 - 86): Bagian inti algoritma optimasi yang mengontrol populasi sebanyak 30 simpanse selama 100 iterasi.
- Evaluasi & Perankingan (Baris 88 - 96): Melakukan perkalian matriks (dot product) nilai normalisasi alternatif dengan bobot hasil optimasi untuk mendapatkan skor akhir.
-
Fungsi Visualisasi
print_table(headers, data)(Baris 98 - 115): Mengatur formatting cetak tabel dinamis pada terminal agar rapi dan mudah dibaca tanpa library eksternal tambahan.
- Python 3.7 ke atas
- Library NumPy
- Library Pandas
-
Clone repository ini atau unduh berkas kode:
git clone https://github.com/Irfan3006/Chimp-Optimization-Algorithm-ChOA-.git cd Chimp-Optimization-Algorithm-ChOA- -
Instal dependensi menggunakan pip:
pip install numpy pandas
-
Jalankan program utama:
python main.py
Berikut adalah cuplikan hasil keluaran nyata (actual output) setelah program dijalankan pada console terminal:
+------------------------------------------------------------------------+
| SISTEM PEMILIHAN PAKET INTERNET TERBAIK MENGGUNAKAN ChOA |
+------------------------------------------------------------------------+
[ Bobot Terbaik Hasil Optimasi ChOA ]
- Harga : 0.179 (17.9%)
- Kuota : 0.249 (24.9%)
- Masa Aktif : 0.119 (11.9%)
- Jaringan : 0.350 (35.0%)
- Bonus : 0.103 (10.3%)
[ Tabel Nilai Normalisasi ]
+-------------+-------------------------+---------+---------+-------------+------------+---------+
| Provider | Nama Paket | Harga_N | Kuota_N | MasaAktif_N | Jaringan_N | Bonus_N |
+-------------+-------------------------+---------+---------+-------------+------------+---------+
| Telkomsel | Super Seru 25 GB | 0.866 | 0.375 | 0.933 | 0.900 | 0.700 |
| Telkomsel | Super Seru 40 GB | 0.583 | 0.750 | 0.933 | 0.900 | 0.700 |
| Tri | Happy 30 GB | 0.724 | 0.500 | 1.000 | 0.700 | 0.600 |
| Tri | AlwaysOn 40 GB | 0.512 | 0.750 | 1.000 | 0.700 | 0.700 |
| by.U | Yang Bikin Nagih | 1.000 | 0.050 | 1.000 | 0.800 | 0.500 |
| by.U | Yang Dicap Dua Jempol | 0.000 | 1.000 | 1.000 | 0.800 | 0.600 |
| Indosat IM3 | Freedom Internet 20 GB | 0.795 | 0.250 | 1.000 | 0.800 | 0.600 |
| Indosat IM3 | Freedom Internet 40 GB | 0.300 | 0.750 | 1.000 | 0.800 | 0.700 |
| XL | Xtra Combo Flex M | 0.965 | 0.000 | 0.933 | 0.800 | 0.600 |
| XL | Xtra Combo Flex M+ | 0.809 | 0.100 | 0.933 | 0.800 | 0.600 |
| Smartfren | Unlimited Nonstop 12 GB | 0.915 | 0.050 | 1.000 | 0.700 | 0.800 |
| Smartfren | Unlimited Nonstop 30 GB | 0.590 | 0.500 | 1.000 | 0.700 | 0.800 |
+-------------+-------------------------+---------+---------+-------------+------------+---------+
[ Ranking Paket Internet Terbaik ]
+---------+-------------+-------------------------+-----------+-------+------------+----------+-------+------------+
| Ranking | Provider | Nama Paket | Harga | Kuota | Masa Aktif | Jaringan | Bonus | Skor Akhir |
+---------+-------------+-------------------------+-----------+-------+------------+----------+-------+------------+
| 1 | Telkomsel | Super Seru 40 GB | Rp80,000 | 40 | 28 | 9 | 7 | 0.789 |
| 2 | Telkomsel | Super Seru 25 GB | Rp60,000 | 25 | 28 | 9 | 7 | 0.747 |
| 3 | Tri | AlwaysOn 40 GB | Rp85,000 | 40 | 30 | 7 | 7 | 0.715 |
| 4 | Indosat IM3 | Freedom Internet 40 GB | Rp100,000 | 40 | 30 | 8 | 7 | 0.712 |
| 5 | by.U | Yang Dicap Dua Jempol | Rp121,199 | 50 | 30 | 8 | 6 | 0.710 |
| 6 | Tri | Happy 30 GB | Rp70,000 | 30 | 30 | 7 | 6 | 0.680 |
| 7 | Smartfren | Unlimited Nonstop 30 GB | Rp79,500 | 30 | 30 | 7 | 8 | 0.677 |
| 8 | Indosat IM3 | Freedom Internet 20 GB | Rp65,000 | 20 | 30 | 8 | 6 | 0.666 |
| 9 | by.U | Yang Bikin Nagih | Rp50,499 | 12 | 30 | 8 | 5 | 0.642 |
| 10 | XL | Xtra Combo Flex M | Rp53,000 | 10 | 28 | 8 | 6 | 0.626 |
+---------+-------------+-------------------------+-----------+-------+------------+----------+-------+------------+
==========================================================================
KESIMPULAN
==========================================================================
Paket terbaik adalah Telkomsel - Super Seru 40 GB
dengan skor akhir 0.789.
==========================================================================
-
Hasil Optimasi Bobot: Hasil dari ChOA menunjukkan konvergensi bobot yang sangat mendekati target preferensi:
-
Harga:
$17.9%$ (Target$18%$ ) -
Kuota:
$24.9%$ (Target$25%$ ) -
Masa Aktif:
$11.9%$ (Target$12%$ ) -
Jaringan:
$35.0%$ (Target$35%$ ) -
Bonus:
$10.3%$ (Target$10%$ )
Hal ini membuktikan bahwa algoritma ChOA bekerja secara akurat dalam meminimalkan simpangan (error) populasi hingga mencapai kondisi optimum global.
-
Harga:
-
Rekomendasi Terbaik: Paket Telkomsel - Super Seru 40 GB terpilih sebagai alternatif terbaik dengan skor akhir tertinggi sebesar 0.789.
-
Mengapa terpilih? Paket ini memiliki skor normalisasi Jaringan_N sebesar
0.900(sangat tinggi) dan Kuota_N sebesar0.750. Mengingat kriteria Jaringan memiliki bobot terbesar ($35.0%$ ) disusul Kuota ($24.9%$ ), keunggulan Telkomsel di dua kriteria utama tersebut memberikan dorongan nilai utilitas akhir yang signifikan, mengalahkan paket yang lebih murah namun berkualitas sinyal lebih rendah atau kuota lebih sedikit.
-
Mengapa terpilih? Paket ini memiliki skor normalisasi Jaringan_N sebesar