Free cookie consent management tool by TermsFeed Policy Generator

Opened 9 years ago

Last modified 5 years ago

#2431 assigned feature request

Run-length distribution (RLD) Analysis — at Version 25

Reported by: abeham Owned by: abeham
Priority: medium Milestone: HeuristicLab 3.3.17
Component: Analysis Version: branch
Keywords: Cc:

Description (last modified by abeham)

Run-length distributions give insight into the required algorithmic effort (in terms of function evaluations or wall-clock time) for reaching a certain target.

The empirical cumulative distribution function (ECDF) can be calculated from several runs of an optimization algorithm. From a first-hit graph several targets will be defined in the objective function and it will be measured when a target is hit by an algorithm. The proportion of all these hits forms the distribution.

Design issues:

  • Algorithm Execution time is hard to obtain (similar problem with the introduction of terminators)
    • The precision of execution time from the algorithm is not good enough (~200ms)
  • ResultParameter's ActualValue property is confusing, I had to lookup usage of this parameter myself
  • Adding EvaluatedMoves and EvaluatedSolutions is complicated by different cost factors
    • Some algorithms/operators count evaluated solution-equivalents instead
    • Integer is sometimes too small to hold the amount of evaluated moves for long runs / big problems
  • Analyzers depend on BestAverageWorstQualityAnalyzer being run before them
    • Arguably, best-so-far quality and execution time are results that the algorithm itself should provide and not an analyzer
    • Quality progress chart should be calculated in a separate analyzer
  • ISingleObjectiveHeuristicOptimizationProblem specifies MaximizationParameter as an IParameter instead of an IValueParameter<BoolValue>
  • Which parameters in a run characterize the algorithm instance?
    • E.g. Seed does not characterize the instance
    • Analyzers do not characterize the instance, but some "analyzers" may modify penalties
  • ResultCollection contains Result objects, but RunCollection.Results contains only the items
    • The Result objects are always in the way, they should be removed

Change History (25)

comment:1 Changed 9 years ago by abeham

  • Status changed from new to accepted
  • Version changed from 3.3.12 to branch

r12764:

  • branched relevant plugins
  • added analyzer to calculate quality vs evaluation first-hit graph
  • (also added results parameter)

comment:2 Changed 9 years ago by abeham

r12766: forgot to commit

comment:3 Changed 9 years ago by abeham

r12771:

  • Added run collection view
  • Changed name of analyzers
  • Modified algorithms to include Execution Time as a result

Logscaling is still an issue

comment:4 Changed 9 years ago by abeham

  • Description modified (diff)

comment:5 Changed 9 years ago by abeham

  • Description modified (diff)

r12774: minor improvements

comment:6 Changed 9 years ago by abeham

  • Description modified (diff)
  • Summary changed from Algorithm performance comparison by ECDF to Run-length distribution (RLD) Analysis

comment:7 Changed 9 years ago by abeham

r12803: worked on RLD analysis

  • started implementation of IRRRun
  • renamed view from ECDF to RLD
  • reverted algorithms (execution time)
  • changed per clock analyzer

comment:8 Changed 9 years ago by abeham

r12804:

  • worked on IRRestarter (early abort still troublesome)
  • Updated RLD view to allow defining targets
  • Attempting to handle maximization/minimization

Fun detail:

  • HeuristicLab.Analysis references HeuristicLab.Optimization
  • HeuristicLab.Optimization.Views references HeuristicLab.Analysis.Views

IRRestarter is currently placed in HeuristicLab.Analysis, its view in HeuristicLab.Optimization.Views.

comment:9 Changed 9 years ago by abeham

  • Description modified (diff)

comment:10 Changed 9 years ago by abeham

r12805: fixed error due to removed resx file

comment:11 Changed 9 years ago by abeham

r12806: added options to add results based on targets or budgets

comment:12 Changed 9 years ago by abeham

r12808:

  • added ability to plot curves for multiple targets at once
  • fixed bug in IndexedDataTableView regarding log-scaling
  • added result that counts restarts
  • fixed bugs in IRRestarter
  • Set LineWidth = 2 in analyzers for chart
  • fixed bugs in RLD view

comment:13 Changed 9 years ago by abeham

  • Description modified (diff)

comment:14 Changed 9 years ago by abeham

r12813:

  • Added calculation of RTs, RTus, FEs, FEus and prune runs in alg before every restart
  • merged changes from trunk

comment:15 Changed 9 years ago by abeham

r12822: if multiple targets are plotted, the same color is used for each group

comment:16 Changed 9 years ago by abeham

r12825:

  • removed output of RTs, RTus, ...
  • added 2nd row to charts that state restarts until a target was achieved
  • added option to include or exclude solution results

comment:17 Changed 9 years ago by abeham

r12826: omitting empty series

comment:18 Changed 9 years ago by abeham

r12831: updated to trunk

comment:19 Changed 9 years ago by abeham

r12834: Changed analyzer to always output last value (even if quality is equal)

comment:20 Changed 9 years ago by abeham

r12838: updated RLD analysis view

  • Added analysis by cost
  • Prepared tab for output of ERT tables

comment:21 Changed 9 years ago by abeham

r12841:

  • Added calculation of ERT results tables
  • Added grouping by problem to avoid having different problems in one graph
  • Some restructuring to avoid duplicate code

comment:22 Changed 9 years ago by abeham

r12856: Added AlgorithmIterator instead of IRRestarter

  • AlgorithmIterator implements IAlgorithm whereas IRRestarter implemented only IOptimizer
  • Deriving from Algorithm leads to better design

comment:23 Changed 9 years ago by abeham

r12859: Renamed AlgorithmIterator to IteratedAlgorithm

comment:24 Changed 9 years ago by abeham

r12862: modified EngineAlgorithm to clear log on prepare

comment:25 Changed 9 years ago by abeham

  • Description modified (diff)
Note: See TracTickets for help on using tickets.