Sebagian besar literatur yang pernah saya baca tentang GA menyarankan menggunakan nilai crossover sekitar 0,7, jadi Anda mengambil 70% pertama dari satu gen kromosom, dan 30% terakhir dari yang lain untuk menghasilkan satu kromosom baru.
Jika Anda memilih kromosom induk dengan mengambil dua teratas (peringkat berdasarkan kebugaran), maka saya dapat melihat logikanya di sini, karena Anda memberi bobot lebih pada gen kromosom yang berperingkat lebih tinggi. Namun, jika Anda menggunakan metode stokastik (seperti roda roulette) untuk memilih orang tua, lalu apa gunanya menggunakan apa pun selain 0,5 sebagai nilai crossover? Mengingat Anda telah memilih kromosom A dan B sebagai orang tua, Anda juga cenderung memilih A pertama dan B kedua sebagai B pertama dan A kedua bukan?
Saya hanya benar-benar menulis satu GA sejauh ini (masih jauh di bagian bawah kurva pembelajaran, tetapi bergerak cepat berkat bantuan besar di sini!), Tetapi percobaan pada acara itu menunjukkan bahwa 0,5 memberikan konvergensi yang lebih cepat ke solusi daripada nilai lainnya.
Atau apakah saya melewatkan sesuatu?
sumber
Most of the literature I've read about GAs suggests using a crossover value of around 0.7
<- satu hal yang perlu diingat adalah banyak dari nilai-nilai ini dalam optimasi heuristik diturunkan lebih atau kurang berdasarkan pada nilai-nilai apa yang tampaknya mengarah pada hasil yang baik (daripada derivasi empiris). Saya kurang terbiasa dengan GA tetapi saya tahu dalam metode optimasi berbasis populasi lainnya konstanta ditentukan secara sewenang-wenang, dalam beberapa peneliti melakukan beberapa percobaan dasar, menemukan nilai-nilai yang bekerja lebih baik, dan kemudian nilai-nilai itu diadopsi oleh komunitas optimisasi pada umumnya .Jawaban:
Operasi crossover yang ideal sangat tergantung pada ruang masalah. Asumsi yang mendasari algoritma evolusi dan genetik adalah bahwa dua solusi yang baik kadang-kadang dapat digabungkan menjadi solusi yang lebih baik - solusi yang baik terlihat mirip dengan solusi yang baik lainnya. Secara intuitif ini masuk akal jika ruang masalah memiliki satu optimum yang dapat digunakan oleh setiap generasi berturut-turut.
Ketika ada beberapa optima, ruang di antara optima ini secara definisi tidak optimal. Jika kita mengambil kromosom A yang mendekati satu optimum dan menggabungkannya dengan kromosom B dari dekat optimal lain, kita akan mendarat di antaranya, dan kemungkinan akan memiliki kromosom c yang dihasilkan yang lebih buruk daripada orang tuanya. Tinggal lebih dekat dengan satu atau orang tua lain meningkatkan kemungkinan mendapatkan kromosom yang lebih baik atau setidaknya tidak jauh lebih buruk daripada orang tua.
Nilai crossover hanyalah satu parameter algoritma yang dapat Anda sesuaikan dengan struktur masalah Anda. Terkadang Anda akan melihat konvergensi yang lebih cepat dengan nilai crossover yang rendah, terkadang dengan nilai crossover yang sangat tinggi. Tetapi untuk nilai yang sangat tinggi, ini akan kurang seperti crossover tetapi hanya sedikit perubahan seperti mutasi. Jadi, alih-alih menggunakan nilai dekat 1.0, Anda lebih suka mengurangi tingkat crossover dan meningkatkan tingkat mutasi.
sumber
Yang membingungkan, tingkat crossover dan tingkat mutasi, sementara diberi nama yang sama, biasanya ditafsirkan berbeda.
Tingkat mutasi x% ==> Anda melakukan operator mutasi dengan probabilitas 1.0, dan setiap aplikasi dari operator itu akan mengubah x% dari bit individu yang bermutasi.
Tingkat crossover x% ==> Anda memilih untuk melakukan crossover sama sekali dengan probabilitas x.
Jadi tingkat crossover 70% tidak berarti Anda mengambil 70% bit dari induk 1 dan 30% dari induk 2. Ini berarti bahwa Anda akan melakukan operator crossover apa pun yang telah Anda pilih 70% dari waktu. 30% sisanya, Anda akan melewati orang tua yang tidak dimodifikasi ke kolam keturunan.
sumber