Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/16/11 19:29:57 (13 years ago)
Author:
gkronber
Message:

#1418 fixed evaluator call from validation analyzers, fixed bugs in interactive simplifier view and added apply linear scaling flag to analyzers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.cs

    r5717 r5722  
    3333namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
    3434  public abstract partial class InteractiveSymbolicDataAnalysisSolutionSimplifierView : AsynchronousContentView {
    35     private ISymbolicExpressionTree simplifiedExpressionTree;
    3635    private Dictionary<ISymbolicExpressionTreeNode, ConstantTreeNode> replacementNodes;
    3736    private Dictionary<ISymbolicExpressionTreeNode, double> nodeImpacts;
     
    4140      this.replacementNodes = new Dictionary<ISymbolicExpressionTreeNode, ConstantTreeNode>();
    4241      this.nodeImpacts = new Dictionary<ISymbolicExpressionTreeNode, double>();
    43       this.simplifiedExpressionTree = null;
    4442      this.Caption = "Interactive Solution Simplifier";
    4543    }
     
    8583      replacementNodes.Clear();
    8684      if (Content != null && Content.Model != null && Content.ProblemData != null) {
    87         SymbolicDataAnalysisExpressionTreeSimplifier simplifier = new SymbolicDataAnalysisExpressionTreeSimplifier();
    88         simplifiedExpressionTree = simplifier.Simplify(Content.Model.SymbolicExpressionTree);
    89 
    90         var replacementValues = CalculateReplacementValues(simplifiedExpressionTree);
     85        var tree = Content.Model.SymbolicExpressionTree;
     86        var replacementValues = CalculateReplacementValues(tree);
    9187        foreach (var pair in replacementValues) {
    9288          replacementNodes.Add(pair.Key, MakeConstantTreeNode(pair.Value));
    9389        }
    94         nodeImpacts = CalculateImpactValues(simplifiedExpressionTree);
     90        nodeImpacts = CalculateImpactValues(Content.Model.SymbolicExpressionTree);
    9591
    9692        // automatically fold all branches with impact = 1
    97         List<ISymbolicExpressionTreeNode> nodeList = simplifiedExpressionTree.Root.GetSubTree(0).IterateNodesPrefix().ToList();
     93        List<ISymbolicExpressionTreeNode> nodeList = Content.Model.SymbolicExpressionTree.Root.GetSubTree(0).IterateNodesPrefix().ToList();
    9894        foreach (var parent in nodeList) {
    9995          for (int subTreeIndex = 0; subTreeIndex < parent.SubTrees.Count(); subTreeIndex++) {
     
    105101        }
    106102        // show only interesting part of solution
    107         this.treeChart.Tree = new SymbolicExpressionTree(simplifiedExpressionTree.Root.GetSubTree(0).GetSubTree(0));
     103        this.treeChart.Tree = new SymbolicExpressionTree(tree.Root.GetSubTree(0).GetSubTree(0));
    108104        this.PaintNodeImpacts();
    109105      }
     
    125121    private void treeChart_SymbolicExpressionTreeNodeDoubleClicked(object sender, MouseEventArgs e) {
    126122      VisualSymbolicExpressionTreeNode visualTreeNode = (VisualSymbolicExpressionTreeNode)sender;
    127       foreach (SymbolicExpressionTreeNode treeNode in simplifiedExpressionTree.IterateNodesPostfix()) {
     123      var tree = Content.Model.SymbolicExpressionTree;
     124      foreach (SymbolicExpressionTreeNode treeNode in tree.IterateNodesPostfix()) {
    128125        for (int i = 0; i < treeNode.SubTrees.Count(); i++) {
    129126          ISymbolicExpressionTreeNode subTree = treeNode.GetSubTree(i);
     
    135132
    136133      // show only interesting part of solution
    137       this.treeChart.Tree = new SymbolicExpressionTree(simplifiedExpressionTree.Root.GetSubTree(0).GetSubTree(0));
     134      this.treeChart.Tree = new SymbolicExpressionTree(tree.Root.GetSubTree(0).GetSubTree(0));
    138135
    139       SymbolicExpressionTree tree = (SymbolicExpressionTree)simplifiedExpressionTree.Clone();
    140136      UpdateModel(tree);
    141137      this.PaintNodeImpacts();
     
    157153      double max = impacts.Max();
    158154      double min = impacts.Min();
    159       foreach (ISymbolicExpressionTreeNode treeNode in simplifiedExpressionTree.IterateNodesPostfix()) {
     155      foreach (ISymbolicExpressionTreeNode treeNode in Content.Model.SymbolicExpressionTree.IterateNodesPostfix()) {
    160156        if (!(treeNode is ConstantTreeNode) && nodeImpacts.ContainsKey(treeNode)) {
    161157          double impact = this.nodeImpacts[treeNode];
    162158          double replacementValue = this.replacementNodes[treeNode].Value;
    163159          VisualSymbolicExpressionTreeNode visualTree = treeChart.GetVisualSymbolicExpressionTreeNode(treeNode);
    164          
     160
    165161          // impact = 0 if no change
    166162          // impact < 0 if new solution is better
     
    180176
    181177    private void PaintCollapsedNodes() {
    182       foreach (ISymbolicExpressionTreeNode treeNode in simplifiedExpressionTree.IterateNodesPostfix()) {
     178      foreach (ISymbolicExpressionTreeNode treeNode in Content.Model.SymbolicExpressionTree.IterateNodesPostfix()) {
    183179        if (treeNode is ConstantTreeNode && replacementNodes.ContainsValue((ConstantTreeNode)treeNode))
    184180          this.treeChart.GetVisualSymbolicExpressionTreeNode(treeNode).LineColor = Color.DarkOrange;
     
    192188
    193189    private void btnSimplify_Click(object sender, EventArgs e) {
    194       this.CalculateReplacementNodesAndNodeImpacts();
     190      SymbolicDataAnalysisExpressionTreeSimplifier simplifier = new SymbolicDataAnalysisExpressionTreeSimplifier();
     191      var simplifiedExpressionTree = simplifier.Simplify(Content.Model.SymbolicExpressionTree);
     192      UpdateModel(simplifiedExpressionTree);
    195193    }
    196194  }
Note: See TracChangeset for help on using the changeset viewer.