Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/18/11 14:50:19 (13 years ago)
Author:
mkommend
Message:

#1418: Fixed compilation errors in Problems.ArtificalAnt.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/AntInterpreter.cs

    r5473 r5517  
    2525using HeuristicLab.Data;
    2626using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols;
    2827using HeuristicLab.Problems.ArtificialAnt.Symbols;
    2928
     
    6564    private int currentAntLocationColumn;
    6665    private int nFoodItems;
    67     private Stack<SymbolicExpressionTreeNode> nodeStack = new Stack<SymbolicExpressionTreeNode>();
     66    private Stack<ISymbolicExpressionTreeNode> nodeStack = new Stack<ISymbolicExpressionTreeNode>();
    6867
    6968    private void CountFoodItems() {
     
    9493      // expression evaluated completly => start at root again
    9594      if (nodeStack.Count == 0) {
    96         nodeStack.Push(Expression.Root.SubTrees[0].SubTrees[0]);
     95        nodeStack.Push(Expression.Root.GetSubTree(0).GetSubTree(0));
    9796      }
    9897
     
    115114        NextField(out nextAntLocationRow, out nextAntLocationColumn);
    116115        if (World[nextAntLocationRow, nextAntLocationColumn]) {
    117           nodeStack.Push(currentNode.SubTrees[0]);
     116          nodeStack.Push(currentNode.GetSubTree(0));
    118117        } else {
    119           nodeStack.Push(currentNode.SubTrees[1]);
     118          nodeStack.Push(currentNode.GetSubTree(1));
    120119        }
    121120      } else if (currentNode.Symbol is Prog2) {
    122         nodeStack.Push(currentNode.SubTrees[1]);
    123         nodeStack.Push(currentNode.SubTrees[0]);
     121        nodeStack.Push(currentNode.GetSubTree(1));
     122        nodeStack.Push(currentNode.GetSubTree(0));
    124123        return;
    125124      } else if (currentNode.Symbol is Prog3) {
    126         nodeStack.Push(currentNode.SubTrees[2]);
    127         nodeStack.Push(currentNode.SubTrees[1]);
    128         nodeStack.Push(currentNode.SubTrees[0]);
     125        nodeStack.Push(currentNode.GetSubTree(2));
     126        nodeStack.Push(currentNode.GetSubTree(1));
     127        nodeStack.Push(currentNode.GetSubTree(0));
    129128        return;
    130129      } else if (currentNode.Symbol is InvokeFunction) {
     
    132131        var functionDefinition = (SymbolicExpressionTreeNode)FindMatchingFunction(invokeNode.Symbol.FunctionName).Clone();
    133132        var argumentCutPoints = (from node in functionDefinition.IterateNodesPrefix()
    134                                  where node.SubTrees.Count > 0
     133                                 where node.SubTrees.Count() > 0
    135134                                 from subtree in node.SubTrees
    136135                                 where subtree is ArgumentTreeNode
    137                                  select new { Parent = node, Argument = subtree.Symbol as Argument, ChildIndex = node.SubTrees.IndexOf(subtree) }).ToList();
     136                                 select new { Parent = node, Argument = subtree.Symbol as Argument, ChildIndex = node.IndexOfSubTree(subtree) }).ToList();
    138137        foreach (var cutPoint in argumentCutPoints) {
    139138          cutPoint.Parent.RemoveSubTree(cutPoint.ChildIndex);
    140           cutPoint.Parent.InsertSubTree(cutPoint.ChildIndex, (SymbolicExpressionTreeNode)invokeNode.SubTrees[cutPoint.Argument.ArgumentIndex].Clone());
     139          cutPoint.Parent.InsertSubTree(cutPoint.ChildIndex, (SymbolicExpressionTreeNode)invokeNode.GetSubTree(cutPoint.Argument.ArgumentIndex).Clone());
    141140        }
    142         nodeStack.Push(functionDefinition.SubTrees[0]);
     141        nodeStack.Push(functionDefinition.GetSubTree(0));
    143142      } else {
    144143        throw new InvalidOperationException(currentNode.Symbol.ToString());
Note: See TracChangeset for help on using the changeset viewer.