hMod: A software framework for assembling highly detailed heuristics algorithms

Enrique Urra, Claudio Cubillos, Daniel Cabrera-Paniagua, Rafael Mellado

Research output: Contribution to journalArticlepeer-review

5 Scopus citations

Abstract

Software design and component reuse for heuristic algorithms have gained in relevance; however, further innovation is needed. In this context, hMod is presented as a software framework suited for implementing heuristic algorithms, with a focus on intensive reuse of highly cohesive operator and data components within algorithmic structures, making it possible to dynamically (re)configure and manage such a structure. Rather than a fast-prototyping tool, hMod supports heuristic implementation in the long term, whereby complexity can escalate from simple operators to major hyperheuristic architectures. In its core resides a novel object-oriented representation of algorithms through a pattern-like implementation, namely, algorithm assembling (AA). Additionally, it incorporates component integration features, such as dependency injection mechanisms. hMod has been mentioned in previous research, in which hyperheuristic methods were implemented and evaluated from an optimization perspective. In this work, a description of the framework is presented from the software design perspective, including the AA model, its architecture, and a detailed presentation of the main features of the framework. Previous hMod applications have demonstrated that it supports not only the software design requirements of heuristic algorithms but performance standards as well. Available sources of the framework can be found in http://gitlab.com/eurra/hmod.

Original languageEnglish
Pages (from-to)971-994
Number of pages24
JournalSoftware - Practice and Experience
Volume49
Issue number6
DOIs
StatePublished - Jun 2019

Keywords

  • algorithm assembling
  • dependency injection
  • heuristic algorithms
  • hyperheuristics
  • software framework

Fingerprint

Dive into the research topics of 'hMod: A software framework for assembling highly detailed heuristics algorithms'. Together they form a unique fingerprint.

Cite this