Skip to content

Add native constructive algorithms #82

Description

@eugenioLR

The current code only supports improvement-based algorithms, and EDAs (though the design needs to be redone).

Modern metaheuristics and many classic ones use constructive components, where heuristics are used con construct the solution vector one (or multiple) components at a time. This is currently difficult to do without using unintended features and might be very akward to work with.

This is the reason we propose to add new abstractions to the repository so they can be handled natively. This can include, a ConstrutiveHeuristic class that lets user specify a heuristic. MaskedObjective that evaluates only certain components or a ConstructiveBuilder abstraction that generates vectors using heuristics. Many more ideas can be used, but we propose a list of things we idealy would want to include.

Constructive algorithms

  • Add masked objective function (evaluate partially constructed solutions)
  • Add heuristics for constructive algorithms (TSP Nearest neighbor, Greedy...)
  • Add constructive solution builders
  • Add constructive-based initialization
  • Add constructive algorithms as operators
  • Add full constructive algorithms (greedy/one-shot)
  • Add complex constructive algorithms (ACO, GRASP)
  • Allow mixing of constructive heuristics with regular iterative heuristics

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or requesthelp wantedExtra attention is neededresearchCheck the state of the art to see how to best do this.
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions