Changeset 9238 for branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/Fragments/SymbolicExpressionTreeFragmentLengthsAnalyzer.cs
- Timestamp:
- 02/21/13 16:02:47 (11 years ago)
- Location:
- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/Fragments
- Files:
-
- 1 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/Fragments/SymbolicExpressionTreeFragmentLengthsAnalyzer.cs
r9082 r9238 63 63 UpdateCounterParameter.Hidden = true; 64 64 UpdateIntervalParameter.Hidden = true; 65 66 67 65 } 68 66 #region After deserialization code 69 70 67 [StorableHook(HookType.AfterDeserialization)] 71 68 private void AfterDeserialization() { … … 97 94 InitializeRows(); 98 95 99 var parents = SecondaryTraceMap.Values.SelectMany(list => list.Cast<ISymbolicExpressionTree>()).ToList(); // parents of individuals at generation N-1 100 var offspring = SecondaryTraceMap.Keys.Cast<ISymbolicExpressionTree>().ToList(); // individuals at generation N-1 101 var fragments = SecondaryFragmentMap.Values.Cast<IFragment>().ToList(); 96 var fragmentLengths = (from m in SecondaryFragmentMap 97 let fragment = (IFragment)m.Value 98 where fragment.Root != null 99 select fragment.Length 100 ).ToList(); 102 101 102 // fragments of selected offspring 103 var selected = new HashSet<ISymbolicExpressionTree>(GlobalTraceMap.Values.SelectMany(list => list.Cast<ISymbolicExpressionTree>())); 104 var goodFragmentlengths = (from m in SecondaryFragmentMap 105 let tree = (ISymbolicExpressionTree)m.Key 106 let fragment = (IFragment)m.Value 107 where fragment.Root != null 108 where selected.Contains(tree) 109 select fragment.Length 110 ).ToList(); 103 111 104 // a hash of the offspring trees that got selected for reproduction at generation N 105 var selected = new HashSet<ISymbolicExpressionTree>(GlobalTraceMap.Values.SelectMany(list => list.Cast<ISymbolicExpressionTree>())); 106 107 var selectedOffspringFragments = SecondaryFragmentMap.Where(m => selected.Contains((ISymbolicExpressionTree)m.Key)).Select(m => m.Key).ToList(); 108 109 var selectedOffspring = offspring.Where(selected.Contains).ToList(); 110 var selectedOffspringParents = selectedOffspring.SelectMany(x => SecondaryTraceMap[x].Cast<ISymbolicExpressionTree>()).ToList(); 111 112 var rows = FragmentLengths.Rows; 113 114 double avgParentsLength = parents.Count > 0 ? parents.Average(p => p.Length) : 0; 115 double avgGoodParentsLength = selectedOffspringParents.Count > 0 ? selectedOffspringParents.Average(p => p.Length) : 0; 116 rows["Parent lengths (all)"].Values.Add(avgParentsLength); 117 rows["Parent lengths (good)"].Values.Add(avgGoodParentsLength); 118 double avgOffspringLength = offspring.Count > 0 ? offspring.Average(o => o.Length) : 0; 119 double avgGoodOffspringLength = selectedOffspring.Count > 0 ? selectedOffspring.Average(o => o.Length) : 0; 120 rows["Offspring lengths (good)"].Values.Add(avgOffspringLength); 121 rows["Offspring lengths (all)"].Values.Add(avgGoodOffspringLength); 122 double avgFragmentLength = fragments.Count > 0 ? fragments.Average(f => f.Length) : 0; 123 double avgGoodFragmentLength = selectedOffspringFragments.Count > 0 ? fragments.Average(f => f.Length) : 0; 124 rows["Fragment lengths (good)"].Values.Add(avgGoodFragmentLength); 125 rows["Fragment lengths (all)"].Values.Add(avgFragmentLength); 112 FragmentLengths.Rows["Average fragment length (all)"].Values.Add(fragmentLengths.Count > 0 ? fragmentLengths.Average() : 0.0); 113 FragmentLengths.Rows["Average fragment length (good)"].Values.Add(goodFragmentlengths.Count > 0 ? goodFragmentlengths.Average() : 0.0); 126 114 } 127 115 } 128 129 116 return base.Apply(); 130 117 } … … 132 119 protected override void InitializeParameters() { 133 120 var results = ResultsParameter.ActualValue; 134 if (!results.ContainsKey("Fragment Lengths")) {135 FragmentLengths = FragmentLengths ?? new DataTable("Fragment Lengths") { VisualProperties = { YAxisTitle = "Fragment length" } };136 results.Add(new Result("Fragment Lengths", FragmentLengths));121 if (!results.ContainsKey("Fragment lengths")) { 122 FragmentLengths = FragmentLengths ?? new DataTable("Fragment lengths") { VisualProperties = { YAxisTitle = "Number of nodes" } }; 123 results.Add(new Result("Fragment lengths", FragmentLengths)); 137 124 } 138 125 base.InitializeParameters(); … … 142 129 string[] rowNames = 143 130 { 144 "Parent lengths (good)", "Parent lengths (all)", 145 "Offspring lengths (good)", "Offspring lengths (all)", 146 "Fragment lengths (good)", "Fragment lengths (all)" 131 "Average fragment length (good)", "Average fragment length (all)" 147 132 }; 148 133 foreach (var rowName in rowNames.Where(rowName => !FragmentLengths.Rows.ContainsKey(rowName))) {
Note: See TracChangeset
for help on using the changeset viewer.