Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/14/11 16:45:46 (13 years ago)
Author:
abeham
Message:

#1465

  • updated branch with latest version of trunk
Location:
branches/histogram
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/histogram

  • branches/histogram/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.cs

    r6011 r6195  
    2929using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views;
    3030using HeuristicLab.MainForm.WindowsForms;
    31 using HeuristicLab.Problems.DataAnalysis.Symbolic;
    3231
    3332namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
     
    3534    private Dictionary<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode> replacementNodes;
    3635    private Dictionary<ISymbolicExpressionTreeNode, double> nodeImpacts;
     36    private bool updateInProgress = false;
    3737
    3838    public InteractiveSymbolicDataAnalysisSolutionSimplifierView() {
     
    9191        nodeImpacts = CalculateImpactValues(Content.Model.SymbolicExpressionTree);
    9292
    93         // automatically fold all branches with impact = 1
    94         List<ISymbolicExpressionTreeNode> nodeList = Content.Model.SymbolicExpressionTree.Root.GetSubtree(0).IterateNodesPrefix().ToList();
    95         foreach (var parent in nodeList) {
    96           for (int subTreeIndex = 0; subTreeIndex < parent.SubtreesCount; subTreeIndex++) {
    97             var child = parent.GetSubtree(subTreeIndex);
    98             if (!(child.Symbol is Constant) && nodeImpacts[child].IsAlmost(0.0)) {
    99               SwitchNodeWithReplacementNode(parent, subTreeIndex);
     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.SubtreesCount; subTreeIndex++) {
     98              var child = parent.GetSubtree(subTreeIndex);
     99              if (!(child.Symbol is Constant) && nodeImpacts[child].IsAlmost(0.0)) {
     100                SwitchNodeWithReplacementNode(parent, subTreeIndex);
     101              }
    100102            }
    101103          }
    102104        }
     105
    103106        // show only interesting part of solution
    104107        if (tree.Root.SubtreesCount > 1)
     
    131134          // only allow to replace nodes for which a replacement value is known (replacement value for ADF nodes are not available)
    132135          if (subTree == visualTreeNode.SymbolicExpressionTreeNode && replacementNodes.ContainsKey(subTree)) {
    133             double replacementImpact = nodeImpacts.ContainsKey(replacementNodes[subTree]) ? nodeImpacts[replacementNodes[subTree]] : 0.0;
    134             double originalImpact = nodeImpacts.ContainsKey(subTree) ? nodeImpacts[subTree] : 0.0;
    135136            SwitchNodeWithReplacementNode(treeNode, i);
    136137
     
    140141            else
    141142              this.treeChart.Tree = new SymbolicExpressionTree(tree.Root.GetSubtree(0).GetSubtree(0)); // 1st child of RPB
    142             if (!(originalImpact.IsAlmost(0.0) && replacementImpact.IsAlmost(0.0))) {
    143               // update everything after the change if necessary (impact != 0)           
    144               UpdateModel(tree);
    145             } else {
    146               // both impacts are zero, so we only need to repaint the nodes
    147               PaintNodeImpacts();
    148             }
     143
     144            updateInProgress = true;
     145            UpdateModel(tree);
     146            updateInProgress = false;
    149147            return; // break all loops
    150148          }
     
    191189            visualTree.ToolTip += Environment.NewLine + "Replacement value: " + constantReplacementNode.Value;
    192190          }
    193         } 
     191        }
    194192      }
    195193      this.PaintCollapsedNodes();
Note: See TracChangeset for help on using the changeset viewer.