最近研究协同进化算法编程,整理了目前网上开源的算法库,由于我是开发程序的目的是最终为产品加上优化引擎,因此采用java开发,可能速度较慢,但是产品化较为方便。其余的综合平台还有Matlab、Optplanner、LocalSolver等等,这里不进行比较。
Jenetics
只有遗传算法,Jenetics是一个基于Java的用来计算遗传问题的应用.它提供了该算法的几个概念明确分开,如基因,染色体,基因型,表型,人口和FitnessFunction.
Jeneticsis designed with a clear separation of the several concepts of the algorithm, e.g. Gene, Chromosome, Genotype, Phenotype, Population and fitness Function. Jenetics allows you to minimize and maximize the given fitness function without tweaking it. In contrast to other GA implementations, the library uses the concept of an evolution stream (EvolutionStream) for executing the evolution steps. Since the EvolutionStream implements the Java Stream interface, it works smoothly with the rest of the Java Stream API
来源: http://jenetics.io/
Opt4J
支持多目标进化算法较少
Opt4J is an open source Java-based framework for evolutionary computation. It contains a set of (multi-objective) optimization algorithms such as evolutionary algorithms (including SPEA2 and NSGA2), differential evolution, particle swarm optimization, and simulated annealing. The benchmarks that are included comprise ZDT, DTLZ, WFG, and the knapsack problem.
来源: http://opt4j.sourceforge.net/
MATLAB® Optimization with TOMLAB
Matlab的运筹优化平台
The TOMLAB Optimization Environment is a powerful optimization platform and modeling language for solving applied optimization problems in MATLAB. TOMLAB provides a wide range of optimization toolboxes, features, and services for your solution process. Read more about TOMLAB >>
来源: http://tomopt.com/tomlab/
jMetal
支持单目标和多目标进化算法
jMetal stands for Metaheuristic Algorithms in Java, and it is an object-oriented Java-based framework for multi-objective optimization with metaheuristics.
- Multi-objective algoritms: NSGA-II (variants: ssNSGAII, NSGAIIadaptive, NSGAIIrandom), SPEA2, PAES, PESA-II, OMOPSO, MOCell, AbYSS, MOEA/D, Densea, CellDE, GDE3, FastPGA, IBEA, SMPSO, SMPSOhv, SMS-EMOA, dMOPSO, WASFGA, GWASFGA
- Single-objective algoritms: genetic algorithm (variants: generational, steady-state, synchronous cellular, asynchronous cellular), evolution strategy (variants: elitist or mu+lambda, non-elitist or mu, lambda), PSO, DE, CMA-ES
- Parallel algorithms: pNSGAII, pSMPSO, pMOEAD, pgGA
- Included problems:
Problem families: ZDT, DTLZ, WFG, CEC2009, LZ09
Classical problems: Kursawe, Fonseca, Schaffer
Constrained problems: Srinivas, Tanaka, Osyczka2, Constr_Ex, Golinski, Water
Combinatorial problems: multi-objective TSP, multi-objective QAP - Quality indicators: hypervolume, spread, generational distance, inverted generational distance, additive epsilon, R2, WFG hypervolume
- Variable representations: binary, real, binary-coded real, integer, permutation, mixed encoding (real+binary, int+real).
来源: http://jmetal.sourceforge.net/
JGAP
包括GA和GP两种进化算法
JGAP 是一款用Java编写的遗传算法包,由sourceforce上开发而来。它提供了基本的遗传算法,你可以使用它来解决一些适合用遗传算法解决的问题。而且它给出了很多例子程序, (pronounced “jay-gap”) is a Genetic Algorithms and Genetic Programming component provided as a Java framework.
来源:http://jgap.sourceforge.net/
MOEA Framework
支持单目标和多目标的进化算法
- The MOEA Framework aims to provide a comprehensive collection of algorithms and tools for single and multiobjective optimization
- The MOEA Framework is a free and open source Java library for developing and experimenting with multiobjective evolutionary algorithms (MOEAs) and other general-purpose single and multiobjective optimization algorithms. The MOEA Framework supports genetic algorithms, differential evolution, particle swarm optimization, genetic programming, grammatical evolution, and more. A number of algorithms are provided out-of-the-box, including NSGA-II, NSGA-III, ε-MOEA, GDE3, PAES, PESA2, SPEA2, IBEA, SMS-EMOA, SMPSO, OMOPSO, CMA-ES, and MOEA/D. In addition, the MOEA Framework provides the tools necessary to rapidly design, develop, execute and statistically test optimization algorithms.
来源: http://moeaframework.org/index.html
Watchmaker Framework
比较老
The Watchmaker Framework is an extensible, high-performance, object-oriented framework for implementing platform-independent evolutionary/genetic algorithms in Java.
来源:http://watchmaker.uncommons.org/
ECJ 23
GP算法出色
A Java-based Evolutionary Computation Research System
ECJ is a research EC system written in Java. It was designed to be highly flexible, with nearly all classes (and all of their settings) dynamically determined at runtime by a user-provided parameter file. All structures in the system are arranged to be easily modifiable. Even so, the system was designed with an eye toward efficiency.
来源: http://cs.gmu.edu/~eclab/projects/ecj/
JCLEC
Java Class Library for Evolutionary Computation
- 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:
来源: http://jclec.sourceforge.net/index.php
HeuristicLab
C写的进化算法库
HeuristicLab is a framework for heuristic and evolutionary algorithms that is developed by members of the Heuristic and Evolutionary Algorithms Laboratory (HEAL) since 2002.
来源: http://dev.heuristiclab.com/trac.fcgi/wiki
ParadisEO
C编写的算法库,课程很丰富
ParadisEO patch version 2.0.1 released* ParadisEO 2.0
来源:http://paradiseo.gforge.inria.fr/
PISA
瑞士联邦理工大学开发
Selector为算法,Variator为问题,进行隔离,方便算法使用和测试,与问题无关
PISA context a search algorithm is a method which tries to find solutions to a given problem by iterating three steps: the evaluation of candidate solutions, the selection of promising candidates based on this evaluation and the generation of new candidates by variation of these selected candidates. As examples most evolutionary algorithms and simulated annealing fall into this category.
PISA is mainly dedicated to multi-objective search, where the optimization problem is characterized by a set of conflicting goals and not just one criterion that needs to be optimized.
来源: http://www.tik.ee.ethz.ch/pisa/?page=principles.php
结论
综合比较,决定研究jMetal、 MOEA Framework、 ECJ 三种工具中的协同进化算法,ParadisEO可以用来学习算法的编写