Genetik Programlama Nedir?

Genetik programlama, evrimsel algoritma tabanlı bir metodoloji kullanarak başka bir bilgisayar programını yazmak için bir bilgisayar programını kullanma sürecidir. Bu işlem genellikle, programcının bilgisayarın gerçekleştirmesi için belirli talimatlar yazdığı doğrusal programlamayla karşılaştırılır. LISP ve Scheme, bu tür işler için üst düzey işlevselliği ve esnekliği nedeniyle en yaygın programlama dilleridir. Biyolojik evrime olan kavramsal benzerliğinin bir sonucu olarak, genetik programlama genellikle biyo-ilham verici hesaplama örneği olarak gösterilmektedir.

Genetik programlar (GPs) binlerce program üreterek ve çalıştırarak çalışır ve kullanımı en etkili olanı seçer. Örneğin, bir fotoğrafın eskizini çizmek için bir program oluşturmak için bir GP kullanılabilir. GP'nin yapacağı ilk şey, rasgele kombinasyonlarda çeşitli bilgisayar çizme işlevlerini kullanan bir dizi program oluşturmaktır. Daha sonra GP, bu programların her birini sırayla çalıştırır ve her birinin sonuçlarını görüntü dosyalarına verir.

GP için bir sonraki adım, setten bu programların en iyisini seçmektir. Bu işlem genellikle genetik programlamanın en zor kısmıdır. Çizim programı durumunda, GP, hangi rasgele çizimlerin hangisinin yazılımın çizmeye çalıştığı görüntüye en çok benzeyeceğini belirlemek için görüntü karşılaştırma yazılımını kullanır. Rasgele oluşturulmuş programlardan, GP üstteki birkaçı seçer ve gerisini atar. Seçim süreci uygunluk değerlendirmesi olarak bilinir ve genellikle genetik programlamanın en zor kısmı olarak kabul edilir.

İlk birkaç program seçildikten sonra, GP bunları yeni bir program grubunun temeli olarak kullanır. Her yeni partiye nesil adı verilir. Yeni nesli yaratmanın iki yolu mutasyon ve geçitlerdir. Mutasyon, mevcut programlardan birini alarak ve bunun için rasgele değişiklikler yaparak çalışır, umarım daha iyidir. Üreme olarak da adlandırılan Crossover, en iyi programlardan ikisini alarak ve yeni programlar oluşturmak için öğelerini birleştirerek çalışır.

Yeni bir program grubu oluşturduktan sonra, GP bunları çalıştırma ve değerlendirme işlemini tekrarlar ve ardından seçim, eleme ve oluşturma işlemlerini tekrarlar. GP'ler, tatmin edici bir sonuç veren tek bir program bulmadan önce sık sık yüzlerce nesli çalıştırır. Bu sınırlamaya rağmen, genetik programlama, robot mühendisliği ve yapay zeka problemleri de dahil olmak üzere bazı zor hesaplama problemlerini çözmek için yaygın bir yoldur.