JCLEC is a software system for Evolutionary Computation (EC) research, developed in the Java programming language. It provides a high-level software framework to do any kind of Evolutionary Algorithm (EA), providing support for genetic algorithms (binary, integer and real encoding), genetic programming (Koza's style, strongly typed, and grammar based) and evolutionary programming.
JCLEC architecture follows strong principles of object oriented programming, where abstractions are represented by loosely coupled objects and where it is common and easy to reuse code. JCLEC provide an EC environment with the following main features:
- Genericity. Any kind of EC algorithm can be executed using JCLEC, as some minimum requirements are fulfilled. The only necessary condition is to have a population of individuals to which a sequence of evolving operations is iteratively applied. So far, JCLEC supports most mainstream EC flavors such genetic programming, bit string, integer-valued vector and real-valued vector genetic algorithms, and evolution strategy. It also supports advanced EC techniques such as multi-objective optimization. The user can make use of any of these specialized frameworks, or even modify them to create his/her own customized evolutionary algorithm.
- User friendly. Considerable efforts were made to build JCLEC in a pretty and pleasant form. JCLEC provides diverse mechanisms that offer a user friendly programming interface. It follows a high-level programming style, wich allows the rapid prototyping of applications.
- Portability. The JCLEC system has been coded in the Java programming language that ensures its portability between all platforms that implement a Java Virtual Machine.
- Efficiency. To ensure an efficient execution, particular attention was given to optimization of critical code sections. Detailed execution profiles of these sections were done.
- Robustness. Verification and validation statements are embedded into the code to ensure that operations are valid and to report problems to the user.
- Elegance. The interface of JCLEC was developed with care. Great energy was invested in designing a coherent software package that follows good object oriented and generic programming principles. Moreover, strict programming rules were enforced to make the code easy to read, understand and, eventually, modify. The use of XML as file format is also a central aspect of JCLEC, which provides a common ground for tools development to analyze and generate files, and to integrate the framework with other systems.
- Open Source. The source code of JCLEC is free and available under the GNU General Public License (GPL). Thus, it can be distributed and modified without any fee.