Changeset 10654 for branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionAfterCrossoverOperator.cs
- Timestamp:
- 03/24/14 23:50:17 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionAfterCrossoverOperator.cs
r10650 r10654 9 9 public class SymbolicDataAnalysisExpressionAfterCrossoverOperator : AfterCrossoverOperator<ISymbolicExpressionTree> { 10 10 public override IOperation Apply() { 11 var childVertex = GenealogyGraph[ChildParameter.ActualValue].Last(); 11 var child = ChildParameter.ActualValue; 12 var childVertex = GenealogyGraph[child].Last(); 12 13 var arc0 = (IGenealogyGraphArc)childVertex.InArcs[0]; 13 14 var arc1 = (IGenealogyGraphArc)childVertex.InArcs[1]; 14 15 var nodes0 = (List<ISymbolicExpressionTreeNode>)arc0.Data; 15 16 var nodes1 = (List<ISymbolicExpressionTreeNode>)arc1.Data; 16 var childNodes = ChildParameter.ActualValue.IterateNodesBreadth().ToList();17 var childNodes = child.IterateNodesPrefix().ToList(); 17 18 IFragment<ISymbolicExpressionTreeNode> fragment = null; 18 19 19 for (int i = 0; i < Math.Min(nodes0.Count, childNodes.Count); ++i) { 20 20 if (nodes0[i] == childNodes[i]) continue; 21 21 fragment = new Fragment<ISymbolicExpressionTreeNode> { 22 22 Root = childNodes[i], 23 Index = i 23 Index = i, 24 24 }; 25 fragment.OldIndex = nodes1.IndexOf(fragment.Root); 26 break; 25 27 } 26 28 if (fragment == null) throw new Exception("Could not determine fragment!"); 27 28 for (int i = 0; i < nodes1.Count; ++i) {29 if (nodes1[i] != fragment.Root) continue;30 fragment.OldIndex = i;31 }32 29 33 30 arc0.Data = null;
Note: See TracChangeset
for help on using the changeset viewer.