Genetik programlama için alana özgü programlama dili
A domain specific language for genetic programming
Yazar: CEM BAŞAR ÇAYIROĞLU
Danışman: YRD. DOÇ. DR. A. ŞİMA UYAR
İstanbul Teknik Üniversitesi / Bilişim Enstitüsü / İleri Teknolojiler Ana Bilim Dalı
Derece: Yüksek Lisans, 2010
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Genetik Programlama[1] (GP) evrimsel algoritmaların bir formu olup, bireylerin temsil ediliş şekli ağaçtır. Genetik programlama ile uğraşan araştırmacılar çalışmalarının tasarım, uygulamaya geçiş ve de test aşamalarında birçok yardımcı araç kullanırlar. Bu araçlar içinde C++ ve Java tabanlı çatılar son yıllarda en çok kullanılan çatılardır. Bu çatılar GP projelerinde uygulamaya geçiş süresini kısaltmakta fakat genelde taban dilleri hakkında derin bilgiye sahip olmayı gerektirmektedir. Dahası, taban programlama dillerinin limitleri yüzünden, araştırmacılar GP alanında projelerinde iyi bir soyutlama yapamamaktadır.Alana özgü diller [2] (DSL) programlama dilleri olup o alana özel olarak tasarlanmıştır. Örnek olarak, SQL bir alana özgü dil olup veritabanlarına özel olarak geliştirilmiştir. Genel amaçlı programlama dilleri ile kıyaslamak gerekirse alana özel diller o alan için daha çok anlatımcıdır çünkü o alanda olan bir algoritmayı anlatabilecek daha doğal bir yol sağlarlar. Bu anlatımcılığı arttıran özeliği sayesinde araştırmacıların üretkenliği artar ve tecrübesiz programcıların bu alanda daha kolay uygulama geliştirmesine yardımcı olur.Bu çalışmada, genetik programlama için alana özgü bir programlama dili geliştirdik. Alana özgü dil geliştirmek için Xtext[3] adlı Eclipse platformu üzerinde çalışan programlama dili geliştirme aracı kullandık. Xtext gramer denetimi ve de kod üretimi özellikleri vardır. Kod üretimi özelliği sayesinde genel amaçlı programlama dilleri, Xtext tarafından geliştirilmekte olan alana özgü dilden üretilebilir. Alana özgü dil geliştirmek için, ilk olarak genetik programlama alanı analiz edildi. Daha sonrasında geliştirilecek olan dilin grameri tasarlandı. Daha sonraki aşamada ise alana özgü dili Java programlama diline çevirecek kod üretici modül geliştirildi. Geliştirilen alana özgü dil GP 'de bulunan üst seviye operasyonları desteklemektedir. Bunlar arasında; seçme, çaprazlama, mutasyon vardır. Bunun yanında daha alt seviye ağaç işlemlerini de desteklemektedir. Geliştirilen alana özgü dili kullanarak genetik programlama araştırmacıları karışık ağaç işlemlerini kolayca yapabilirler. Geliştirilen primitif komutlar ile araştırmacılar yeni GP operasyonları tanımlayabilirler.

Abstract:
Genetic programming is a specific topic of genetic algorithm paradigm. In genetic programming domain, individuals are programming codes. The distinctive feature of genetic programming is individual types and output of the algorithm. Individuals are code parts with varying size and shape and output is a ready-to-use computer programs. The main goal is generating computer programs (usually based on high level language) automatically.Domain-specific languages are languages dedicated to a domain. Domain specific languages commands are really close to the domain related terms. When you think about SQL programming language its key words all related to database terms. By using only SQL you can not write a regular imperative computer programs. However, it is hard to deal with database without SQL. DSL is becoming more popular due to rise of domain base design. They are more expressive comparing to a general-purpose language in their domain. Therefore, using DSL increases productivity and lowers maintenance cost. By reducing required programming experience, more people can understand program code written in DSL compared to general-purpose language. Using existing general-purpose language is better if the domain specific language does not have enough advantages. General-purpose language is robust and popular. In addition, developing a DSL is hard because it requires domain knowledge and DLS development experience.Fitness calculation, crossover and mutation are done on these code parts. In order to apply genetic algorithm operations to code parts, representation of an individual should be tree. Genetic programming researchers use several programming tools in order to design, implement and verify their study. They use tools such as java or C language programming frameworks that become very popular in last years. Frameworks decrease development time of genetic algorithm implementation but usually required a good knowledge about their base programming language. Although frameworks are well designed, due to base programming language, researchers may not make a good abstraction of a genetic programming problem. In this paper, a new domain specific language (DSL) will be introduced in order to increase productivity of researchers, to use high level abstraction of genetic programming domain and to increase maintainability of their projects. To develop a new DSL, decision, analysis, design, implementation, and deployment steps should be executed. In our study, these steps were followed and will be explained in detail.DLS should fit these genetic programming requirements: individual representation, terminal and operator representation, individual evaluation and evaluator, generate random individual and population, mutation, cross-over, tree operations such as prune, random grow, population representation, probability support, loops, random selection and strategies, offspring support, built in individual and evaluators such as symbolic regression etc.