Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/26/14 17:14:14 (10 years ago)
Author:
bburlacu
Message:

#1772: Found bug in GenealogyGraph creation, attempted fix by injecting vertex guid's in the individual scopes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionBeforeCrossoverOperator.cs

    r10654 r10674  
    1 using System.Linq;
     1#region License Information
     2/* HeuristicLab
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     4 *
     5 * This file is part of HeuristicLab.
     6 *
     7 * HeuristicLab is free software: you can redistribute it and/or modify
     8 * it under the terms of the GNU General Public License as published by
     9 * the Free Software Foundation, either version 3 of the License, or
     10 * (at your option) any later version.
     11 *
     12 * HeuristicLab is distributed in the hope that it will be useful,
     13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 * GNU General Public License for more details.
     16 *
     17 * You should have received a copy of the GNU General Public License
     18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
     19 */
     20#endregion
     21
     22using System;
     23using System.Linq;
    224using HeuristicLab.Core;
    325using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
     
    931      var result = base.Apply(); // the child will be added to the graph before the crossover
    1032      var parents = ParentsParameter.ActualValue.ToList();
    11       var childVertex = GenealogyGraph[parents[0]].Last(); // use the parent since it is actually the child before crossover (and the ChildParameter doesn't have a value yet)
    12       //      var parentVertices = ExecutionContext.Scope.SubScopes.Select(s => CurrentGeneration[int.Parse(s.Name)]).ToList();
     33      var childVertex = (IGenealogyGraphNode<ISymbolicExpressionTree>)GenealogyGraph[parents[0]].Last(); // use the parent since it is actually the child before crossover (and the ChildParameter doesn't have a value yet)
    1334
    14       // we add the breadth list of nodes of each parent as the data element of the arc from the parent to the child
    1535      for (int i = 0; i < parents.Count; ++i) {
    1636        var nodes = parents[i].IterateNodesPrefix().ToList();
    17         var arc = (IGenealogyGraphArc)childVertex.InArcs[i];
     37        var arc = childVertex.InArcs[i];
    1838        arc.Data = nodes;
     39      }
     40      var parentVertices = childVertex.InArcs.Select(x => (IGenealogyGraphNode<ISymbolicExpressionTree>)x.Source).ToList();
     41      if (parents[0].Length != parentVertices[0].Content.Length || parents[1].Length != parentVertices[1].Content.Length) {
     42        throw new Exception("Inconsistency detected in GenealogyGraph.");
    1943      }
    2044
Note: See TracChangeset for help on using the changeset viewer.