Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/04/19 14:33:12 (5 years ago)
Author:
msemenki
Message:

#2988: ADD:

  1. new type of mutation that respect node type and do not change trigonometric node to "add" node;
  2. variation of previous mutation type that do not change type of terminal node;
  3. some interface adjusting for comfort work with algorithm;
  4. second variant of map, that is not "island" map but provide "net" map.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMMutators.cs

    r16734 r16760  
    7171
    7272    protected override void Manipulate(IRandom random, ISymbolicExpressionTree symbolicExpressionTree) {
    73       //EMMMapTreeModel map= (EMMMapTreeModel)ExecutionContext.Scope.Variables["TreeModelMap"].Value;
    7473      EMMMutatorsPart(random, symbolicExpressionTree, ModelSet, ClusterNumber, Map);
    7574    }
     
    121120
    122121        var newNode = newSymbol.CreateTreeNode();
    123         if (newNode.HasLocalParameters)
    124           if (newNode is TreeModelTreeNode treeNode) {
    125             int p = random.Next(map.Count);
    126             if (child is TreeModelTreeNode chNode) // in real life never bacame true. It need some cheking
    127             { p = chNode.ClusterNumer; }
    128             treeNode.TreeNumber = map[p].SampleRandom(random).Value;
    129             treeNode.Tree = (ISymbolicExpressionTree)modelSet[treeNode.TreeNumber].Clone();
    130             treeNode.SetLocalParameters(random, 0.5);
    131           } else
    132             newNode.ResetLocalParameters(random);
     122
     123        if (newNode is TreeModelTreeNode treeNode) {
     124          int p = random.Next(map.Count);
     125          if (child is TreeModelTreeNode chNode) { p = chNode.ClusterNumer; }
     126          treeNode.TreeNumber = map[p].SampleRandom(random).Value;
     127          treeNode.Tree = (ISymbolicExpressionTree)modelSet[treeNode.TreeNumber].Clone();
     128          treeNode.ClusterNumer = p;
     129          treeNode.SetLocalParameters(random, 0.5);
     130        } else if (newNode.HasLocalParameters)
     131          newNode.ResetLocalParameters(random);
    133132        foreach (var subtree in child.Subtrees)
    134133          newNode.AddSubtree(subtree);
Note: See TracChangeset for help on using the changeset viewer.