heal-research / HeuristicLab

HeuristicLab - An environment for heuristic and evolutionary optimization
https://dev.heuristiclab.com
GNU General Public License v3.0
39 stars 16 forks source link

Pearson R2 & Tree Similarity Multiobjective Evaluator #2977

Closed HeuristicLab-Trac-Bot closed 5 years ago

HeuristicLab-Trac-Bot commented 5 years ago

Issue migrated from trac ticket # 2977

milestone: HeuristicLab 3.3.16 | component: Problems.DataAnalysis.Symbolic.Regression | priority: medium | resolution: done | keywords: merged

2019-01-04 14:49:35: @foolnotion created the issue


The idea behind this multi-objective evaluator is to try to maintain better diversity among the population of solution candidates, helping the algorithm to improve by combining advantageous traits from more diverse parents.

This evaluator works quite well with the NSGA-II.

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 14:50:21: @foolnotion changed status from new to accepted

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 14:50:21: @foolnotion changed title from New R2 & Tree Similarity Multiobjective Evaluator to Pearson R2 & Tree Similarity Multiobjective Evaluator

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 15:07:46: @foolnotion changed status from accepted to reviewing

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 15:07:46: @foolnotion changed owner from @foolnotion to @mkommend

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 15:07:46: @foolnotion changed component from Problems.DataAnalysis.Symbolic to Problems.DataAnalysis.Symbolic.Regression

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 15:07:46: @foolnotion commented


r16499: Implement Pearson R2 & Tree Similarity Evaluator.

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 15:24:25: @gkronber commented


  • sw is not used (?) and should be removed.
  • creative use of ExecutionContext.Scope.Parent.SubScopes.Where(x => x.Variables.ContainsKey("SymbolicExpressionTree")). Seems likely to break or be incompatible to other algorithms. Maybe you could split evaluation and sim-matrix calculation into an Evaluator and an Analyzer?
  • Can we keep Calculate a static method. Ideally, this would allow to remove the synchronization in Calculate.
HeuristicLab-Trac-Bot commented 5 years ago

2019-01-04 21:33:37: @foolnotion commented


#!div style="font-size: 80%"
    creative use of `ExecutionContext.Scope.Parent.SubScopes.Where(x => x.Variables.ContainsKey("SymbolicExpressionTree"))`. Seems likely to break or be incompatible to other algorithms. Maybe you could split evaluation and sim-matrix calculation into an Evaluator and an Analyzer? 

I am not quite sure how to achieve that. The analyzer would have to run before the evaluator, on the scope level above the evaluator (ExecutionContext.Parent.Scope) so it cannot be wired as a BeforeExecutionOperator. The evaluator is executed at solution creation and inside the main loop. The only solution I can think of is having the evaluator apply the analyzer but that does not seem like much of an improvement. Any ideas?

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-05 18:18:40: @gkronber commented


I thought it could be possible to implement an analyzer which takes all individuals form the population and does some processing for similarity calculation (e.g. linearization, simplification) and then produces an data structure that is written back to the population scope by the analyzer. The evaluator can later retrieve this data structure again. In this case it is necessary to manually you need to add (or enable) the analyzer to make the evaluator work but I think this would be ok.

In the first generation we can probably select randomly (if the analyzer has not been executed before the evaluator)

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-05 18:18:40: @gkronber

HeuristicLab-Trac-Bot commented 5 years ago

2019-05-22 13:14:26: @foolnotion commented


r16978: Introduce separate SymbolicDataAnalysisExpressionTreeAverageSimilarityCalculator operator for computing the population similarity matrix. Refactor evaluator to use the values calculated by the SimilarityCalculator.

HeuristicLab-Trac-Bot commented 5 years ago

2019-05-23 10:39:11: @foolnotion commented


r16981: Make SymbolicDataAnalysisExpressionTreeAverageSimilarityCalculator non-discoverable.

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-04 16:48:39: @mkommend commented


This ticket blocks the reintegration of the persistence into stable and should be prioritized. This ticket depends on #2950.

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-04 16:48:39: @mkommend

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-07 23:04:04: @mkommend changed status from reviewing to readytorelease

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-07 23:19:57: @mkommend commented


r17096: Merged r16499 into stable. \ r17098: Merged r16978, r16981 into stable.

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-07 23:19:57: @mkommend

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-17 22:12:04: @abeham changed status from readytorelease to closed

HeuristicLab-Trac-Bot commented 5 years ago

2019-07-17 22:12:04: @abeham set resolution to done