Changeset 7817
- Timestamp:
- 05/15/12 00:21:10 (13 years ago)
- Location:
- branches/HeuristicLab.EvolutionaryTracking
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Crossovers/TracingSymbolicExpressionTreeCrossover.cs
r7792 r7817 127 127 // compare the two nodes lists and check the difference (comparing node references so we avoid false functional identity). 128 128 // if no difference is found, then it is assumed that the whole tree was swapped with itself (it can happen), so the index is 0 129 int i , min = Math.Max(nodes0.Count, nodes1.Count);130 for ( i = 0; i != min; ++i)129 int i = 0, min = Math.Min(nodes0.Count, nodes1.Count); 130 for (; i != min; ++i) 131 131 if (nodes0[i] != nodes1[i]) break; 132 132 if (i == min) i = 0; -
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Plugin.cs
r7800 r7817 26 26 27 27 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding { 28 [Plugin("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding","Provides operators and related classes for the symbolic expression tree encoding.", "3.4.2.7 799")]28 [Plugin("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding","Provides operators and related classes for the symbolic expression tree encoding.", "3.4.2.7800")] 29 29 [PluginFile("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.dll", PluginFileType.Assembly)] 30 30 [PluginDependency("HeuristicLab.Analysis", "3.3")] -
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeMatching.cs
r7792 r7817 70 70 71 71 public static bool ContainsFragment(this ISymbolicExpressionTree tree, ISymbolicExpressionTreeNode fragment, int mode) { 72 var nodes = tree.IterateNodes Breadth() as List<ISymbolicExpressionTreeNode>;73 var fragments = fragment.IterateNodes Breadth() as List<ISymbolicExpressionTreeNode>;72 var nodes = tree.IterateNodesPostfix() as List<ISymbolicExpressionTreeNode>; 73 var fragments = fragment.IterateNodesPostfix() as List<ISymbolicExpressionTreeNode>; 74 74 return FindMatch(nodes, fragments, mode) != -1; 75 75 } … … 77 77 // convenience methods for less typing :) 78 78 private static IEnumerator<ISymbolicExpressionTreeNode> Enumerator(this ISymbolicExpressionTree tree) { 79 return tree.IterateNodes Breadth().GetEnumerator();79 return tree.IterateNodesPostfix().GetEnumerator(); 80 80 } 81 81 private static IEnumerator<ISymbolicExpressionTreeNode> Enumerator(this ISymbolicExpressionTreeNode tree) { 82 return tree.IterateNodes Breadth().GetEnumerator();82 return tree.IterateNodesPostfix().GetEnumerator(); 83 83 } 84 84 public static int FindMatch(ISymbolicExpressionTree a, ISymbolicExpressionTree b, int mode) { 85 var nodesA = a.IterateNodes Breadth() as List<ISymbolicExpressionTreeNode>;86 var nodesB = b.IterateNodes Breadth() as List<ISymbolicExpressionTreeNode>;85 var nodesA = a.IterateNodesPostfix() as List<ISymbolicExpressionTreeNode>; 86 var nodesB = b.IterateNodesPostfix() as List<ISymbolicExpressionTreeNode>; 87 87 return FindMatch(nodesA, nodesB, mode); 88 88 } 89 89 public static int FindMatch(ISymbolicExpressionTreeNode a, ISymbolicExpressionTreeNode b, int mode) { 90 var nodesA = a.IterateNodes Breadth() as List<ISymbolicExpressionTreeNode>;91 var nodesB = b.IterateNodes Breadth() as List<ISymbolicExpressionTreeNode>;90 var nodesA = a.IterateNodesPostfix() as List<ISymbolicExpressionTreeNode>; 91 var nodesB = b.IterateNodesPostfix() as List<ISymbolicExpressionTreeNode>; 92 92 return FindMatch(nodesA, nodesB, mode); 93 93 } -
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphChart.cs
r7792 r7817 160 160 // color selected node and its genealogy 161 161 if (_selectedGenealogyGraphNode == null) return; 162 var gNode = _selectedGenealogyGraphNode.Data; // genealogy graph node (representing an individual in the population)163 double rank = gNode.Rank;164 var ancestors = gNode.Ancestors().Where(a => a.Rank < rank).ToList();165 ancestors.Add(gNode);166 162 // use special highlighting for the currently selected genealogy graph node 167 163 var center = _selectedGenealogyGraphNode.Center; … … 174 170 Chart.Group.Add(_targetRectangle); 175 171 } 172 var gNode = _selectedGenealogyGraphNode.Data; // genealogy graph node (representing an individual in the population) 173 double rank = gNode.Rank; 174 var ancestors = gNode.Ancestors().Where(a => a.Rank < rank).ToList(); 175 ancestors.Add(gNode); 176 176 // highlight selected node and its ancestry 177 177 foreach (var node in ancestors.SelectMany(n => _visualNodeMap[n])) { … … 206 206 if (_selectedGenealogyGraphNode != null) 207 207 /* emit clicked event */ 208 OnGenealogyGraphNodeClicked(_selectedGenealogyGraphNode, e);208 GenealogyGraphNodeClicked(_selectedGenealogyGraphNode, e); 209 209 } 210 210 } -
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.cs
r7800 r7817 97 97 int index = SymbolicExpressionTreeMatching.FindMatch(nodes, fragments, similarityModeSelector.SelectedIndex); 98 98 if (index != -1) { 99 _selectedVisualSymbolicExpressionTreeNode = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(nodes[index + fragments.Count - 1]);99 _selectedVisualSymbolicExpressionTreeNode = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(nodes[index]); 100 100 var subtree = _selectedVisualSymbolicExpressionTreeNode.SymbolicExpressionTreeNode; 101 101 foreach (var visualNode in subtree.IterateNodesBreadth().Select(node => symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(node))) { … … 111 111 if (arc != null) { 112 112 var fragment = arc.Data as ISymbolicExpressionTreeNode; 113 //var fragmentNodes = fragment.IterateNodesBreadth() as List<ISymbolicExpressionTreeNode>;114 //var treeNodes = tree.IterateNodesBreadth() as List<ISymbolicExpressionTreeNode>;115 //var idx = SymbolicExpressionTreeMatching.FindMatch(treeNodes, fragmentNodes, (int)SymbolicExpressionTreeMatching.SimilarityLevel.Exact);116 113 foreach (var node in fragment.IterateNodesBreadth()) { 117 114 var visualNode = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(node); … … 121 118 } 122 119 } 123 // what's left to be done here is to:124 // - get the symbolic expression tree125 // - get the corresponding fragment126 // - for all symbolic expression tree nodes in the fragment, colorize the corresponding visual nodes127 // - repaint the tree128 120 } 129 121 -
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/SymbolicExpressionTreeGenealogyGraph.cs
r7785 r7817 16 16 #region Fragment tracing 17 17 public IEnumerable<ISymbolicExpressionTree> TraceFragment(ISymbolicExpressionTreeNode fragment, int mode = 0) { 18 //return Keys.Where(tree => ContainsFragment(tree, fragment, mode) != -1);19 18 return Keys.Where(tree => tree.ContainsFragment(fragment, mode)); 20 19 } -
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Selection/3.3/Plugin.cs
r7800 r7817 26 26 /// Plugin class for HeuristicLab.Selection plugin. 27 27 /// </summary> 28 [Plugin("HeuristicLab.Selection", "3.3.6.7 799")]28 [Plugin("HeuristicLab.Selection", "3.3.6.7800")] 29 29 [PluginFile("HeuristicLab.Selection-3.3.dll", PluginFileType.Assembly)] 30 30 [PluginDependency("HeuristicLab.Collections", "3.3")]
Note: See TracChangeset
for help on using the changeset viewer.