An aspect-oriented approach for implementing evolutionary computation applications

Object-oriented frameworks support design and code reuse for specific application domains. To facilitate the development of evolutionary computation (EC) programs, such as genetic algorithms, developers often extend and customize EC frameworks with application code that defines the EC problem being solved. The application code, however, crosscuts the EC framework whenever candidate solutions are encoded, decoded, evaluated, and output. A change in the application logic, such as adding a parameter to the problem being solved, requires additional changes across code that extends the framework. This paper presents Arachne, an aspect-oriented approach for developing EC programs that extracts the crosscutting concerns of an application code into aspects that can be woven into the EC framework at compile time. To facilitate applying Arachne, we implemented a prototype tool to support the automatic generation of aspect code for two widely used EC frameworks, JGAP and ECJ. We demonstrate Arachne by applying it to re-engineer EC benchmark programs and an industry-provided problem.

[1]  David B. Knoester,et al.  Applying genetic algorithms to decision making in autonomic computing systems , 2009, ICAC '09.

[2]  Kai Koskimies,et al.  Framework specialization aspects , 2007, AOSD.

[3]  Marc Parizeau,et al.  Genericity in Evolutionary Computation Software Tools: Principles and Case-study , 2006, Int. J. Artif. Intell. Tools.

[4]  Betty H. C. Cheng,et al.  On the use of genetic programming for automated refactoring and the introduction of design patterns , 2010, GECCO '10.

[5]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[6]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[7]  Seyed Masoud Sadjadi,et al.  Composing adaptive software , 2004, Computer.

[8]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[9]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[10]  John H. Holland,et al.  Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence , 1992 .

[11]  Carlos José Pereira de Lucena,et al.  Improving Extensibility of Object-Oriented Frameworks with Aspect-Oriented Programming , 2006, ICSR.

[12]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[13]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[14]  Dirk Beyer,et al.  Designing for Disasters , 2004, FAST.

[15]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[16]  Mark Harman,et al.  Automated test data generation for aspect-oriented programs , 2009, AOSD '09.

[17]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[18]  Thomas Bäck,et al.  Evolutionary computation: comments on the history and current state , 1997, IEEE Trans. Evol. Comput..

[19]  Mariano Ceccato,et al.  Measuring the Effects of Software Aspectization , 2004 .

[20]  Name M. Lastname Automatically Finding Patches Using Genetic Programming , 2013 .

[21]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[22]  Oscar Nierstrasz,et al.  Traits: Composable Units of Behaviour , 2002, ECOOP.