JCLEC is a software system for Evolutionary Computation (EC) research, developed in the Java programming language. It provides a high-level software environment to do any kind of Evolutionary Algorithm (EA), with support for genetic algorithms (binary, integer and real encoding), genetic programming (Koza 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 that its main features are:
- Generic. With JCLEC, the user can execute any kind of EC, as far as it fulfills some minimum requirements. 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 includes support for advanced EC techniques such as multi-objective optimization. The user can take any of these specialized frameworks and modify them further to create a customized evolutionary algorithm.
- User friendly. Considerable efforts were deployed to make the use of JCLEC as easy and pleasant as possible. JCLEC possesses several mechanisms that offer a user friendly programming interface. The programming style promoted is high-level and allows rapid prototyping of applications.
- Portable. The JCLEC system has been coded in the Java programming language that ensures its portability between all platforms that implement a Java Virtual Machine.
- Efficient. To ensure efficient execution, particular attention was given to optimization of critical code sections. Detailed execution profiles of these sections were done.
- Robust. Verification and validation statements are embedded into the code to ensure that operations are valid and to report problems to the user.
- Elegant. 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.



