OSGiLiath - OSGi Laboratory for Implementation And Testing of meta-Heuristics (by Pablo García-Sánchez)
Visit http://www.osgiliath.org for additional information.
##Version 1.0 - May 2013
- Project decription: OSGiLiath is a Service Oriented Evolutionary Framework for Evolutionary Algorithms. It can be used inside an OSGi container (such as Equinox of Felix) to take advantage of OSGi capabilities, or be used as a normal Java library.
- osgiliath: This is the core bundle. It includes all the interfaces common to the algorithms such as "Algorithm", "AlgorithmParameters" or "Problem".
- Evolutionary Algorithm: Includes the "EvolutionaryAlgorithm" implementation and interfaces to create the rest of the services that form an EA: "Recombinator" and "Crossover", "Mutator" and "Mutation", "StopCriterion" or "FitnessCalculator". It also provides interfaces for the creation of individuals: "Individual", "Fitness", "Gene", and "Genome".
- Basic Evolutionary Components: Includes several implementations (the most common ones) of the previous interfaces: "ListPopulation", "ListIndividual", "DoubleFitness", "NGenerationStopCriterion", "BasicOrderRecombinator", "UPXListCrossover" and others.
- Binary Problems: Includes implementation of well-known problems, such as OneMax and MMDP: "OneMaxFitnessCalculator", "MMDPFitnessCalculator" or "BinaryProblemRandomInitializer".
- Function Problems: Multi-dimensional optimization functions, such as Griegwank or Rastrigin are implemented in this bundle, with their associate Initializers or Fitness Calculators.
- NSGA2: Interfaces and implementations of services for the NSGA2 algorithm.
- OSGiLiART: Service implementation for the creation of Evolutionary Art: "ArtisticIndividual" or "HistogramFitnessCalculator" are examples.
- NoOSGi: Because OSGi allows the separation of source code with the OSGi framework capabilities, this bundle includes Java code to integrate the services without any specific technology (just using basic Object Oriented programming).
- IntelligentManager: An example of how the services can be bound/unbound in real-time. By now, in each step the "IntelligentRandomManager" selects randomly from the available Crossovers, Mutators and Replacers implementations.
- HumanGuidance: a web application to deploy in Tomcat or Glassfish to vote images.
How to obtain the project:
Project sources can be obtained from GitHub using the command
git clone https://github.com/fergunet/osgiliath.git
(or via Eclipse following the tutorial in )
It requires Java 1.6 or superior (Oracle or OpenJDK). It can be deployed in a OSGi container, if desired (Equinox 3.5 or higher and Apache Felix). For distribution capabilities, ECF (Eclipse Communication Framework) can be added. Follow tutorial  to add into the OSGi container.
Install OSGiLiath in Eclipse IDE:
A complete guide about how to set-up OSGiLiath in Eclipse, and how to use OSGi capabilities (such as distribution with ECF) is explained in . Two papers with tutorials are available: Introduction to SOA-EA  and a more technology-specific one in .
Documentation and tutorials:
Two tutorials about the framework usage can be found in  and .
OSGiLiath uses a GNU/LGLP License, please check the LICENSE file for more information.
 Main page: http://www.osgiliath.org  Getting Started tutorial: http://osgiliath.org/2013/03/05/getting-started-osgiliath-eclipse/  Service Oriented Evolutionary Algorithms: http://geneura.ugr.es/~pgarcia/papers/2013/2013_soco_soa.pdf  Developing Services in a Service Oriented Architecture for Evolutionary Algorithms: http://geneura.ugr.es/~pgarcia/papers/2013/osgi-evosoft.pdf
email@example.com (email) or @osgiliathSOA (Twitter).
Thanks to all collaborators that have improved OSGiLiath: Daniel Calandria Rubén Héctor García Carlos García Pardillos Fruela Palacio JJ Merelo
Roberto Morcillo Ana Belén Pelegrina