Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/01/19 13:03:13 (6 years ago)
Author:
msemenki
Message:

#2988: Add Model Symbol Frequency Analyzer and Model's Clusters Frequency Analyzer. Fix Bag's with Keys. Fix changing during mutation for Variables Types in SubModels .

Location:
branches/2988_ModelsOfModels2/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2988_ModelsOfModels2/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/ModelTreeNode.cs

    r16722 r16734  
    2525using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    2626using HeuristicLab.Random;
    27 using System.Collections.Generic;
    28 
     27using System.Linq;
    2928
    3029namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    31   [StorableType("38C37AED-5B9D-488E-8785-D8FF541D9B4C")]
     30  [StorableType("44B25E73-6C4D-404C-93E5-42B7D2807CF7")]
    3231  public sealed class TreeModelTreeNode : SymbolicExpressionTreeTerminalNode {
    3332    public new TreeModel Symbol {
     
    7170      get { return true; }
    7271    }
    73     //public override void ResetLocalParameters(IRandom random, List<ISymbolicExpressionTree> modelSet, List<List<int>> map, List<int> cLusterNumber) {
    74     //  base.ResetLocalParameters(random);
    75     //  if (ClusterNumer < 0) {
    76     //    //Tree = map.NewModelForInizializtion(ClusterNumer, random);
    77     //    var selectedNodelNumber = random.Next(modelSet.Count);
    78     //    ClusterNumer = cLusterNumber[selectedNodelNumber];
    79     //    TreeNumber = selectedNodelNumber;
    80     //    Tree = (ISymbolicExpressionTree)modelSet[selectedNodelNumber].Clone();
    81     //  } else {
    82     //    //New Model For Mutation Adding
    83     //    var selectedNodelNumber = random.Next(map[ClusterNumer].Count);
    84     //    TreeNumber = selectedNodelNumber;
    85     //    Tree = (ISymbolicExpressionTree)modelSet[map[ClusterNumer][selectedNodelNumber]].Clone();
    86     //  }
    87 
    88     //}
    89 
    9072    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
    9173      base.ShakeLocalParameters(random, shakingFactor);
    92       List<ISymbolicExpressionTreeNode> parametricNodes = new List<ISymbolicExpressionTreeNode>();
    93       Tree.Root.ForEachNodePostfix(n => {
    94         if (n.HasLocalParameters) parametricNodes.Add(n);
    95       });
    96       if (parametricNodes.Count > 0) {
     74      var parametricNodes = Tree.IterateNodesPrefix().Where(x => x.HasLocalParameters).ToList();
     75      if (parametricNodes.Any()) {
    9776        var selectedPoint = parametricNodes.SampleRandom(random);
    98         selectedPoint.ShakeLocalParameters(random, shakingFactor);
     77        if (selectedPoint is VariableTreeNode variableTreeNode) {
     78          var symbol = variableTreeNode.Symbol;
     79          variableTreeNode.Weight = NormalDistributedRandom.NextDouble(random, symbol.WeightManipulatorMu, symbol.WeightManipulatorSigma);
     80        } else {
     81          selectedPoint.ShakeLocalParameters(random, shakingFactor);
     82        }
     83
    9984      }
    10085    }
    101 
     86    public void SetLocalParameters(IRandom random, double shakingFactor) {
     87      foreach (var node in Tree.IterateNodesPrefix().Where(x => x.HasLocalParameters)) {
     88        if (node is VariableTreeNode variableTreeNode) {
     89          var symbol = variableTreeNode.Symbol;
     90          variableTreeNode.Weight = NormalDistributedRandom.NextDouble(random, symbol.WeightManipulatorMu, symbol.WeightManipulatorSigma);
     91        } else {
     92          node.ResetLocalParameters(random);
     93        }
     94      }
     95    }
    10296    public override IDeepCloneable Clone(Cloner cloner) {
    10397      return new TreeModelTreeNode(this, cloner);
     
    106100    public override string ToString() {
    107101
    108       string s = "model" +" " +TreeNumber.ToString()+"\n " + new InfixExpressionFormatter().Format(tree);
     102      string s = "model" + " " + TreeNumber.ToString() + "\n " + new InfixExpressionFormatter().Format(tree);
    109103      return s;
    110104    }
  • branches/2988_ModelsOfModels2/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/TreeModel.cs

    r16722 r16734  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
     22using HEAL.Attic;
    2423using HeuristicLab.Common;
    2524using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    26 using HEAL.Attic;
    2725namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    28   [StorableType("F8A6AD96-28D9-4BEC-8392-8B7BA824B085")]
     26  [StorableType("6F628649-7C71-49F3-862A-0BAB4BADF964")]
    2927  public sealed class TreeModel : Symbol {
    3028
     
    3937    [StorableConstructor]
    4038    private TreeModel(StorableConstructorFlag _) : base(_) { }
    41     private TreeModel(TreeModel original, Cloner cloner) : base(original, cloner) {   }
    42     public TreeModel() : base("TreeModel", "Represents a TreeModel.") {    }
     39    private TreeModel(TreeModel original, Cloner cloner) : base(original, cloner) { }
     40    public TreeModel() : base("TreeModel", "Represents a TreeModel.") { }
    4341    public override ISymbolicExpressionTreeNode CreateTreeNode() {
    44       return new TreeModelTreeNode(this); } 
     42      return new TreeModelTreeNode(this);
     43    }
    4544
    4645    public override IDeepCloneable Clone(Cloner cloner) {
Note: See TracChangeset for help on using the changeset viewer.