📖 Tentang Algoritma Optimasi
Penjelasan konsep, cara kerja, dan implementasi tiga algoritma pencarian lokal yang digunakan pada studi kasus penjadwalan shift karyawan.
Deskripsi Problem
Penjadwalan shift karyawan adalah masalah optimasi nonlinear NP-hard. Dengan 10 karyawan, 4 jenis shift (Pagi, Siang, Malam, Libur), dan 7 hari, terdapat 470 ≈ 1042 kemungkinan jadwal yang mustahil diperiksa satu per satu.
Algoritma pencarian lokal bekerja dengan cara mencoba jadwal tetangga, yaitu jadwal baru yang hanya berbeda satu perubahan kecil dari jadwal saat ini (misalnya: mengubah shift Andi di hari Senin dari Pagi menjadi Siang). Dengan cara ini, algoritma menjelajahi ruang solusi secara efisien tanpa harus memeriksa semua kemungkinan.
Kualitas setiap jadwal diukur menggunakan fungsi fitness. Semakin sedikit aturan yang dilanggar, semakin tinggi nilai fitness-nya. Jadwal yang memenuhi semua aturan akan mendapat nilai fitness 1.0.
Constraint yang Harus Dipenuhi
- Shift Pagi minimal 2 karyawan per hari
- Shift Siang minimal 2 karyawan per hari
- Shift Malam minimal 1 karyawan per hari
- Setiap karyawan maksimal 5 hari kerja per minggu
- Setiap karyawan minimal 2 hari libur per minggu
- Dilarang jadwal Malam kemudian Pagi keesokan hari (anti-fatigue)
Mulai dari jadwal acak, terus bergerak ke jadwal yang lebih baik (tetangga) hingga tidak ada lagi yang bisa diperbaiki.
Terinspirasi dari pendinginan logam. Keunggulan utama: SA bisa menerima solusi yang lebih buruk dengan probabilitas tertentu untuk keluar dari jebakan local optimum yang sering dialami Hill Climbing. Inilah yang membuat SA lebih andal dalam menemukan solusi mendekati optimal global.
Terinspirasi evolusi biologis. Memelihara populasi jadwal dan menggunakan seleksi, crossover, serta mutasi untuk menghasilkan generasi yang semakin baik.
| Aspek | 🏔️ Hill Climbing | 🌡️ Simulated Annealing | 🧬 Genetic Algorithm |
|---|---|---|---|
| Jumlah solusi | 1 solusi tunggal | 1 solusi tunggal | Populasi banyak solusi |
| Local optimum | Mudah terjebak | Bisa lolos (probabilistik) | Jarang terjebak, banyak solusi dicoba bersamaan |
| Kecepatan | Paling cepat | Sedang | Paling lambat |
| Kualitas solusi | Tergantung titik awal | Lebih baik dari HC | Umumnya terbaik |
| Parameter | Sedikit (iterasi saja) | 3 parameter | Banyak parameter |
📝 Panduan Pengisian Parameter
Penjelasan setiap parameter beserta rekomendasi nilai yang bisa digunakan agar simulasi berjalan dengan baik.
Pilih salah satu dari tiga varian:
- Simple: paling cepat, cocok untuk eksplorasi awal. Gunakan ini jika ingin hasil cepat.
- Steepest: lebih cermat karena membandingkan banyak pilihan. Hasilnya lebih konsisten tapi sedikit lebih lambat.
- Stochastic: hasilnya acak tiap run, cocok untuk melihat variasi hasil. Butuh iterasi lebih banyak agar konsisten.
| Nilai | Efek | Rekomendasi |
|---|---|---|
| 500 | Sangat cepat, cukup untuk Simple dan Steepest | Untuk tes awal |
| 2000 | Cukup untuk sebagian besar kasus | Penggunaan umum |
| 5000 | Konsisten optimal untuk semua varian termasuk Stochastic | Direkomendasikan |
| Nilai | Efek |
|---|---|
| 1 - 5 | Eksplorasi terbatas, cepat konvergen |
| 10 | Seimbang (direkomendasikan) |
| 20 - 50 | Eksplorasi sangat luas, butuh lebih banyak langkah |
| Nilai | Efek |
|---|---|
| 0.90 - 0.95 | Cepat fokus, butuh sedikit langkah |
| 0.995 | Lambat fokus, hasil lebih baik (direkomendasikan) |
| 0.999 | Sangat lambat, butuh banyak langkah |
| Nilai | Efek |
|---|---|
| 10 - 20 | Cepat tapi kurang beragam |
| 50 | Seimbang (direkomendasikan) |
| 100 - 200 | Lebih beragam tapi lebih lambat |
| Nilai | Efek | Keterangan |
|---|---|---|
| 1000 | Cepat, SA mungkin belum optimal | Untuk demo cepat |
| 3000 | Cukup untuk semua algoritma | Penggunaan umum |
| 5000 | Semua algoritma konsisten optimal | Direkomendasikan |
👥 Kelola Karyawan
Tambah, hapus, atau ubah nama karyawan yang akan dijadwalkan. Minimal 7 karyawan, maksimal 20 karyawan.
Klik nama karyawan untuk mengubahnya. Gunakan tombol tambah untuk menambah karyawan baru, atau hapus untuk menghapus karyawan.