Jump to content

HeuristicLab

From Wikipedia, the free encyclopedia
HeuristicLab
Developer(s)Heuristic and Evolutionary Algorithm Laboratory (HEAL)
Initial release2002; 22 years ago (2002)
Stable release
3.3.16 "Prague"
Written inC#
Operating systemMicrosoft Windows
TypeSoftware system for metaheuristic optimization
LicenseGNU General Public License
Websitedev.heuristiclab.com

HeuristicLab[1][2] is a software environment for heuristic and evolutionary algorithms, developed by members of the Heuristic and Evolutionary Algorithm Laboratory (HEAL) at the University of Applied Sciences Upper Austria, in Hagenberg im Mühlkreis. HeuristicLab has a strong focus on providing a graphical user interface so that users are not required to have comprehensive programming skills to adjust and extend the algorithms for a particular problem. In HeuristicLab algorithms are represented as operator graphs and changing or rearranging operators can be done by drag-and-drop without actually writing code. The software thereby tries to shift algorithm development capability from the software engineer to the user and practitioner. Developers can still extend the functionality on code level and can use HeuristicLab's plug-in mechanism that allows them to integrate custom algorithms, solution representations or optimization problems.

History

[edit]

Development on HeuristicLab was started in 2002 by Stefan Wagner and Michael Affenzeller. The main motivation for the development of HeuristicLab was to build a paradigm-independent, flexible, extensible, and comfortable environment for heuristic optimization on top of a state-of-the-art programming environment and by using modern programming concepts. As the Microsoft .NET framework seemed to fulfill this requirements it was chosen as the development environment and C# as programming language. The first officially available version of HeuristicLab was 1.0 released in 2004 with an improved version 1.1 released in 2005. Development on the next version of HeuristicLab started in the same year. Among many things it was decided that HeuristicLab 2.0 should provide an entirely new user experience and lift the burden of programming off of the user. Therefore, HeuristicLab 2.0 was the first version featuring graphical tools for creating algorithms, however due to the complexity of the user interface HeuristicLab 2.0 was never released to the public. In the summer of 2007 it was decided that a new iteration of HeuristicLab was needed which should combine the usability of version 1.1 with the algorithm modeling concepts of version 2.0. HeuristicLab 3.0 was released internally in the beginning of 2008. In the next 2 years HeuristicLab was gradually improved which led to the release of version 3.3 in summer 2010 as open source software.

Features

[edit]
A screenshot of HL showing the algorithm designer and a programmable operator
Algorithm Designer
One of the features that distinguishes HeuristicLab from many other metaheuristic software frameworks is the algorithm designer. HeuristicLab allows to model algorithms in a graphical way without having to write any source code. Algorithms in HeuristicLab are a composition of operators which are chained together. This sequence of operators is called the operator graph and can be viewed and edited for any algorithm in HeuristicLab. HeuristicLab also offers a so called Programmable Operator that can include source code which can be written from within HeuristicLab. Seeing how other algorithms work allows to try out new ideas by starting from an existing algorithm and incrementally modifying it. Of course new algorithms can also be created by writing code.
Experiment Designer
In HeuristicLab's Experiment Designer different algorithms with different parameter settings and problems can be composed, executed and analyzed. This is very useful for parameter tuning tasks where different parameterizations have to be executed and compared. HeuristicLab offerers a number of tools for graphically analyzing the results.
Plugin Infrastructure
Every functionality in HeuristicLab is available as a plugin. Developers can create and reuse plugins to integrate new features and extend the functionality of HeuristicLab.
Some other features
  • Genetic programming models can be simplified. The genetic programming trees can be exported to MATLAB, LaTeX, Excel or other formats.
  • Algorithms, problems, experiments, and results can be saved. Algorithms can be executed, pause, saved, restored, and continued.
  • Algorithms and experiments can be executed in parallel on multi-core and distributed computing systems.
  • Charts can be customized and exported to various image formats.
  • Results and other data can be copied to and from Microsoft Excel or other applications.
  • Write and solve MIP/LP models with integrated Google OR-Tools
  • HeuristicLab can be coupled with external applications, such as simulation models, to optimize their parameters.
  • Support for distributed computing (HeuristicLab Hive) based on a master-slave model similar to e.g. Boinc

Supported algorithms

[edit]

The following list gives an overview of the algorithms supported by HeuristicLab:

Supported problems

[edit]

The following list gives an overview of the problems supported by HeuristicLab:

  • Artificial Ant
  • Classification
  • Clusterin
  • Deceptive trap (step)
  • Even Parity
  • HIFF
  • Knapsack
  • Bin Packing
  • Graph Coloring
  • Koza-style Symbolic Regression
  • Lawn Mower
  • Multiplexer
  • NK[P,Q] Landscapes
  • OneMax
  • Quadratic Assignment
  • Job Shop Scheduling
  • Orienteering
  • Regression
  • Robocode
  • Single-Objective Test Functions
  • Multi-Objective Test Functions
  • Symbolic Classification
  • Symbolic Regression
  • Time Series Prognosis
  • Trading
  • Grammatical Evolution
  • Traveling Salesman
  • Probabilistic Traveling Salesman
  • Vehicle Routing
  • User-defined Problem: A problem which can be defined with HeuristicLab's graphical modelling tools.
  • External Evaluation Problem (single- and multi-objective): Allows to use external programs for evaluating solution candidates. This is useful for e.g. simulation-based optimization. Natively supported applications include e.g. MATLAB and Scilab.

See also

[edit]

References

[edit]
  1. ^ Wagner, Stefan; Kronberger G.; Beham A.; Kommenda M.; Scheibenpflug A.; Pitzer E.; Vonolfen S.; Kofler M.; Winkler S.; Dorfer V.; Affenzeller M. (2014). "Architecture and Design of the HeuristicLab Optimization Environment". Advanced Methods and Applications in Computational Intelligence. Topics in Intelligent Engineering and Informatics. Vol. 6. pp. 197–261. doi:10.1007/978-3-319-01436-4_10. ISBN 978-3-319-01435-7. Archived from the original on 2012-08-01.
  2. ^ Wagner, Stefan (2009). Heuristic Optimization Software Systems - Modeling of Heuristic Optimization Algorithms in the HeuristicLab Software Environment, PhD Thesis. Johannes Kepler University Linz.{{cite book}}: CS1 maint: location missing publisher (link)
  3. ^ Affenzeller, Michael; Wagner, Stefan (2004). "SASEGASA: A New Generic Parallel Evolutionary Algorithm for Achieving Highest Quality Results" (PDF). Journal of Heuristics. 10 (3): 243–267. doi:10.1023/b:heur.0000026895.72657.a2. S2CID 8565911.
[edit]