- Timestamp:
- 11/29/12 09:57:15 (12 years ago)
- Location:
- branches/RuntimeOptimizer
- Files:
-
- 1 deleted
- 7 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/RuntimeOptimizer
- Property svn:mergeinfo changed
/branches/SlaveShutdown (added) merged: 8944-8945,8949,8951,8953-8954 /trunk/sources (added) merged: 8946-8948,8950,8952,8957,8960,8962-8970
- Property svn:mergeinfo changed
-
branches/RuntimeOptimizer/HeuristicLab.Problems.DataAnalysis.Symbolic.Views
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
/branches/HeuristicLab.TreeSimplifier/HeuristicLab.Problems.DataAnalysis.Symbolic.Views merged eligible /trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views merged eligible /branches/Algorithms.GradientDescent/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5516-5520 /branches/Benchmarking/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 6917-7005 /branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 4656-4721 /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5471-5808 /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5815-6180 /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 4458-4459,4462,4464 /branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 6284-6795 /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5060 /branches/NET40/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5138-5162 /branches/ParallelEngine/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5175-5192 /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 7568-7810 /branches/QAPAlgorithms/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 6350-6627 /branches/Restructure trunk solution/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 6828 /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 7787-8333 /branches/SlaveShutdown/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 8944-8956 /branches/SuccessProgressAnalysis/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5370-5682 /branches/Trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 6829-6865 /branches/VNS/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5594-5752 /branches/histogram/HeuristicLab.Problems.DataAnalysis.Symbolic.Views 5959-6341
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
branches/RuntimeOptimizer/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4
- Property svn:ignore
-
old new 1 *.user 2 Plugin.cs 1 3 bin 2 4 obj 3 *.user4 HeuristicLabProblemsDataAnalysisSymbolicViewsPlugin.cs5 *.vs10x6 Plugin.cs
-
- Property svn:ignore
-
branches/RuntimeOptimizer/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj
r8600 r8971 114 114 </ItemGroup> 115 115 <ItemGroup> 116 <Compile Include="InteractiveSymbolicExpressionTreeChart.cs"> 117 <SubType>UserControl</SubType> 118 </Compile> 119 <Compile Include="InteractiveSymbolicExpressionTreeChart.Designer.cs"> 120 <DependentUpon>InteractiveSymbolicExpressionTreeChart.cs</DependentUpon> 121 </Compile> 116 122 <Compile Include="MathSymbolicDataAnalysisModelView.cs"> 117 123 <SubType>UserControl</SubType> … … 168 174 <Compile Include="Symbols\VariableView.Designer.cs"> 169 175 <DependentUpon>VariableView.cs</DependentUpon> 176 </Compile> 177 <Compile Include="TreeEditDialogs\SymbolicExpressionTreeNodeChangeValueDialog.cs"> 178 <SubType>Form</SubType> 179 </Compile> 180 <Compile Include="TreeEditDialogs\SymbolicExpressionTreeNodeChangeValueDialog.Designer.cs"> 181 <DependentUpon>SymbolicExpressionTreeNodeChangeValueDialog.cs</DependentUpon> 182 </Compile> 183 <Compile Include="TreeEditDialogs\SymbolicExpressionTreeNodeInsertDialog.cs"> 184 <SubType>Form</SubType> 185 </Compile> 186 <Compile Include="TreeEditDialogs\SymbolicExpressionTreeNodeInsertDialog.Designer.cs"> 187 <DependentUpon>SymbolicExpressionTreeNodeInsertDialog.cs</DependentUpon> 170 188 </Compile> 171 189 <None Include="HeuristicLab.snk" /> … … 313 331 --> 314 332 <PropertyGroup> 315 <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)333 <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir) 316 334 set ProjectDir=$(ProjectDir) 317 335 set SolutionDir=$(SolutionDir) … … 320 338 call PreBuildEvent.cmd 321 339 </PreBuildEvent> 322 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">340 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' "> 323 341 export ProjectDir=$(ProjectDir) 324 342 export SolutionDir=$(SolutionDir) -
branches/RuntimeOptimizer/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.Designer.cs
r8053 r8971 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 2Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 45 45 /// </summary> 46 46 private void InitializeComponent() { 47 this. treeChart = new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.SymbolicExpressionTreeChart();47 this.components = new System.ComponentModel.Container(); 48 48 this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost(); 49 49 this.splitContainer = new System.Windows.Forms.SplitContainer(); … … 52 52 this.btnSimplify = new System.Windows.Forms.Button(); 53 53 this.btnOptimizeConstants = new System.Windows.Forms.Button(); 54 this.treeChart = new HeuristicLab.Problems.DataAnalysis.Symbolic.Views.InteractiveSymbolicExpressionTreeChart(); 54 55 this.grpViewHost = new System.Windows.Forms.GroupBox(); 55 56 ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); … … 61 62 this.grpViewHost.SuspendLayout(); 62 63 this.SuspendLayout(); 63 //64 // treeChart65 //66 this.treeChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)67 | System.Windows.Forms.AnchorStyles.Left)68 | System.Windows.Forms.AnchorStyles.Right)));69 this.treeChart.BackgroundColor = System.Drawing.Color.White;70 this.treeChart.LineColor = System.Drawing.Color.Black;71 this.treeChart.Location = new System.Drawing.Point(6, 16);72 this.treeChart.Name = "treeChart";73 this.treeChart.Size = new System.Drawing.Size(201, 291);74 this.treeChart.Spacing = 5;75 this.treeChart.TabIndex = 0;76 this.treeChart.TextFont = new System.Drawing.Font("Times New Roman", 8F);77 this.treeChart.Tree = null;78 this.treeChart.SymbolicExpressionTreeNodeDoubleClicked += new System.Windows.Forms.MouseEventHandler(this.treeChart_SymbolicExpressionTreeNodeDoubleClicked);79 64 // 80 65 // viewHost … … 113 98 // grpSimplify 114 99 // 100 this.grpSimplify.AutoSize = true; 115 101 this.grpSimplify.Controls.Add(this.flowLayoutPanel); 116 102 this.grpSimplify.Controls.Add(this.treeChart); … … 157 143 this.btnOptimizeConstants.Click += new System.EventHandler(this.btnOptimizeConstants_Click); 158 144 // 145 // treeChart 146 // 147 this.treeChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 148 | System.Windows.Forms.AnchorStyles.Left) 149 | System.Windows.Forms.AnchorStyles.Right))); 150 this.treeChart.BackgroundColor = System.Drawing.Color.White; 151 this.treeChart.LineColor = System.Drawing.Color.Black; 152 this.treeChart.Location = new System.Drawing.Point(6, 16); 153 this.treeChart.Name = "treeChart"; 154 this.treeChart.Size = new System.Drawing.Size(201, 291); 155 this.treeChart.Spacing = 5; 156 this.treeChart.SuspendRepaint = false; 157 this.treeChart.TabIndex = 0; 158 this.treeChart.TextFont = new System.Drawing.Font("Times New Roman", 8F); 159 this.treeChart.Tree = null; 160 this.treeChart.SymbolicExpressionTreeChanged += new System.EventHandler(this.treeChart_SymbolicExpressionTreeChanged); 161 this.treeChart.SymbolicExpressionTreeNodeChanged += new System.EventHandler(this.treeChart_SymbolicExpressionTreeNodeChanged); 162 this.treeChart.SymbolicExpressionTreeNodeDoubleClicked += new System.Windows.Forms.MouseEventHandler(this.treeChart_SymbolicExpressionTreeNodeDoubleClicked); 163 // 159 164 // grpViewHost 160 165 // … … 171 176 // 172 177 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 173 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Inherit;178 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 174 179 this.Controls.Add(this.splitContainer); 180 this.DoubleBuffered = true; 175 181 this.Name = "InteractiveSymbolicDataAnalysisSolutionSimplifierView"; 176 182 this.Size = new System.Drawing.Size(564, 348); 177 183 this.splitContainer.Panel1.ResumeLayout(false); 184 this.splitContainer.Panel1.PerformLayout(); 178 185 this.splitContainer.Panel2.ResumeLayout(false); 179 186 ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit(); … … 188 195 #endregion 189 196 190 private HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.SymbolicExpressionTreeChart treeChart;197 private InteractiveSymbolicExpressionTreeChart treeChart; 191 198 private System.Windows.Forms.SplitContainer splitContainer; 192 199 private HeuristicLab.MainForm.WindowsForms.ViewHost viewHost; -
branches/RuntimeOptimizer/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.cs
r7259 r8971 34 34 private Dictionary<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode> replacementNodes; 35 35 private Dictionary<ISymbolicExpressionTreeNode, double> nodeImpacts; 36 private bool updateInProgress = false; 36 private Dictionary<ISymbolicExpressionTreeNode, double> originalValues; 37 private Dictionary<ISymbolicExpressionTreeNode, string> originalVariableNames; 37 38 38 39 public InteractiveSymbolicDataAnalysisSolutionSimplifierView() { 39 40 InitializeComponent(); 40 this.replacementNodes = new Dictionary<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode>(); 41 this.nodeImpacts = new Dictionary<ISymbolicExpressionTreeNode, double>(); 41 replacementNodes = new Dictionary<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode>(); 42 nodeImpacts = new Dictionary<ISymbolicExpressionTreeNode, double>(); 43 originalValues = new Dictionary<ISymbolicExpressionTreeNode, double>(); 44 originalVariableNames = new Dictionary<ISymbolicExpressionTreeNode, string>(); 45 42 46 this.Caption = "Interactive Solution Simplifier"; 43 47 } … … 50 54 protected override void RegisterContentEvents() { 51 55 base.RegisterContentEvents(); 52 Content.ModelChanged += new EventHandler(Content_ModelChanged);53 Content.ProblemDataChanged += new EventHandler(Content_ProblemDataChanged);56 Content.ModelChanged += Content_Changed; 57 Content.ProblemDataChanged += Content_Changed; 54 58 } 55 59 protected override void DeregisterContentEvents() { 56 60 base.DeregisterContentEvents(); 57 Content.ModelChanged -= new EventHandler(Content_ModelChanged); 58 Content.ProblemDataChanged -= new EventHandler(Content_ProblemDataChanged); 59 } 60 61 private void Content_ModelChanged(object sender, EventArgs e) { 62 OnModelChanged(); 63 } 64 private void Content_ProblemDataChanged(object sender, EventArgs e) { 65 OnProblemDataChanged(); 66 } 67 68 protected virtual void OnModelChanged() { 69 this.CalculateReplacementNodesAndNodeImpacts(); 70 } 71 72 protected virtual void OnProblemDataChanged() { 73 this.CalculateReplacementNodesAndNodeImpacts(); 61 Content.ModelChanged -= Content_Changed; 62 Content.ProblemDataChanged -= Content_Changed; 63 } 64 65 private void Content_Changed(object sender, EventArgs e) { 66 UpdateView(); 74 67 } 75 68 76 69 protected override void OnContentChanged() { 77 70 base.OnContentChanged(); 78 this.CalculateReplacementNodesAndNodeImpacts(); 79 this.viewHost.Content = this.Content; 80 } 81 82 private void CalculateReplacementNodesAndNodeImpacts() { 83 if (Content != null && Content.Model != null && Content.ProblemData != null) { 84 var tree = Content.Model.SymbolicExpressionTree; 85 var replacementValues = CalculateReplacementValues(tree); 86 foreach (var pair in replacementValues) { 87 if (!(pair.Key is ConstantTreeNode)) { 88 replacementNodes[pair.Key] = MakeConstantTreeNode(pair.Value); 89 } 90 } 91 nodeImpacts = CalculateImpactValues(Content.Model.SymbolicExpressionTree); 92 93 if (!updateInProgress) { 94 // automatically fold all branches with impact = 1 95 List<ISymbolicExpressionTreeNode> nodeList = Content.Model.SymbolicExpressionTree.Root.GetSubtree(0).IterateNodesPrefix().ToList(); 96 foreach (var parent in nodeList) { 97 for (int subTreeIndex = 0; subTreeIndex < parent.SubtreeCount; subTreeIndex++) { 98 var child = parent.GetSubtree(subTreeIndex); 99 if (!(child.Symbol is Constant) && nodeImpacts[child].IsAlmost(0.0)) { 100 SwitchNodeWithReplacementNode(parent, subTreeIndex); 101 } 102 } 103 } 104 } 105 106 // show only interesting part of solution 107 if (tree.Root.SubtreeCount > 1) 108 this.treeChart.Tree = new SymbolicExpressionTree(tree.Root); // RPB + ADFs 109 else 110 this.treeChart.Tree = new SymbolicExpressionTree(tree.Root.GetSubtree(0).GetSubtree(0)); // 1st child of RPB 111 this.PaintNodeImpacts(); 112 } 71 UpdateView(); 72 viewHost.Content = this.Content; 73 } 74 75 private void UpdateView() { 76 if (Content == null || Content.Model == null || Content.ProblemData == null) return; 77 var tree = Content.Model.SymbolicExpressionTree; 78 79 var replacementValues = CalculateReplacementValues(tree); 80 foreach (var pair in replacementValues.Where(pair => !(pair.Key is ConstantTreeNode))) { 81 replacementNodes[pair.Key] = MakeConstantTreeNode(pair.Value); 82 } 83 84 nodeImpacts = CalculateImpactValues(tree); 85 86 var model = Content.Model.SymbolicExpressionTree; 87 treeChart.Tree = model.Root.SubtreeCount > 1 ? new SymbolicExpressionTree(model.Root) : new SymbolicExpressionTree(model.Root.GetSubtree(0).GetSubtree(0)); 88 PaintNodeImpacts(); 113 89 } 114 90 … … 117 93 protected abstract void UpdateModel(ISymbolicExpressionTree tree); 118 94 119 private ConstantTreeNode MakeConstantTreeNode(double value) { 120 Constant constant = new Constant(); 121 constant.MinValue = value - 1; 122 constant.MaxValue = value + 1; 123 ConstantTreeNode constantTreeNode = (ConstantTreeNode)constant.CreateTreeNode(); 95 private static ConstantTreeNode MakeConstantTreeNode(double value) { 96 var constant = new Constant { MinValue = value - 1, MaxValue = value + 1 }; 97 var constantTreeNode = (ConstantTreeNode)constant.CreateTreeNode(); 124 98 constantTreeNode.Value = value; 125 99 return constantTreeNode; … … 127 101 128 102 private void treeChart_SymbolicExpressionTreeNodeDoubleClicked(object sender, MouseEventArgs e) { 129 VisualSymbolicExpressionTreeNode visualTreeNode = (VisualSymbolicExpressionTreeNode)sender; 103 if (!treeChart.TreeValid) return; 104 var visualNode = (VisualSymbolicExpressionTreeNode)sender; 105 var symbExprTreeNode = (SymbolicExpressionTreeNode)visualNode.SymbolicExpressionTreeNode; 106 if (symbExprTreeNode == null) return; 130 107 var tree = Content.Model.SymbolicExpressionTree; 131 foreach (SymbolicExpressionTreeNode treeNode in tree.IterateNodesPostfix()) { 132 for (int i = 0; i < treeNode.SubtreeCount; i++) { 133 ISymbolicExpressionTreeNode subTree = treeNode.GetSubtree(i); 134 // only allow to replace nodes for which a replacement value is known (replacement value for ADF nodes are not available) 135 if (subTree == visualTreeNode.SymbolicExpressionTreeNode && replacementNodes.ContainsKey(subTree)) { 136 SwitchNodeWithReplacementNode(treeNode, i); 137 138 // show only interesting part of solution 139 if (tree.Root.SubtreeCount > 1) 140 this.treeChart.Tree = new SymbolicExpressionTree(tree.Root); // RPB + ADFs 141 else 142 this.treeChart.Tree = new SymbolicExpressionTree(tree.Root.GetSubtree(0).GetSubtree(0)); // 1st child of RPB 143 144 updateInProgress = true; 145 UpdateModel(tree); 146 updateInProgress = false; 147 return; // break all loops 108 109 bool update = false; 110 // check if the node value/weight has been altered 111 // if so, the first double click will return the node to its original value/weight/variable name 112 // the next double click will replace the ConstantNode with the original SymbolicExpressionTreeNode 113 if (originalVariableNames.ContainsKey(symbExprTreeNode)) { 114 var variable = (VariableTreeNode)symbExprTreeNode; 115 variable.VariableName = originalVariableNames[symbExprTreeNode]; 116 originalVariableNames.Remove(variable); 117 update = true; 118 } else if (originalValues.ContainsKey(symbExprTreeNode)) { 119 double value = originalValues[symbExprTreeNode]; 120 if (symbExprTreeNode.Symbol is Constant) { 121 var constantTreeNode = (ConstantTreeNode)symbExprTreeNode; 122 constantTreeNode.Value = value; 123 } else if (symbExprTreeNode.Symbol is Variable) { 124 var variable = (VariableTreeNode)symbExprTreeNode; 125 variable.Weight = value; 126 } 127 originalValues.Remove(symbExprTreeNode); 128 update = true; 129 } else if (replacementNodes.ContainsKey(symbExprTreeNode)) { 130 foreach (var treeNode in tree.IterateNodesPostfix()) { 131 for (int i = 0; i < treeNode.SubtreeCount; i++) { 132 var subtree = treeNode.GetSubtree(i); 133 if (subtree == symbExprTreeNode) { 134 SwitchNodeWithReplacementNode(treeNode, i); 135 // show only interesting part of solution 136 treeChart.Tree = tree.Root.SubtreeCount > 1 137 ? new SymbolicExpressionTree(tree.Root) 138 : new SymbolicExpressionTree(tree.Root.GetSubtree(0).GetSubtree(0)); 139 update = true; 140 } 148 141 } 149 } 142 if (update) break; 143 } 144 } 145 if (update) UpdateModel(tree); 146 } 147 148 private void treeChart_SymbolicExpressionTreeChanged(object sender, EventArgs e) { 149 UpdateModel(Content.Model.SymbolicExpressionTree); 150 UpdateView(); 151 } 152 153 private void treeChart_SymbolicExpressionTreeNodeChanged(object sender, EventArgs e) { 154 var dialog = (ValueChangeDialog)sender; 155 bool flag1 = false, flag2 = false; 156 var node = dialog.Content; 157 158 if (node is VariableTreeNode) { 159 var variable = (VariableTreeNode)node; 160 var weight = double.Parse(dialog.newValueTextBox.Text); 161 var name = (string)dialog.variableNamesCombo.SelectedItem; 162 if (!variable.Weight.Equals(weight)) { 163 flag1 = true; 164 originalValues[variable] = variable.Weight; 165 variable.Weight = weight; 166 } 167 if (!variable.VariableName.Equals(name)) { 168 flag2 = true; 169 originalVariableNames[variable] = variable.VariableName; 170 variable.VariableName = name; 171 } 172 } else if (node is ConstantTreeNode) { 173 var constant = (ConstantTreeNode)node; 174 var value = double.Parse(dialog.newValueTextBox.Text); 175 if (!constant.Value.Equals(value)) { 176 flag1 = true; 177 originalValues[constant] = constant.Value; 178 constant.Value = value; 179 } 180 } 181 if (flag1 || flag2) { 182 UpdateView(); 150 183 } 151 184 } … … 168 201 double min = impacts.Min(); 169 202 foreach (ISymbolicExpressionTreeNode treeNode in Content.Model.SymbolicExpressionTree.IterateNodesPostfix()) { 203 VisualSymbolicExpressionTreeNode visualTree = treeChart.GetVisualSymbolicExpressionTreeNode(treeNode); 204 bool flag1 = replacementNodes.ContainsKey(treeNode); 205 bool flag2 = originalValues.ContainsKey(treeNode); 206 bool flag3 = treeNode is ConstantTreeNode; 207 208 if (flag2) // constant or variable node was changed 209 visualTree.ToolTip += Environment.NewLine + "Original value: " + originalValues[treeNode]; 210 else if (flag1 && flag3) // symbol node was folded to a constant 211 visualTree.ToolTip += Environment.NewLine + "Original node: " + replacementNodes[treeNode]; 212 170 213 if (!(treeNode is ConstantTreeNode) && nodeImpacts.ContainsKey(treeNode)) { 171 214 double impact = nodeImpacts[treeNode]; 172 VisualSymbolicExpressionTreeNode visualTree = treeChart.GetVisualSymbolicExpressionTreeNode(treeNode);173 215 174 216 // impact = 0 if no change … … 197 239 private void PaintCollapsedNodes() { 198 240 foreach (ISymbolicExpressionTreeNode treeNode in Content.Model.SymbolicExpressionTree.IterateNodesPostfix()) { 199 if (treeNode is ConstantTreeNode && replacementNodes.ContainsKey(treeNode))200 this.treeChart.GetVisualSymbolicExpressionTreeNode(treeNode).LineColor = Color.DarkOrange;201 else{202 VisualSymbolicExpressionTreeNode visNode = treeChart.GetVisualSymbolicExpressionTreeNode(treeNode);203 if (visNode != null)204 visNode.LineColor = Color.Black;241 bool flag1 = replacementNodes.ContainsKey(treeNode); 242 bool flag2 = originalValues.ContainsKey(treeNode); 243 if (flag1 && treeNode is ConstantTreeNode) { 244 this.treeChart.GetVisualSymbolicExpressionTreeNode(treeNode).LineColor = flag2 ? Color.DarkViolet : Color.DarkOrange; 245 } else if (flag2) { 246 this.treeChart.GetVisualSymbolicExpressionTreeNode(treeNode).LineColor = Color.DodgerBlue; 205 247 } 206 248 } … … 208 250 209 251 private void btnSimplify_Click(object sender, EventArgs e) { 210 SymbolicDataAnalysisExpressionTreeSimplifier simplifier = new SymbolicDataAnalysisExpressionTreeSimplifier();252 var simplifier = new SymbolicDataAnalysisExpressionTreeSimplifier(); 211 253 var simplifiedExpressionTree = simplifier.Simplify(Content.Model.SymbolicExpressionTree); 212 254 UpdateModel(simplifiedExpressionTree); -
branches/RuntimeOptimizer/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Properties
- Property svn:ignore
--- +++
- Property svn:ignore
Note: See TracChangeset
for help on using the changeset viewer.