Today, there is no "heuristics stockroom" with ready-to-use software components for heuristic search. So the application of advanced metaheuristics for some new type of problem usually requires to start the implementation from scratch. This led to the development of an application framework in C++ called HotFrame (Heuristic OpTimization FRAMEwork), which provides adaptable components that incorporate different metaheuristics as well as an architectural description of the collaboration among these components and application-specific complements. All typical application-specific concepts are treated as objects (classes): problems, solutions, neighbors, solution and move attributes. Metaheuristics concepts and their building-blocks such as tabu criteria and diversification strategies are also treated as objects. HotFrame employs genericity as the primary mechanism to make respective classes adaptable. That is, common behavior of metaheuristics is factored out and grouped in generic classes, applying static type variation. Metaheuristics template classes are parameterized by aspects such as solution spaces and neighborhood structures.
HotFrame includes metaheuristics such as basic and iterated local search, simulated annealing and similar methods, different variants of tabu search, evolutionary methods, variable depth neighborhood search, candidate list approaches and some hybrid methods. All heuristics are implemented in a consistent way, which facilitates easy embedding of arbitrary methods into application systems or as parts of more advanced/hybrid methods. (That is, HotFrame is not intended to serve as a standalone application with a fancy GUI, but aims at providing functionality that can be reused within other applications or just called from the command line.) Both new metaheuristics and new applications can be added to the framework. HotFrame includes built-in support for solution spaces that can be represented as binary vectors, permutations, or assignments of objects to resources (in each case in connection with corresponding standard neighborhood structures, solution and move attributes). Otherwise, the user may derive special application classes from suitable built-in classes or implement respective classes from scratch according to a specified interface.
Please note that, according to the nature of an application framework, a new kind of application requires one to complete the framework by actually coding in C++ (with regard to respective application-specific hot-spots). That is, there is no way to apply the framework without having a good command of C++ (including templates). Thus far, HotFrame has been successfully applied for quite some applications from research and practice. Some of these applications are described in the papers referenced below. Unfortunately, the framework lacks comprehensive documentation. For more information you may consider the references below or contact Andreas Fink (fink@econ.uni-hamburg.de) or Stefan Voß (stefan.voss@uni-hamburg.de).