Algoritma evolusi adalah keluarga algoritma pengoptimalan berdasarkan prinsip seleksi alam Darwin . Sebagai bagian dari seleksi alam, lingkungan tertentu memiliki populasi individu yang bersaing untuk bertahan hidup dan berkembang biak. Kemampuan masing-masing individu untuk mencapai tujuan-tujuan ini menentukan peluang mereka untuk memiliki anak, dengan kata lain untuk meneruskan gen mereka kepada generasi individu berikutnya, yang karena alasan genetik akan memiliki kesempatan yang meningkat untuk melakukan dengan baik, bahkan lebih baik, dalam mewujudkan ini dua tujuan.
Prinsip peningkatan berkelanjutan ini dari generasi ke generasi diambil oleh algoritma evolusioner untuk mengoptimalkan solusi untuk suatu masalah. Pada generasi awal , populasi yang terdiri dari individu yang berbeda dihasilkan secara acak atau dengan metode lain. Seorang individu adalah solusi untuk masalah, kurang lebih baik: kualitas individu sehubungan dengan masalah tersebut disebut kebugaran , yang mencerminkan kecukupan solusi untuk masalah yang harus dipecahkan. Semakin tinggi kebugaran individu, semakin tinggi kemungkinan untuk melewatkan sebagian atau semua genotipnya ke individu generasi berikutnya.
Seorang individu dikodekan sebagai genotipe , yang dapat memiliki bentuk apa pun, seperti vektor bit ** ( algoritma genetika ) atau vektor nyata (strategi evolusi). Setiap genotipe ditransformasikan menjadi fenotip ketika menilai individu, yaitu ketika kebugarannya dihitung. Dalam beberapa kasus, fenotip identik dengan genotipe: itu disebut pengkodean langsung . Kalau tidak, pengkodeannya disebut tidak langsung. Misalnya, Anda ingin mengoptimalkan ukuran paralelip persegi panjang yang ditentukan oleh panjang, tinggi, dan lebarnya. Untuk menyederhanakan contoh, asumsikan bahwa ketiga kuantitas ini adalah bilangan bulat antara 0 dan 15. Kita kemudian dapat menggambarkan masing-masing menggunakan angka biner 4-bit. Contoh dari solusi potensial mungkin untuk genotipe 0001 0111 01010. Fenotip yang sesuai adalah paralelepiped dari panjang 1, tinggi 7 dan lebar 10.
Selama transisi dari generasi lama ke generasi baru disebut operator variasi , yang tujuannya adalah untuk memanipulasi individu. Ada dua jenis operator variasi:
- yang mutasi operator , yang digunakan untuk memperkenalkan variasi dalam individu yang sama, seperti mutasi genetik;
- yang Crossover operator , yang digunakan untuk menyeberang setidaknya dua genotipe yang berbeda, seperti salib genetik dari peternakan.
Algoritma evolusi telah membuktikan diri dalam berbagai bidang seperti riset operasi, robotika, biologi, nuansa, atau kriptografi. Selain itu, mereka dapat mengoptimalkan beberapa tujuan secara bersamaan dan dapat digunakan sebagai kotak hitam karena mereka tidak mengasumsikan sifat apa pun dalam model matematika untuk dioptimalkan. Satu-satunya batasan mereka adalah kompleksitas komputasi.