Global Optimization
Without Guesswork
Implementasi Algoritma Genetika from scratch untuk meminimalkan fungsi non-linear kompleks multivariat dengan kendala singularitas asimtotik.
Lian
Lead Developer & Author
NIM: 2311104067Ilham
Presenter & UI/UX
NIM: 2311104068Minimasi Fungsi Objektif Non-Linear
Diberikan fungsi matematika dua variabel kontinu $(x_1, x_2)$ dengan tujuan menemukan koordinat global yang menghasilkan nilai $f(x_1, x_2)$ seminimum mungkin.
-
Asimtot Tangen $\tan(x_1+x_2)$:
Ketika $x_1 + x_2 \to \frac{\pi}{2} + k\pi$, nilai fungsi $\tan$ melonjak ke $+\infty$ atau $-\infty$.
-
Jurang Nilai Ekstrem Menuju $-\infty$:
Jika $-\sin(x_1)\cos(x_2) < 0$ dan $\tan(x_1+x_2) \to +\infty$, maka $f(x_1, x_2) \to -\infty$.
-
Resiko Numerical Overflow:
Tanpa penanganan matematis, individu di dekat asimtot akan menghancurkan variasi seleksi genetik.
Siklus Evolusi Varian 3 (From Scratch)
Seluruh tahapan siklus hidup genetik dibangun menggunakan modul standar Python math dan
random tanpa framework pihak ketiga.
Inisialisasi
Populasi 74 individu real-coded $[0, 1]^2$
Decode & Eval
Mapping linear $[-10, 10]$ & Log-fitness
Seleksi Parent
Roulette Wheel berbasis fitness terkompresi
Crossover
Whole Arithmetic Crossover ($P_c = 0.75$)
Mutasi
Gaussian Perturbation ($P_m = 0.15, \sigma=0.05$)
Elitisme
Top 5% (4 individu) disalin langsung
Real-Coded Genome & Linear Mapping
Memilih representasi bilangan riil (*continuous space*) untuk menghindari diskritisasi dan distorsi resolusi yang kerap terjadi pada representasi biner.
def dekode(kromosom):
# Mapping [0, 1] ke [-10, 10]
x1 = -10.0 + kromosom[0] * (10.0 - (-10.0))
x2 = -10.0 + kromosom[1] * (10.0 - (-10.0))
return x1, x2
Formula ini menjamin seluruh kombinasi genetik selalu menghasilkan nilai $x_1, x_2$ yang berada tepat di dalam batas domain yang diizinkan tanpa memerlukan pemotongan paksa.
Penanganan Singularitas via Logarithmic Compression
Strategi transformasi objektif untuk mencegah satu "super-individu" di dekat asimtot memonopoli seluruh probabilitas seleksi.
Karena persoalan berupa minimasi, maka nilai dinaikkan menjadi masalah maksimasi:
Masalah timbul saat $g$ mencapai angka jutaan: seleksi proporsional akan bias 99.9% hanya ke 1 individu, mematikan diversitas genetik.
- ✅ Non-Negatif: Nilai fitness selalu $\ge 0$ untuk seluruh populasi.
- ✅ Rank-Preserving: Urutan keunggulan kromosom tidak berubah.
- ✅ Damped Variance: Lonjakan ekstrem diredam secara logaritmik, menjaga roda roulette tetap proporsional.
Roulette Wheel Berbasis Compressed Fitness
Memilih induk terbaik secara stokastik sebanding dengan kontribusi fitness terkompresi dari masing-masing individu.
total = sum(fitness)
r = random.uniform(0, total)
kumulatif = 0.0
for individu, f in zip(populasi, fitness):
kumulatif += f
if r <= kumulatif:
return individu
Individu fit memiliki peluang terpilih lebih tinggi, namun individu dengan fitness sedang tetap memiliki kesempatan berevolusi.
Berkat kompresi logaritma pada Slide 5, roda seleksi tidak dimonopoli oleh anomali singularitas tangen.
Arithmetic Crossover & Gaussian Mutation
Kombinasi rekombinasi linear dan perturbasi stokastik kontinu untuk menghasilkan keturunan berkualitas tinggi.
Whole Arithmetic Crossover
Mengkombinasikan kedua orang tua secara linier dengan bobot acak $\alpha \sim U(0, 1)$:
Gaussian Perturbation
Menambahkan derau normal terkontrol dengan simpangan baku $\sigma = 0.05$:
Elitisme 5% & Kriteria Penghentian Evolusi
Menjaga solusi terbaik sepanjang masa (*best-so-far*) agar tidak hilang atau terdegradasi oleh operasi genetik acak.
Elitisme menjamin kurva performa terbaik bersifat monoton menurun (tidak pernah memburuk).
$f(x_1, x_2) \le -10^6$ (mencapai nilai ekstrem target)
Maksimal 250 generasi evolusi
Tidak ada perbaikan solusi selama 40 generasi beruntun
Hasil Eksekusi & Konvergensi Program
Pengujian eksekusi nyata dari script ga_varian.py yang dijalankan hingga kriteria terminasi
terpenuhi.
Generasi 1 | f(x) terbaik = -6.603255
Generasi 10 | f(x) terbaik = -28.288375
Generasi 30 | f(x) terbaik = -51.620762
Generasi 50 | f(x) terbaik = -407.996739
Generasi 80 | f(x) terbaik = -4808.418925
Generasi 110 | f(x) terbaik = -4808.418925
Berhenti di generasi 116: stagnan 40 generasi.
=========== HASIL ===========
Kromosom terbaik : [0.40990667, 0.51156336]
Hasil dekode : x1 = -1.801867 , x2 = 0.231267
Nilai f(x1,x2) : -4808.418925
Kesimpulan & Ketercapaian Goals
Algoritma Genetika Varian 3 sukses memecahkan persoalan optimasi non-linear yang menantang secara mandiri, stabil, dan presisi.
100% Native Implementation
Seluruh tahapan inisialisasi, reproduksi, mutasi, dan seleksi dibangun murni tanpa library GA pihak ketiga.
Stabilitas Numerik Singularitas
Inovasi kompresi logaritma terbukti efektif mengatasi kendala asimtot $\tan(x_1+x_2)$ tanpa overflow.
Efisiensi & Konvergensi Cepat
Kombinasi Arithmetic Crossover dan Elitisme 5% berhasil menemukan solusi optimal dalam 116 generasi.
Deliverables Lengkap
Source code bersih, laporan komprehensif, slide interaktif, dan video presentasi siap dikumpulkan.
Terima Kasih atas Perhatian Anda!
Sesi Tanya Jawab (Q&A) dibuka untuk diskusi lebih mendalam.