Changeset 11458 for branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SimilarityCalculators/BottomUpSimilarityCalculator.cs
- Timestamp:
- 10/13/14 13:03:24 (10 years ago)
- Location:
- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4
- Property svn:ignore
-
old new 5 5 TreeDistance 6 6 SymbolicDataAnalysisExpressionTreeMatching.cs 7 Importer
-
- Property svn:ignore
-
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SimilarityCalculators/BottomUpSimilarityCalculator.cs
r11229 r11458 32 32 [StorableClass] 33 33 [Item("BottomUpSimilarityCalculator", "A similarity calculator which uses the tree bottom-up distance as a similarity metric.")] 34 public class BottomUpSimilarityCalculator : SingleObjectiveSolutionSimilarityCalculator {34 public class BottomUpSimilarityCalculator : SingleObjectiveSolutionSimilarityCalculator, ISymbolicDataAnalysisExpressionSimilarityCalculator { 35 35 private readonly HashSet<string> commutativeSymbols = new HashSet<string> { "Addition", "Multiplication", "Average", "And", "Or", "Xor" }; 36 36 … … 39 39 public override IDeepCloneable Clone(Cloner cloner) { 40 40 return new BottomUpSimilarityCalculator(this, cloner); 41 } 42 43 public double CalculateSimilarity(ISymbolicExpressionTree t1, ISymbolicExpressionTree t2) { 44 if (t1 == t2) 45 return 1; 46 47 var map = ComputeBottomUpMapping(t1.Root, t2.Root); 48 return 2.0 * map.Count / (t1.Length + t2.Length); 41 49 } 42 50 … … 52 60 throw new ArgumentException("Cannot calculate similarity when one of the arguments is null."); 53 61 54 var similarity = CalculateS olutionSimilarity(t1, t2);62 var similarity = CalculateSimilarity(t1, t2); 55 63 if (similarity > 1.0) 56 64 throw new Exception("Similarity value cannot be greater than 1"); 57 65 58 66 return similarity; 59 }60 61 public double CalculateSolutionSimilarity(ISymbolicExpressionTree t1, ISymbolicExpressionTree t2) {62 if (t1 == t2)63 return 1;64 65 var map = ComputeBottomUpMapping(t1.Root, t2.Root);66 return 2.0 * map.Count / (t1.Length + t2.Length);67 67 } 68 68 … … 174 174 } 175 175 176 if (n == n1 || n == n2) 177 continue; 178 176 179 var p = n.Parent; 177 180 if (p == null)
Note: See TracChangeset
for help on using the changeset viewer.