Tampilkan postingan dengan label rekombinasi. Tampilkan semua postingan
Tampilkan postingan dengan label rekombinasi. Tampilkan semua postingan

Senin, 26 November 2012

Perbedaan Antara Pemrograman Genetika dengan Algoritma Genetika


Algoritma genetika adalah teknik pencarian di dalam ilmu komputer untuk menemukan penyelesaian perkiraan untuk optimisasi dan masalah pencarian. Algoritma genetika adalah kelas khusus dari algoritma evolusioner dengan menggunakan teknik yang terinspirasi oleh biologi evolusioner seperti warisan, mutasi, seleksi alam dan rekombinasi (atau crossover). Algoritma genetika dapat menggunakan representasi graph, biner, integer, permutasi, dan real dalam pengkodeannya. Sedangkan pemrogaman genetika merupakan salah satu dari komputasi evolusioner yang sering dipakai untuk machine learning (seperti prediksi, klasifikasi, dan sebagainya) yang menggunakan representasi tree atau graph dalam proses pengkodean. Pemrograman genetika bisa menggunakan proses rekombinasi dan mutasi dengan probabilitas tertentu, tapi tidak dapat keduanya. Rekombinasi dilakukan dengan cara saling menukar ranting (sub tree), sedangkan mutasi dilakukan dengan mungubah pohon secara acak. Pemrograman genetika digunakan untuk autamtic programming.
Algoritma genetika dan pemrograman genetika diterapkan sebagai simulasi komputer dimana sebuah populasi representasi abstrak (disebut kromosom) dari solusi-solusi calon (disebut individual) pada sebuah masalah optimisasi akan berkembang menjadi solusi-solusi yang lebih baik. Panjang kromosom dalam satu populasi pada algoritma genetika memiliki ukuran yang sama panjang, sedangkan pada pemrograman genetika, kromosom-kromosom bisa memiliki panjang yang berbeda-beda dalam satu populasi. Ukuran populasi pada algoritma genetika bisa bervariasi, sedangkan pada pemrograman genetika ukuran populasi relative besar (ribuan individu).
Kromosom pada pemrograman genetika bisa memiliki ukuran yang berbeda-beda, sehingga pada generasi pertama  bisa dilakukan proses inisialisasi dengan membatasi kedalaman pohon. Sedangkan pada algoritma genetika, proses pembangkitan populasi awal biasanya dilakukan dengan menggunakan pembangkitan acak.
Evolusi pada algoritma genetika dimulai dari sebuah populasi individual acak yang lengkap dan terjadi dalam generasi-generasi. Dalam tiap generasi, kemampuan keseluruhan populasi dievaluasi, kemudian multiple individuals dipilih dari populasi sekarang (current) tersebut secara stochastic (berdasarkan kemampuan mereka), lalu dimodifikasi (melalui mutasi atau rekombinasi) menjadi bentuk populasi baru yang menjadi populasi sekarang (current) pada iterasi berikutnya dari algoritma. Sedangkan pada pemrograman genetika populasi awal dikenakan seleksi orang tua yang biasanya dilakukan secara proporsional terhadap nilai fitness.
Agar lebih efisien, seleksi ortu dilakukan dengan cara:
  •   Buat perankingan berdasarkan fitness dan bagi individu ke dalam dua grup
  • Grup 1 berisi x% individu terbaik dan Grup 2 berisi (100-x)% individu yang lain.
  •   Lakukan 80% seleksi ortu pada Grup 1 dan 20% pada Grup 2.
  •   Untuk ukuran populasi = 1000, 2000, 4000, dan 8000 gunakan secara berturut-turut x = 32%, 16%, 8% dan 4%.
Setelah seleksi orang tua, populasi akan dikenakan proses rekombinasi atau mutasi (pilih salah satu). Kemudian seleksi survivor untuk generasi berikutnya. Umumnya, pemrograman genetika menggunakan model populasi generational scheme sehingga tidak ada seleksi survivor.
Algoritma genetika tidak terfokus pada salah satu bahasa pemrograman karena bersifat general programming, sedangkan pemrograman genetika lebih terfokus pada bahasa LISP. Dalam pemrosesannya, pemrograman genetika lebih lambat dibandingkan dengan algoritma genetika.