Index: /trunk/sources/HeuristicLab.GP.SantaFe/AntInterpreter.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/AntInterpreter.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/AntInterpreter.cs	(revision 641)
@@ -0,0 +1,160 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Core;
+using System.Xml;
+using System.Diagnostics;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  internal class AntInterpreter {
+    private const int N_FOOD_ITEMS = 89;
+    private const int WORLD_WIDTH = 32;
+    private const int WORLD_HEIGHT = 32;
+    private const int FOOD = 1;
+    private const int EMPTY = 0;
+    private int[] SANTA_FE_TRAIL = new int[] {
+      0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 
+      0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 
+      0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 
+      0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    };
+
+    private int[] trail;
+
+    public int ElapsedTime { get; set; }
+    public int MaxTimeSteps { get; set; }
+    public int FoodEaten { get; set; }
+    private int currentDirection;
+    private int currentLocation;
+
+    public AntInterpreter() {
+      currentLocation = 0;
+      currentDirection = 0;
+      FoodEaten = 0;
+      trail = new int[WORLD_HEIGHT * WORLD_WIDTH];
+      Array.Copy(SANTA_FE_TRAIL, trail, SANTA_FE_TRAIL.Length);
+    }
+
+    internal void Run(IFunctionTree tree) {
+      while(FoodEaten < N_FOOD_ITEMS && ElapsedTime < MaxTimeSteps) {
+        Step(tree);
+      }
+    }
+
+    internal void Step(IFunctionTree tree) {
+      int symbol = SymbolTable.MapFunction(tree.Function);
+      switch(symbol) {
+        case SymbolTable.LEFT:
+          if(ElapsedTime >= MaxTimeSteps || FoodEaten >= N_FOOD_ITEMS) return;
+          currentDirection = (currentDirection + 3) % 4;
+          ElapsedTime++;
+          return;
+        case SymbolTable.RIGHT:
+          if(ElapsedTime >= MaxTimeSteps || FoodEaten >= N_FOOD_ITEMS) return;
+          currentDirection = (currentDirection + 1) % 4;
+          ElapsedTime++;
+          return;
+        case SymbolTable.MOVE:
+          if(ElapsedTime >= MaxTimeSteps || FoodEaten >= N_FOOD_ITEMS) return;
+          currentLocation = NextField();
+          FoodEaten += trail[currentLocation];
+          trail[currentLocation] = EMPTY;
+          ElapsedTime++;
+          return;
+        case SymbolTable.IF_FOOD_AHEAD:
+            if(trail[NextField()] == FOOD) {
+              Step(tree.SubTrees[0]);
+            } else {
+              Step(tree.SubTrees[1]);
+            }
+          return;
+        case SymbolTable.PROG2:
+          Step(tree.SubTrees[0]);
+          Step(tree.SubTrees[1]);
+          return;
+        case SymbolTable.PROG3:
+          Step(tree.SubTrees[0]);
+          Step(tree.SubTrees[1]);
+          Step(tree.SubTrees[2]);
+          return;
+        case SymbolTable.UNKNOWN:
+          throw new InvalidOperationException(tree.Function.ToString());
+      }
+    }
+
+    private int NextField() {
+      int currentLocationX = currentLocation % WORLD_WIDTH;
+      int currentLocationY = currentLocation / WORLD_HEIGHT;
+
+      switch(currentDirection) {
+        case 0:
+          currentLocationX = (currentLocationX + 1) % WORLD_WIDTH; // EAST
+          break;
+        case 1:
+          currentLocationY = (currentLocationY + 1) % WORLD_HEIGHT; // SOUTH
+          break;
+        case 2:
+          currentLocationX = (currentLocationX + WORLD_WIDTH - 1) % WORLD_WIDTH; // WEST
+          break;
+        case 3:
+          currentLocationY = (currentLocationY + WORLD_HEIGHT - 1) % WORLD_HEIGHT; // NORTH
+          break;
+        default:
+          throw new InvalidOperationException();
+      }
+      return currentLocationY * WORLD_WIDTH + currentLocationX;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Evaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Evaluator.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Evaluator.cs	(revision 641)
@@ -0,0 +1,49 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Functions;
+using HeuristicLab.DataAnalysis;
+
+namespace HeuristicLab.GP.SantaFe {
+  public class Evaluator : OperatorBase {
+    public Evaluator()
+      : base() {
+      AddVariableInfo(new VariableInfo("FunctionTree", "The function tree representing the ant", typeof(IFunctionTree), VariableKind.In));
+      AddVariableInfo(new VariableInfo("FoodEaten", "Number of food items that the ant found", typeof(DoubleData), VariableKind.New | VariableKind.Out));
+    }
+
+    public override IOperation Apply(IScope scope) {
+      IFunctionTree tree = GetVariableValue<IFunctionTree>("FunctionTree", scope, false);
+      AntInterpreter interpreter = new AntInterpreter();
+      interpreter.MaxTimeSteps = 600;
+      interpreter.Run(tree);
+
+      scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("FoodEaten"), new DoubleData(interpreter.FoodEaten)));
+      return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/FunctionLibraryInjector.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/FunctionLibraryInjector.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/FunctionLibraryInjector.cs	(revision 641)
@@ -0,0 +1,102 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Constraints;
+using HeuristicLab.StructureIdentification;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public class FunctionLibraryInjector : OperatorBase {
+    private const string OPERATORLIBRARY = "FunctionLibrary";
+
+    private GPOperatorLibrary operatorLibrary;
+
+    public override string Description {
+      get { return @"Injects a function library for the ant problem."; }
+    }
+
+    public FunctionLibraryInjector()
+      : base() {
+      AddVariableInfo(new VariableInfo(OPERATORLIBRARY, "Preconfigured default operator library", typeof(GPOperatorLibrary), VariableKind.New));
+    }
+
+    public override IOperation Apply(IScope scope) {
+      InitDefaultOperatorLibrary();
+      scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName(OPERATORLIBRARY), operatorLibrary));
+      return null;
+    }
+
+    private void InitDefaultOperatorLibrary() {
+      IfFoodAhead ifFoodAhead = new IfFoodAhead();
+      Prog2 prog2 = new Prog2();
+      Prog3 prog3 = new Prog3();
+      Move move = new Move();
+      Left left = new Left();
+      Right right = new Right();
+
+      IFunction[] allFunctions = new IFunction[] {
+        ifFoodAhead,
+        prog2,
+        prog3,
+        move,
+        left,
+        right
+      };
+
+      SetAllowedSubOperators(ifFoodAhead, allFunctions);
+      SetAllowedSubOperators(prog2, allFunctions);
+      SetAllowedSubOperators(prog3, allFunctions);
+
+      operatorLibrary = new GPOperatorLibrary();
+      operatorLibrary.GPOperatorGroup.AddOperator(ifFoodAhead);
+      operatorLibrary.GPOperatorGroup.AddOperator(prog2);
+      operatorLibrary.GPOperatorGroup.AddOperator(prog3);
+      operatorLibrary.GPOperatorGroup.AddOperator(move);
+      operatorLibrary.GPOperatorGroup.AddOperator(left);
+      operatorLibrary.GPOperatorGroup.AddOperator(right);
+    }
+
+    private void SetAllowedSubOperators(HeuristicLab.Functions.IFunction f, HeuristicLab.Functions.IFunction[] gs) {
+      foreach(IConstraint c in f.Constraints) {
+        if(c is SubOperatorTypeConstraint) {
+          SubOperatorTypeConstraint typeConstraint = c as SubOperatorTypeConstraint;
+          typeConstraint.Clear();
+          foreach(HeuristicLab.Functions.IFunction g in gs) {
+            typeConstraint.AddOperator(g);
+          }
+        } else if(c is AllSubOperatorsTypeConstraint) {
+          AllSubOperatorsTypeConstraint typeConstraint = c as AllSubOperatorsTypeConstraint;
+          typeConstraint.Clear();
+          foreach(HeuristicLab.Functions.IFunction g in gs) {
+            typeConstraint.AddOperator(g);
+          }
+        }
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/HeuristicLab.GP.SantaFe.csproj
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/HeuristicLab.GP.SantaFe.csproj	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/HeuristicLab.GP.SantaFe.csproj	(revision 641)
@@ -0,0 +1,129 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.GP.SantaFe</RootNamespace>
+    <AssemblyName>HeuristicLab.GP.SantaFe-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AntInterpreter.cs" />
+    <Compile Include="FunctionLibraryInjector.cs" />
+    <Compile Include="Prog3.cs" />
+    <Compile Include="Prog2.cs" />
+    <Compile Include="IfFoodAhead.cs" />
+    <Compile Include="Right.cs" />
+    <Compile Include="Left.cs" />
+    <Compile Include="Move.cs" />
+    <Compile Include="HeuristicLabGPSantaFePlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Evaluator.cs" />
+    <Compile Include="SymbolTable.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Constraints\HeuristicLab.Constraints.csproj">
+      <Project>{FCD62C6F-4793-4593-AE9A-0BDCA256EE99}</Project>
+      <Name>HeuristicLab.Constraints</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Core\HeuristicLab.Core.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.DataAnalysis\HeuristicLab.DataAnalysis.csproj">
+      <Project>{7DD3A97A-56E9-462F-90E2-A351FE7AF5C2}</Project>
+      <Name>HeuristicLab.DataAnalysis</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Data\HeuristicLab.Data.csproj">
+      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
+      <Name>HeuristicLab.Data</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Functions\HeuristicLab.Functions.csproj">
+      <Project>{B95CA6E2-34BC-4430-994D-BD6E99375319}</Project>
+      <Name>HeuristicLab.Functions</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Random\HeuristicLab.Random.csproj">
+      <Project>{47019A74-F7F7-482E-83AA-D3F4F777E879}</Project>
+      <Name>HeuristicLab.Random</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.StructureIdentification\HeuristicLab.StructureIdentification.csproj">
+      <Project>{5948F299-0A5E-43B9-8F17-2D15298EEC34}</Project>
+      <Name>HeuristicLab.StructureIdentification</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>cmd /c ""$(SolutionDir)PreBuildEvent.cmd" "$(ProjectDir).""</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.GP.SantaFe/HeuristicLabGPSantaFePlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/HeuristicLabGPSantaFePlugin.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/HeuristicLabGPSantaFePlugin.cs	(revision 641)
@@ -0,0 +1,36 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.GP.SantaFe {
+  [ClassInfo(Name = "HeuristicLab.GP.SantaFe-3.2")]
+  [PluginFile(Filename = "HeuristicLab.GP.SantaFe-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
+  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  public class HeuristicLabGPSantaFePlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/IfFoodAhead.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/IfFoodAhead.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/IfFoodAhead.cs	(revision 641)
@@ -0,0 +1,47 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Constraints;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Random;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public sealed class IfFoodAhead : FunctionBase {
+
+    public override string Description {
+      get { return ""; }
+    }
+
+    public IfFoodAhead()
+      : base() {
+      AddConstraint(new NumberOfSubOperatorsConstraint(2, 2));
+      AddConstraint(new SubOperatorTypeConstraint(0));
+      AddConstraint(new SubOperatorTypeConstraint(1));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Left.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Left.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Left.cs	(revision 641)
@@ -0,0 +1,45 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Constraints;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Random;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public sealed class Left : FunctionBase {
+
+    public override string Description {
+      get { return ""; }
+    }
+
+    public Left()
+      : base() {
+      AddConstraint(new NumberOfSubOperatorsConstraint(0, 0));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Move.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Move.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Move.cs	(revision 641)
@@ -0,0 +1,45 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Constraints;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Random;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public sealed class Move : FunctionBase {
+
+    public override string Description {
+      get { return ""; }
+    }
+
+    public Move()
+      : base() {
+      AddConstraint(new NumberOfSubOperatorsConstraint(0, 0));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Prog2.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Prog2.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Prog2.cs	(revision 641)
@@ -0,0 +1,47 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Constraints;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Random;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public sealed class Prog2 : FunctionBase {
+
+    public override string Description {
+      get { return ""; }
+    }
+
+    public Prog2()
+      : base() {
+      AddConstraint(new NumberOfSubOperatorsConstraint(2, 2));
+      AddConstraint(new SubOperatorTypeConstraint(0));
+      AddConstraint(new SubOperatorTypeConstraint(1));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Prog3.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Prog3.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Prog3.cs	(revision 641)
@@ -0,0 +1,48 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Constraints;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Random;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public sealed class Prog3 : FunctionBase {
+
+    public override string Description {
+      get { return ""; }
+    }
+
+    public Prog3()
+      : base() {
+      AddConstraint(new NumberOfSubOperatorsConstraint(3, 3)); 
+      AddConstraint(new SubOperatorTypeConstraint(0));
+      AddConstraint(new SubOperatorTypeConstraint(1));
+      AddConstraint(new SubOperatorTypeConstraint(2));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Properties/AssemblyInfo.frame	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Properties/AssemblyInfo.frame	(revision 641)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.GP.SantaFe")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("863021a4-3cde-48be-8af6-dac1077f5fb5")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.GP.SantaFe/Right.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/Right.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/Right.cs	(revision 641)
@@ -0,0 +1,44 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Constraints;
+using HeuristicLab.DataAnalysis;
+using HeuristicLab.Random;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  public sealed class Right : FunctionBase {
+    public override string Description {
+      get { return ""; }
+    }
+
+    public Right()
+      : base() {
+      AddConstraint(new NumberOfSubOperatorsConstraint(0, 0));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.SantaFe/SymbolTable.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.SantaFe/SymbolTable.cs	(revision 641)
+++ /trunk/sources/HeuristicLab.GP.SantaFe/SymbolTable.cs	(revision 641)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using System.Xml;
+using HeuristicLab.Functions;
+
+namespace HeuristicLab.GP.SantaFe {
+  class SymbolTable : StorableBase {
+    public const int IF_FOOD_AHEAD = 1;
+    public const int LEFT = 2;
+    public const int RIGHT = 3;
+    public const int MOVE = 4;
+    public const int PROG2 = 5;
+    public const int PROG3 = 6;
+    public const int UNKNOWN = 7;
+    private static Dictionary<Type, int> staticTypes = new Dictionary<Type, int>();
+
+    // needs to be public for persistence mechanism (Activator.CreateInstance needs empty constructor)
+    static SymbolTable() {
+      staticTypes = new Dictionary<Type, int>();
+      staticTypes[typeof(IfFoodAhead)] = IF_FOOD_AHEAD;
+      staticTypes[typeof(Left)] = LEFT;
+      staticTypes[typeof(Right)] = RIGHT;
+      staticTypes[typeof(Move)] = MOVE;
+      staticTypes[typeof(Prog2)] = PROG2;
+      staticTypes[typeof(Prog3)] = PROG3;
+    }
+
+    internal static int MapFunction(IFunction function) {
+      if(staticTypes.ContainsKey(function.GetType())) return staticTypes[function.GetType()];
+      else return UNKNOWN;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.sln
===================================================================
--- /trunk/sources/HeuristicLab.sln	(revision 640)
+++ /trunk/sources/HeuristicLab.sln	(revision 641)
@@ -99,4 +99,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Visualization.Test", "HeuristicLab.Visualization.Test\HeuristicLab.Visualization.Test.csproj", "{23117533-8A91-474E-BBF6-C39485D0810A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.GP.SantaFe", "HeuristicLab.GP.SantaFe\HeuristicLab.GP.SantaFe.csproj", "{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}"
 EndProject
 Global
@@ -187,5 +189,4 @@
 		{6E757D0E-20F9-4E89-AF06-D7DA256870DB}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6E757D0E-20F9-4E89-AF06-D7DA256870DB}.Release|x86.ActiveCfg = Release|x86
-		{6E757D0E-20F9-4E89-AF06-D7DA256870DB}.Release|x86.Build.0 = Release|x86
 		{55FDCFB3-3E8C-4FB0-837C-0CF06BEDED39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{55FDCFB3-3E8C-4FB0-837C-0CF06BEDED39}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -235,5 +236,4 @@
 		{4C0EF782-CC94-4A94-BC3E-661D2600559B}.Release|Any CPU.Build.0 = Release|Any CPU
 		{4C0EF782-CC94-4A94-BC3E-661D2600559B}.Release|x86.ActiveCfg = Release|x86
-		{4C0EF782-CC94-4A94-BC3E-661D2600559B}.Release|x86.Build.0 = Release|x86
 		{B462D3CC-8866-42F0-9832-AD0967613B72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{B462D3CC-8866-42F0-9832-AD0967613B72}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -307,5 +307,4 @@
 		{6D9564BB-956D-4808-8F92-AA7F776F90A5}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6D9564BB-956D-4808-8F92-AA7F776F90A5}.Release|x86.ActiveCfg = Release|x86
-		{6D9564BB-956D-4808-8F92-AA7F776F90A5}.Release|x86.Build.0 = Release|x86
 		{2D4E4565-3ED9-4BEB-AE75-39D871843D24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2D4E4565-3ED9-4BEB-AE75-39D871843D24}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -323,5 +322,4 @@
 		{9A781B2F-A58D-4270-A28A-3B14BBC11F4A}.Release|Any CPU.Build.0 = Release|Any CPU
 		{9A781B2F-A58D-4270-A28A-3B14BBC11F4A}.Release|x86.ActiveCfg = Release|x86
-		{9A781B2F-A58D-4270-A28A-3B14BBC11F4A}.Release|x86.Build.0 = Release|x86
 		{C2FB432A-07CA-45B5-BAFE-FEC172D1107B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C2FB432A-07CA-45B5-BAFE-FEC172D1107B}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -331,5 +329,4 @@
 		{C2FB432A-07CA-45B5-BAFE-FEC172D1107B}.Release|Any CPU.Build.0 = Release|Any CPU
 		{C2FB432A-07CA-45B5-BAFE-FEC172D1107B}.Release|x86.ActiveCfg = Release|x86
-		{C2FB432A-07CA-45B5-BAFE-FEC172D1107B}.Release|x86.Build.0 = Release|x86
 		{74752FCD-9E10-48DB-9AF2-AF5518B62807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{74752FCD-9E10-48DB-9AF2-AF5518B62807}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -438,32 +435,40 @@
 		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Debug|x86.ActiveCfg = Debug|x86
 		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Release|x86.ActiveCfg = Release|Any CPU
+		{14E1C3E3-2496-436A-AE00-09F7B81DB15B}.Release|x86.ActiveCfg = Release|x86
 		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Debug|x86.ActiveCfg = Debug|x86
 		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Release|x86.ActiveCfg = Release|Any CPU
+		{6AEF1284-2428-4B01-B9D2-62C1FA7C2DE1}.Release|x86.ActiveCfg = Release|x86
 		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Debug|x86.ActiveCfg = Debug|x86
 		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Release|x86.ActiveCfg = Release|Any CPU
+		{32DAA44F-944A-465F-A5C9-1C491EE4976D}.Release|x86.ActiveCfg = Release|x86
 		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Debug|x86.ActiveCfg = Debug|x86
 		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Release|x86.ActiveCfg = Release|Any CPU
+		{E392A1E2-DC95-4E33-B82E-8ED690EDA1AB}.Release|x86.ActiveCfg = Release|x86
 		{23117533-8A91-474E-BBF6-C39485D0810A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{23117533-8A91-474E-BBF6-C39485D0810A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{23117533-8A91-474E-BBF6-C39485D0810A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{23117533-8A91-474E-BBF6-C39485D0810A}.Debug|x86.ActiveCfg = Debug|x86
 		{23117533-8A91-474E-BBF6-C39485D0810A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{23117533-8A91-474E-BBF6-C39485D0810A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{23117533-8A91-474E-BBF6-C39485D0810A}.Release|x86.ActiveCfg = Release|Any CPU
+		{23117533-8A91-474E-BBF6-C39485D0810A}.Release|x86.ActiveCfg = Release|x86
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Debug|x86.ActiveCfg = Debug|x86
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Debug|x86.Build.0 = Debug|x86
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Release|x86.ActiveCfg = Release|x86
+		{1F5FA590-1D2D-406C-BDBD-03BAECEA3C80}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 640)
+++ /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 641)
@@ -29,4 +29,5 @@
 copy %1\HeuristicLab.Evolutionary\%2\HeuristicLab.Evolutionary-3.2.dll .\plugins
 copy %1\HeuristicLab.Functions\%2\HeuristicLab.Functions-3.2.dll .\plugins
+copy %1\HeuristicLab.GP.SantaFe\%2\HeuristicLab.GP.SantaFe-3.2.dll .\plugins
 copy %1\HeuristicLab.Grid\%2\HeuristicLab.Grid-3.2.dll .\plugins
 copy %1\HeuristicLab.Logging\%2\HeuristicLab.Logging-3.2.dll .\plugins
