Index: /branches/SAPBA/Build.cmd
===================================================================
--- /branches/SAPBA/Build.cmd	(revision 14893)
+++ /branches/SAPBA/Build.cmd	(revision 14893)
@@ -0,0 +1,104 @@
+@ECHO OFF
+
+SET CLEANBEFOREBUILD=
+
+SET SELECTED=
+SET CONFIGURATION=
+SET PLATFORM=
+
+IF "%~1"=="" GOTO :prompt_solution
+
+SET SELECTED=%1
+IF NOT EXIST %SELECTED% (
+  ECHO Solution file %SELECTED% could not be found.
+  GOTO :end
+)
+ECHO Building solution %SELECTED% ...
+GOTO :config_selection
+
+:prompt_solution
+SET /A COUNT=0
+FOR /F "tokens=*" %%A IN ('dir /B *.sln') DO (
+  CALL :forloopbody "%%A"
+)
+
+IF "%COUNT%"=="1" (
+  SET SELECTED=%SOLUTIONS.1%
+  ECHO Building %SOLUTIONS.1% as it is the only solution that was found ...
+  GOTO :config_selection
+)
+
+ECHO Found the following solutions:
+FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO ECHO %%A = %%B
+ECHO.
+SET /P SOLUTIONINDEX=Which solution to build? Type the number: 
+
+SET SELECTED=""
+FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO (
+  IF "%%A"=="%SOLUTIONINDEX%" SET SELECTED=%%B
+)
+
+IF %SELECTED%=="" GOTO :eof
+
+:config_selection
+IF "%~2"==""  GOTO :prompt_config
+
+SET CONFIGURATION=%~2
+ECHO Building configuration %CONFIGURATION% ...
+GOTO :platform_selection
+
+:prompt_config
+SET /P CONFIGURATION=Which configuration to build [Release]: 
+IF "%CONFIGURATION%"=="" SET CONFIGURATION=Release
+
+:platform_selection
+IF "%~3"=="" GOTO :prompt_platform
+  
+SET PLATFORM=%~3
+ECHO Building platform %PLATFORM% ...
+GOTO :clean
+
+:prompt_platform
+SET /P PLATFORM=Which platform to build [Any CPU]: 
+IF "%PLATFORM%"=="" SET PLATFORM=Any CPU
+
+:clean
+IF "%~4"=="" GOTO :prompt_clean
+
+SET CLEANBEFOREBUILD=%~4
+GOTO :main
+
+:prompt_clean
+SET /P CLEANBEFOREBUILD=Would you like to clean before building [n]: 
+IF "%CLEANBEFOREBUILD%"=="" SET CLEANBEFOREBUILD=n
+
+:main
+REM First find the path to the msbuild.exe by performing a registry query
+FOR /F "tokens=1,3 delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"') DO (
+  IF "%%A"=="MSBuildToolsPath" SET MSBUILDPATH=%%B)
+
+REM Then execute msbuild to clean and build the solution
+REM Disable that msbuild creates a cache file of the solution
+SET MSBuildUseNoSolutionCache=1
+REM Run msbuild to clean and then build
+IF "%CLEANBEFOREBUILD%" NEQ "n" (
+  ECHO Cleaning ...
+  %MSBUILDPATH%msbuild.exe %SELECTED% /target:Clean /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
+)
+ECHO Building ...
+%MSBUILDPATH%msbuild.exe %SELECTED% /target:Build /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
+
+ECHO.
+ECHO DONE.
+
+:end
+
+PAUSE
+
+GOTO :eof
+
+REM This workaround is necessary so that COUNT gets reevaluated
+:forloopbody
+SET /A COUNT+=1
+SET SOLUTIONS.%COUNT%=%1
+GOTO :eof
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA.sln
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA.sln	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA.sln	(revision 14893)
@@ -0,0 +1,22 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.SAPBA-3.4", "HeuristicLab.Algorithms.SAPBA\HeuristicLab.Algorithms.SAPBA-3.4.csproj", "{F740AF15-7ADA-40D9-B225-837F4E4F41E0}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{F740AF15-7ADA-40D9-B225-837F4E4F41E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F740AF15-7ADA-40D9-B225-837F4E4F41E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F740AF15-7ADA-40D9-B225-837F4E4F41E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F740AF15-7ADA-40D9-B225-837F4E4F41E0}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/EgoUtilities.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/EgoUtilities.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/EgoUtilities.cs	(revision 14893)
@@ -0,0 +1,177 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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.Threading;
+using HeuristicLab.Algorithms.DataAnalysis;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Algorithms.SAPBA {
+  internal static class EgoUtilities {
+    //Extention methods for convenience
+    public static int ArgMax<T>(this IEnumerable<T> values, Func<T, double> func) {
+      var max = double.MinValue;
+      var maxIdx = 0;
+      var idx = 0;
+      foreach (var v in values) {
+        var d = func.Invoke(v);
+        if (d > max) {
+          max = d;
+          maxIdx = idx;
+        }
+        idx++;
+      }
+      return maxIdx;
+    }
+    public static int ArgMin<T>(this IEnumerable<T> values, Func<T, double> func) {
+      return ArgMax(values, x => -func.Invoke(x));
+    }
+    public static double GetEstimation(this IRegressionModel model, RealVector r) {
+      var dataset = GetDataSet(new[] { new Tuple<RealVector, double>(r, 0.0) }, false);
+      return model.GetEstimatedValues(dataset, new[] { 0 }).First();
+    }
+    public static double GetVariance(this IConfidenceRegressionModel model, RealVector r) {
+      var dataset = GetDataSet(new[] { new Tuple<RealVector, double>(r, 0.0) }, false);
+      return model.GetEstimatedVariances(dataset, new[] { 0 }).First();
+    }
+    public static double GetDoubleValue(this IDataset dataset, int i, int j) {
+      return dataset.GetDoubleValue("input" + j, i);
+    }
+
+    //Sub-Algorithms
+    public static ResultCollection SyncRunSubAlgorithm(IAlgorithm alg, int random) {
+
+      if (alg.Parameters.ContainsKey("SetSeedRandomly") && alg.Parameters.ContainsKey("Seed")) {
+        var setSeed = alg.Parameters["SetSeedRandomly"].ActualValue as BoolValue;
+        var seed = alg.Parameters["Seed"].ActualValue as IntValue;
+        if (seed == null || setSeed == null) throw new ArgumentException("wrong SeedParametertypes");
+        setSeed.Value = false;
+        seed.Value = random;
+
+      }
+
+
+      EventWaitHandle trigger = new AutoResetEvent(false);
+      Exception ex = null;
+      EventHandler<EventArgs<Exception>> exhandler = (sender, e) => ex = e.Value;
+      EventHandler stoppedHandler = (sender, e) => trigger.Set();
+      alg.ExceptionOccurred += exhandler;
+      alg.Stopped += stoppedHandler;
+      alg.Prepare();
+      alg.Start();
+      trigger.WaitOne();
+      alg.ExceptionOccurred -= exhandler;
+      alg.Stopped -= stoppedHandler;
+      if (ex != null) throw ex;
+      return alg.Results;
+    }
+
+    public static IRegressionSolution BuildModel(CancellationToken cancellationToken, IEnumerable<Tuple<RealVector, double>> samples, IDataAnalysisAlgorithm<IRegressionProblem> regressionAlgorithm, IRandom random, bool removeDuplicates = true, IRegressionSolution oldSolution = null) {
+      var dataset = EgoUtilities.GetDataSet(samples.ToList(), removeDuplicates);
+      var problemdata = new RegressionProblemData(dataset, dataset.VariableNames.Where(x => !x.Equals("output")), "output");
+      problemdata.TrainingPartition.Start = 0;
+      problemdata.TrainingPartition.End = dataset.Rows;
+      problemdata.TestPartition.Start = dataset.Rows;
+      problemdata.TestPartition.End = dataset.Rows;
+
+
+      if (regressionAlgorithm.Problem == null) regressionAlgorithm.Problem = new RegressionProblem();
+      var problem = regressionAlgorithm.Problem;
+      problem.ProblemDataParameter.Value = problemdata;
+      var i = 0;
+      IRegressionSolution solution = null;
+
+      while (solution == null && i++ < 100) {
+        var results = EgoUtilities.SyncRunSubAlgorithm(regressionAlgorithm, random.Next(int.MaxValue));
+        solution = results.Select(x => x.Value).OfType<IRegressionSolution>().SingleOrDefault();
+        cancellationToken.ThrowIfCancellationRequested();
+      }
+
+      //special treatement for GaussianProcessRegression
+      var gp = regressionAlgorithm;
+      var oldGaussian = oldSolution as GaussianProcessRegressionSolution;
+      if (gp != null && oldGaussian != null) {
+        const double noise = 0.0;
+        var n = samples.First().Item1.Length;
+        var mean = (IMeanFunction)oldGaussian.Model.MeanFunction.Clone();
+        var cov = (ICovarianceFunction)oldGaussian.Model.CovarianceFunction.Clone();
+        if (mean.GetNumberOfParameters(n) != 0 || cov.GetNumberOfParameters(n) != 0) throw new ArgumentException("DEBUG: assumption about fixed paramters wrong");
+        double[] hyp = { noise };
+        try {
+          var model = new GaussianProcessModel(problemdata.Dataset, problemdata.TargetVariable, problemdata.AllowedInputVariables, problemdata.TrainingIndices, hyp, mean, cov);
+          model.FixParameters();
+          var sol = new GaussianProcessRegressionSolution(model, problemdata);
+          if (solution == null || solution.TrainingMeanSquaredError > sol.TrainingMeanSquaredError) {
+            solution = sol;
+          }
+        }
+        catch (ArgumentException) { }
+      }
+
+      if (solution == null) throw new ArgumentException("The algorithm didn't return a model");
+      regressionAlgorithm.Runs.Clear();
+      return solution;
+    }
+    //RegressionModel extensions
+    public const double DuplicateResolution = 0.0001;
+    public static Dataset GetDataSet(IReadOnlyList<Tuple<RealVector, double>> samples, bool removeDuplicates) {
+      if (removeDuplicates) samples = RemoveDuplicates(samples); //TODO duplicate removal leads to incorrect uncertainty values in models
+      var dimensions = samples[0].Item1.Length + 1;
+      var data = new double[samples.Count, dimensions];
+      var names = new string[dimensions - 1];
+      for (var i = 0; i < names.Length; i++) names[i] = "input" + i;
+      for (var j = 0; j < samples.Count; j++) {
+        for (var i = 0; i < names.Length; i++) data[j, i] = samples[j].Item1[i];
+        data[j, dimensions - 1] = samples[j].Item2;
+      }
+      return new Dataset(names.Concat(new[] { "output" }).ToArray(), data);
+    }
+    private static IReadOnlyList<Tuple<RealVector, double>> RemoveDuplicates(IReadOnlyList<Tuple<RealVector, double>> samples) {
+      var res = new List<Tuple<RealVector, double, int>>();
+      foreach (var sample in samples) {
+        if (res.Count == 0) {
+          res.Add(new Tuple<RealVector, double, int>(sample.Item1, sample.Item2, 1));
+          continue;
+        }
+        var index = res.ArgMin(x => Euclidian(sample.Item1, x.Item1));
+        var d = Euclidian(res[index].Item1, sample.Item1);
+        if (d > DuplicateResolution)
+          res.Add(new Tuple<RealVector, double, int>(sample.Item1, sample.Item2, 1));
+        else {
+          var t = res[index];
+          res.RemoveAt(index);
+          res.Add(new Tuple<RealVector, double, int>(t.Item1, t.Item2 + sample.Item2, t.Item3 + 1));
+        }
+      }
+      return res.Select(x => new Tuple<RealVector, double>(x.Item1, x.Item2 / x.Item3)).ToArray();
+    }
+    private static double Euclidian(IEnumerable<double> a, IEnumerable<double> b) {
+      return Math.Sqrt(a.Zip(b, (d, d1) => d - d1).Sum(d => d * d));
+    }
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/HeuristicLab.Algorithms.SAPBA-3.4.csproj
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/HeuristicLab.Algorithms.SAPBA-3.4.csproj	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/HeuristicLab.Algorithms.SAPBA-3.4.csproj	(revision 14893)
@@ -0,0 +1,153 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{F740AF15-7ADA-40D9-B225-837F4E4F41E0}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Algorithms.SAPBA</RootNamespace>
+    <AssemblyName>HeuristicLab.Algorithms.SAPBA-3.4</AssemblyName>
+    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;CODE_ANALYSIS</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>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Algorithms.CMAEvolutionStrategy-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Algorithms.CMAEvolutionStrategy-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Algorithms.DataAnalysis-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.EvolutionStrategy-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Algorithms.EvolutionStrategy-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Analysis-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Analysis-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec" />
+    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.DataAnalysis-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances.DataAnalysis-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="EgoUtilities.cs" />
+    <Compile Include="Strategies\GenerationalStrategy.cs" />
+    <Compile Include="SurrogateAssistedPopulationBasedAlgorithm.cs" />
+    <Compile Include="Interfaces\ISurrogateStrategy.cs" />
+    <Compile Include="Interfaces\ISurrogateAlgorithm.cs" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Problems\SurrogateProblem.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Strategies\StrategyBase.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+  </PropertyGroup>
+  <!-- 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>
+  -->
+</Project>
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/HeuristicLab.Algorithms.SAPBA-3.4.csproj.user
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/HeuristicLab.Algorithms.SAPBA-3.4.csproj.user	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/HeuristicLab.Algorithms.SAPBA-3.4.csproj.user	(revision 14893)
@@ -0,0 +1,7 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+    <StartAction>Program</StartAction>
+    <StartProgram>..\..\..\..\HL\trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+  </PropertyGroup>
+</Project>
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Interfaces/ISurrogateAlgorithm.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Interfaces/ISurrogateAlgorithm.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Interfaces/ISurrogateAlgorithm.cs	(revision 14893)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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 HeuristicLab.Common;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Algorithms.SAPBA {
+  public interface ISurrogateAlgorithm<in T> : IAlgorithm where T : IDeepCloneable {
+    void SetInitialSamples(T[] solutions, double[] qualities);
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Interfaces/ISurrogateStrategy.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Interfaces/ISurrogateStrategy.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Interfaces/ISurrogateStrategy.cs	(revision 14893)
@@ -0,0 +1,34 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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.Threading;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Algorithms.SAPBA {
+  public interface ISurrogateStrategy : IItem {
+    double Evaluate(RealVector r, IRandom random);
+    void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random);
+    void Initialize(SurrogateAssistedPopulationBasedAlgorithm algorithm);
+    void UpdateCancellation(CancellationToken cancellationToken);
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Plugin.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Plugin.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Plugin.cs	(revision 14893)
@@ -0,0 +1,46 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Algorithms.SAPBA {
+  [Plugin("HeuristicLab.Algorithms.SAPBA", "3.4.5.14833")]
+  [PluginFile("HeuristicLab.Algorithms.EGO-3.4.dll", PluginFileType.Assembly)]
+  [PluginFile("displayModelFrame.html", PluginFileType.Data)]
+  [PluginDependency("HeuristicLab.Algorithms.CMAEvolutionStrategy", "3.4")]
+  [PluginDependency("HeuristicLab.Algorithms.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Analysis", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.RealVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  [PluginDependency("HeuristicLab.Random", "3.3")]
+  public class HeuristicLabProblemsDataAnalysisSymbolicViewsPlugin : PluginBase {
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Plugin.cs.frame
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Plugin.cs.frame	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Plugin.cs.frame	(revision 14893)
@@ -0,0 +1,49 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.Algorithms.SAPBA {
+  [Plugin("HeuristicLab.Algorithms.SAPBA", "3.4.5.$WCREV$")]
+  [PluginFile("HeuristicLab.Algorithms.SAPBA-3.4.dll", PluginFileType.Assembly)]
+  [PluginFile("displayModelFrame.html", PluginFileType.Data)]
+  [PluginDependency("HeuristicLab.Algorithms.CMAEvolutionStrategy", "3.4")]
+  [PluginDependency("HeuristicLab.Algorithms.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Analysis", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.RealVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Operators","3.3")]
+  [PluginDependency("HeuristicLab.Optimization","3.3")]
+  [PluginDependency("HeuristicLab.Parameters","3.3")]
+  [PluginDependency("HeuristicLab.Persistence","3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  [PluginDependency("HeuristicLab.Random", "3.3")]
+  public class HeuristicLabProblemsDataAnalysisSymbolicViewsPlugin : PluginBase {
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/PreBuildEvent.cmd
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/PreBuildEvent.cmd	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/PreBuildEvent.cmd	(revision 14893)
@@ -0,0 +1,2 @@
+IF EXIST "%ProjectDir%\Properties\AssemblyInfo.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Properties\AssemblyInfo.cs.frame" "%ProjectDir%\Properties\AssemblyInfo.cs"
+IF EXIST "%ProjectDir%\Plugin.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Plugin.cs.frame" "%ProjectDir%\Plugin.cs"
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Problems/SurrogateProblem.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Problems/SurrogateProblem.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Problems/SurrogateProblem.cs	(revision 14893)
@@ -0,0 +1,46 @@
+﻿using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Algorithms.SAPBA {
+  [StorableClass]
+  [Item("Surrogate problem (single-objective)", "Wrapper for a problem that allows surrogate models to mitigate some of the work")]
+  public class SurrogateProblem : SingleObjectiveBasicProblem<RealVectorEncoding> {
+
+    [Storable]
+    private ISurrogateStrategy Strategy;
+
+    #region HLConstructors
+    [StorableConstructor]
+    protected SurrogateProblem(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() { }
+    protected SurrogateProblem(SurrogateProblem original, Cloner cloner) : base(original, cloner) {
+      Strategy = original?.Strategy;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) { return new SurrogateProblem(this, cloner); }
+    public SurrogateProblem() {
+    }
+    #endregion
+
+    public override double Evaluate(Individual individual, IRandom random) {
+      return Strategy.Evaluate(individual.RealVector(), random);
+    }
+    public override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {
+      base.Analyze(individuals, qualities, results, random);
+      Strategy.Analyze(individuals, qualities, results, random);
+    }
+
+    public override bool Maximization { get; }
+
+    public void SetStrategy(ISurrogateStrategy strategy) {
+      Strategy = strategy;
+    }
+    public void SetProblem(SingleObjectiveBasicProblem<IEncoding> expensiveProblem) {
+      if (expensiveProblem != null) Encoding = expensiveProblem.Encoding as RealVectorEncoding;
+    }
+
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Properties/AssemblyInfo.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Properties/AssemblyInfo.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Properties/AssemblyInfo.cs	(revision 14893)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.InteropServices;
+
+// 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.Algorithms.SAPBA")]
+[assembly: AssemblyDescription("HeuristicLab Efficient Global Optimization")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2017 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("0c41579a-d3c4-49fb-af7a-119eea1155ac")]
+
+// 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 Build and Revision Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.4.0.0")]
+[assembly: AssemblyFileVersion("3.4.0.14833")]
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Properties/AssemblyInfo.cs.frame	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Properties/AssemblyInfo.cs.frame	(revision 14893)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.InteropServices;
+
+// 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.Algorithms.SAPBA")]
+[assembly: AssemblyDescription("HeuristicLab Efficient Global Optimization")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2017 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("0c41579a-d3c4-49fb-af7a-119eea1155ac")]
+
+// 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 Build and Revision Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.4.0.0")]
+[assembly: AssemblyFileVersion("3.4.0.$WCREV$")]
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Strategies/GenerationalStrategy.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Strategies/GenerationalStrategy.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Strategies/GenerationalStrategy.cs	(revision 14893)
@@ -0,0 +1,49 @@
+﻿using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Algorithms.SAPBA.Strategies {
+  public class GenerationalStrategy : StrategyBase {
+    public const string NoGenerationsParameterName = "Number of generations";
+    public IFixedValueParameter<IntValue> NoGenerationsParameter => Parameters[NoGenerationsParameterName] as IFixedValueParameter<IntValue>;
+    public IntValue NoGenerations => NoGenerationsParameter.Value;
+    [Storable]
+    public int Generations;
+
+    #region Constructors
+    private GenerationalStrategy(GenerationalStrategy original, Cloner cloner) : base(original, cloner) {
+      Generations = original.Generations;
+    }
+    public GenerationalStrategy() {
+      Parameters.Add(new FixedValueParameter<IntValue>(NoGenerationsParameterName, "The number of generations before a new model is constructed", new IntValue(3)));
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GenerationalStrategy(this, cloner);
+    }
+    #endregion
+
+    public override double Evaluate(RealVector r, IRandom random) {
+      return EstimateSample(r, random).Item2;
+    }
+
+    protected override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, ResultCollection globalResults, IRandom random) {
+    }
+
+    protected override void ProcessPopulation(Individual[] individuals, double[] qualities, IRandom random) {
+      if (RegressionSolution != null && Generations < NoGenerations.Value) Generations++;
+      else {
+        foreach (var indi in individuals) Evaluate(indi.RealVector(), random);
+        BuildRegressionSolution(random);
+        Generations = 0;
+      }
+    }
+
+    protected override void Initialize() {
+      Generations = 0;
+    }
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Strategies/StrategyBase.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Strategies/StrategyBase.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/Strategies/StrategyBase.cs	(revision 14893)
@@ -0,0 +1,158 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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.Threading;
+using HeuristicLab.Analysis;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Algorithms.SAPBA.Strategies {
+  [StorableClass]
+  public abstract class StrategyBase : ParameterizedNamedItem, ISurrogateStrategy {
+    #region Properties
+    [Storable]
+    private SurrogateAssistedPopulationBasedAlgorithm Algorithm;
+    [Storable]
+    private List<Tuple<RealVector, double>> Samples;
+    [Storable]
+    protected IRegressionSolution RegressionSolution;
+    protected CancellationToken Cancellation;
+    private IEnumerable<Tuple<RealVector, double>> TruncatedSamples => Samples.Count > Algorithm.MaximalDatasetSize && Algorithm.MaximalDatasetSize > 0 ? Samples.Skip(Samples.Count - Algorithm.MaximalDatasetSize) : Samples;
+    #endregion
+
+    #region ResultName
+    private const string BestQualityResultName = "Best Quality";
+    private const string BestSolutionResultName = "Best Solution";
+    private const string QualityTableResultName = "Qualities";
+    private const string BestQualityRowName = "Best Quality";
+    private const string WorstQualityRowName = "Worst Quality";
+    private const string CurrentQualityRowName = "Current Quality";
+    private const string MedianQualityRowName = "Median Quality";
+    private const string AverageQualityRowName = "Average Quality";
+    private const string RegressionSolutionResultName = "Model";
+    private const string EvaluatedSoultionsResultName = "EvaluatedSolutions";
+    private const string IterationsResultName = "Iterations";
+    #endregion
+
+    #region constructors
+    [StorableConstructor]
+    protected StrategyBase(bool deserializing) : base(deserializing) { }
+    protected StrategyBase(StrategyBase original, Cloner cloner) : base(original, cloner) {
+      if (original.Samples != null) Samples = original.Samples.Select(x => new Tuple<RealVector, double>(cloner.Clone(x.Item1), x.Item2)).ToList();
+      RegressionSolution = cloner.Clone(original.RegressionSolution);
+    }
+    protected StrategyBase() { }
+    #endregion
+
+    public abstract double Evaluate(RealVector r, IRandom random);
+    protected abstract void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, ResultCollection globalResults, IRandom random);
+    protected abstract void ProcessPopulation(Individual[] individuals, double[] qualities, IRandom random);
+    protected abstract void Initialize();
+
+    public void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {
+      Algorithm.Problem.Analyze(individuals, qualities, results, random);
+      ProcessPopulation(individuals, qualities, random);
+
+      var globalResults = Algorithm.Results;
+      if (!globalResults.ContainsKey(EvaluatedSoultionsResultName)) globalResults.Add(new Result(EvaluatedSoultionsResultName, new IntValue(Samples.Count)));
+      else ((IntValue)globalResults[EvaluatedSoultionsResultName].Value).Value = Samples.Count;
+      if (!globalResults.ContainsKey(IterationsResultName)) globalResults.Add(new Result(IterationsResultName, new IntValue(0)));
+      else ((IntValue)globalResults[IterationsResultName].Value).Value++;
+
+      if (Samples.Count != 0) {
+        var min = Samples.Min(x => x.Item2);
+        var max = Samples.Max(x => x.Item2);
+        var bestIdx = Algorithm.Problem.Maximization ? Samples.ArgMax(x => x.Item2) : Samples.ArgMin(x => x.Item2);
+
+        if (!globalResults.ContainsKey(BestQualityResultName)) globalResults.Add(new Result(BestQualityResultName, new DoubleValue(0.0)));
+        ((DoubleValue)globalResults[BestQualityResultName].Value).Value = qualities[bestIdx];
+        if (!globalResults.ContainsKey(BestSolutionResultName)) globalResults.Add(new Result(BestQualityResultName, new RealVector()));
+        globalResults[BestSolutionResultName].Value = individuals[bestIdx].RealVector();
+
+        DataTable table;
+        if (!globalResults.ContainsKey(QualityTableResultName)) {
+          table = new DataTable("Qualites", "Qualites over iteration");
+          globalResults.Add(new Result(QualityTableResultName, table));
+          table.Rows.Add(new DataRow(BestQualityRowName, "Best Quality"));
+          table.Rows.Add(new DataRow(WorstQualityRowName, "Worst Quality"));
+          table.Rows.Add(new DataRow(CurrentQualityRowName, "Current Quality"));
+          table.Rows.Add(new DataRow(MedianQualityRowName, "Median Quality"));
+          table.Rows.Add(new DataRow(AverageQualityRowName, "Average Quality"));
+        }
+        table = (DataTable)globalResults[QualityTableResultName].Value;
+        table.Rows[BestQualityResultName].Values.Add(Algorithm.Problem.Maximization ? max : min);
+        table.Rows[WorstQualityRowName].Values.Add(Algorithm.Problem.Maximization ? min : max);
+        table.Rows[CurrentQualityRowName].Values.Add(Samples[Samples.Count - 1].Item2);
+        table.Rows[AverageQualityRowName].Values.Add(Samples.Average(x => x.Item2));
+        table.Rows[MedianQualityRowName].Values.Add(Samples.Select(x => x.Item2).Median());
+      }
+
+      if (RegressionSolution != null) {
+        if (!globalResults.ContainsKey(RegressionSolutionResultName))
+          globalResults.Add(new Result(RegressionSolutionResultName, RegressionSolution));
+        else
+          globalResults[RegressionSolutionResultName].Value = RegressionSolution;
+      }
+
+      Analyze(individuals, qualities, results, globalResults, random);
+    }
+    public void Initialize(SurrogateAssistedPopulationBasedAlgorithm algorithm) {
+      Algorithm = algorithm;
+      Samples = algorithm.InitialSamples?.ToList() ?? new List<Tuple<RealVector, double>>();
+      RegressionSolution = null;
+      Initialize();
+    }
+
+    #region Helpers for Subclasses
+    protected void BuildRegressionSolution(IRandom random) {
+      RegressionSolution = EgoUtilities.BuildModel(Cancellation, TruncatedSamples, Algorithm.RegressionAlgorithm, random, Algorithm.RemoveDuplicates, RegressionSolution);
+    }
+    protected Tuple<RealVector, double> EvaluateSample(RealVector point, IRandom random) {
+      var p = new Tuple<RealVector, double>(point, Algorithm.Problem.Evaluate(GetIndividual(point), random));
+      Samples.Add(p);
+      return p;
+    }
+    protected Tuple<RealVector, double> EstimateSample(RealVector point, IRandom random) {
+      return Samples.Count < Algorithm.InitialEvaluations ? EvaluateSample(point, random) : new Tuple<RealVector, double>(point, RegressionSolution.Model.GetEstimation(point));
+    }
+    #endregion
+
+    #region Helpers
+    private Individual GetIndividual(RealVector r) {
+      var scope = new Scope();
+      scope.Variables.Add(new Variable(Algorithm.Problem.Encoding.Name, r));
+      return new SingleEncodingIndividual(Algorithm.Problem.Encoding, scope);
+    }
+
+    public void UpdateCancellation(CancellationToken cancellationToken) {
+      Cancellation = cancellationToken;
+    }
+    #endregion
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/SurrogateAssistedPopulationBasedAlgorithm.cs
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/SurrogateAssistedPopulationBasedAlgorithm.cs	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/SurrogateAssistedPopulationBasedAlgorithm.cs	(revision 14893)
@@ -0,0 +1,209 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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.Threading;
+using HeuristicLab.Algorithms.DataAnalysis;
+using HeuristicLab.Algorithms.SAPBA.Strategies;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Algorithms.SAPBA {
+  [StorableClass]
+  [Creatable(CreatableAttribute.Categories.Algorithms, Priority = 95)]
+  [Item("SurrogateAssistedPopulationBasedAlgorithm", "")]
+  public class SurrogateAssistedPopulationBasedAlgorithm : BasicAlgorithm, ISurrogateAlgorithm<RealVector> {
+    #region Basic-Alg-Essentials
+    public override bool SupportsPause => true;
+    public override Type ProblemType => typeof(SingleObjectiveBasicProblem<IEncoding>);
+    public new SingleObjectiveBasicProblem<IEncoding> Problem {
+      get { return (SingleObjectiveBasicProblem<IEncoding>)base.Problem; }
+      set { base.Problem = value; }
+    }
+    #endregion
+
+    #region ParameterNames
+    private const string GenerationSizeParameterName = "GenerationSize";
+    private const string InitialEvaluationsParameterName = "Initial Evaluations";
+    private const string MaximalDataSetSizeParameterName = "Maximal Dataset Size";
+    private const string MaximumEvaluationsParameterName = "Maximum Evaluations";
+    private const string MaximumRuntimeParameterName = "Maximum Runtime";
+    private const string OptimizationAlgorithmParameterName = "Optimization Algorithm";
+    private const string OptimizationRestartsParameterName = "Optimization Restarts";
+    private const string RemoveDuplicatesParamterName = "RemoveDuplicates";
+    private const string RegressionAlgorithmParameterName = "RegressionAlgorithm";
+    private const string SeedParameterName = "Seed";
+    private const string SetSeedRandomlyParameterName = "SetSeedRandomly";
+    private const string StrategyParameterName = "Strategy";
+    #endregion
+
+    #region ParameterProperties
+    public IFixedValueParameter<IntValue> GenerationSizeParemeter => Parameters[GenerationSizeParameterName] as IFixedValueParameter<IntValue>;
+    public IFixedValueParameter<IntValue> InitialEvaluationsParameter => Parameters[InitialEvaluationsParameterName] as IFixedValueParameter<IntValue>;
+    public IFixedValueParameter<IntValue> MaximalDataSetSizeParameter => Parameters[MaximalDataSetSizeParameterName] as IFixedValueParameter<IntValue>;
+    public IFixedValueParameter<IntValue> MaximumEvaluationsParameter => Parameters[MaximumEvaluationsParameterName] as IFixedValueParameter<IntValue>;
+    public IFixedValueParameter<IntValue> MaximumRuntimeParameter => Parameters[MaximumRuntimeParameterName] as IFixedValueParameter<IntValue>;
+    public IValueParameter<Algorithm> OptimizationAlgorithmParameter => Parameters[OptimizationAlgorithmParameterName] as IValueParameter<Algorithm>;
+    public IFixedValueParameter<IntValue> OptimizationRestartsParemeter => Parameters[OptimizationRestartsParameterName] as IFixedValueParameter<IntValue>;
+    public IValueParameter<IDataAnalysisAlgorithm<IRegressionProblem>> RegressionAlgorithmParameter => Parameters[RegressionAlgorithmParameterName] as IValueParameter<IDataAnalysisAlgorithm<IRegressionProblem>>;
+    public IFixedValueParameter<BoolValue> RemoveDuplicatesParameter => Parameters[RemoveDuplicatesParamterName] as IFixedValueParameter<BoolValue>;
+    public IFixedValueParameter<IntValue> SeedParameter => Parameters[SeedParameterName] as IFixedValueParameter<IntValue>;
+    public IFixedValueParameter<BoolValue> SetSeedRandomlyParameter => Parameters[SetSeedRandomlyParameterName] as IFixedValueParameter<BoolValue>;
+    public IConstrainedValueParameter<ISurrogateStrategy> StrategyParameter => Parameters[StrategyParameterName] as IConstrainedValueParameter<ISurrogateStrategy>;
+    #endregion
+
+    #region Properties
+    public int GenerationSize => GenerationSizeParemeter.Value.Value;
+    public int InitialEvaluations => InitialEvaluationsParameter.Value.Value;
+    public int MaximalDatasetSize => MaximalDataSetSizeParameter.Value.Value;
+    public int MaximumEvaluations => MaximumEvaluationsParameter.Value.Value;
+    public int MaximumRuntime => MaximumRuntimeParameter.Value.Value;
+    public Algorithm OptimizationAlgorithm => OptimizationAlgorithmParameter.Value;
+    public int OptimizationRestarts => OptimizationRestartsParemeter.Value.Value;
+    public IDataAnalysisAlgorithm<IRegressionProblem> RegressionAlgorithm => RegressionAlgorithmParameter.Value;
+    public bool RemoveDuplicates => RemoveDuplicatesParameter.Value.Value;
+    public int Seed => SeedParameter.Value.Value;
+    public bool SetSeedRandomly => SetSeedRandomlyParameter.Value.Value;
+    public ISurrogateStrategy SurrogateStrategy => StrategyParameter.Value;
+    #endregion
+
+    #region StorableProperties 
+    [Storable]
+    private IRandom Random = new MersenneTwister();
+    [Storable]
+    public List<Tuple<RealVector, double>> InitialSamples { get; private set; }
+    [Storable]
+    public SurrogateProblem surrogateProblem;
+    public void SetInitialSamples(RealVector[] solutions, double[] qualities) {
+      InitialSamples = solutions.Zip(qualities, (vector, d) => new Tuple<RealVector, double>(vector, d)).ToList();
+    }
+    #endregion
+
+    #region HLConstructors
+    [StorableConstructor]
+    protected SurrogateAssistedPopulationBasedAlgorithm(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeseialization() {
+      RegisterEventhandlers();
+    }
+    protected SurrogateAssistedPopulationBasedAlgorithm(SurrogateAssistedPopulationBasedAlgorithm original, Cloner cloner) : base(original, cloner) {
+      Random = cloner.Clone(Random);
+      if (original.InitialSamples != null) InitialSamples = original.InitialSamples.Select(x => new Tuple<RealVector, double>(cloner.Clone(x.Item1), x.Item2)).ToList();
+      RegisterEventhandlers();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) { return new SurrogateAssistedPopulationBasedAlgorithm(this, cloner); }
+    public SurrogateAssistedPopulationBasedAlgorithm() {
+      var cmaes = new CMAEvolutionStrategy.CMAEvolutionStrategy {
+        MaximumGenerations = 300,
+        PopulationSize = 50
+      };
+      var model = new GaussianProcessRegression {
+        Problem = new RegressionProblem()
+      };
+      model.CovarianceFunctionParameter.Value = new CovarianceRationalQuadraticIso();
+
+      cmaes.Problem = new SurrogateProblem();
+      Parameters.Add(new FixedValueParameter<IntValue>(MaximumEvaluationsParameterName, "", new IntValue(int.MaxValue)));
+      Parameters.Add(new FixedValueParameter<IntValue>(InitialEvaluationsParameterName, "", new IntValue(10)));
+      Parameters.Add(new FixedValueParameter<IntValue>(MaximumRuntimeParameterName, "The maximum runtime in seconds after which the algorithm stops. Use -1 to specify no limit for the runtime", new IntValue(-1)));
+      Parameters.Add(new FixedValueParameter<IntValue>(SeedParameterName, "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(SetSeedRandomlyParameterName, "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
+      Parameters.Add(new ValueParameter<IDataAnalysisAlgorithm<IRegressionProblem>>(RegressionAlgorithmParameterName, "The model used to approximate the problem", model));
+      Parameters.Add(new ValueParameter<Algorithm>(OptimizationAlgorithmParameterName, "The algorithm used to solve the expected improvement subproblem", cmaes));
+      Parameters.Add(new FixedValueParameter<IntValue>(OptimizationRestartsParameterName, "Number of restarts of the SubAlgortihm to avoid local optima", new IntValue(1)));
+      Parameters.Add(new FixedValueParameter<IntValue>(GenerationSizeParameterName, "Number points that are sampled every iteration (stadard EGO: 1)", new IntValue(1)));
+      Parameters.Add(new FixedValueParameter<IntValue>(MaximalDataSetSizeParameterName, "The maximum number of sample points used to generate the model. Set 0 or less to use always all samples ", new IntValue(-1)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(RemoveDuplicatesParamterName, "Wether duplicate samples should be replaced by a single sample with an averaged quality. This GREATLY decreases the chance of ill conditioned models (unbuildable models) but is not theoretically sound as the model ignores the increasing certainty in this region"));
+      var strategies = new ItemSet<ISurrogateStrategy> { new GenerationalStrategy() };
+      Parameters.Add(new ConstrainedValueParameter<ISurrogateStrategy>(StrategyParameterName, "The surrogate strategy that dictates how the optimization alg is assisted", strategies));
+      RegisterEventhandlers();
+    }
+    #endregion
+
+    protected override void Initialize(CancellationToken cancellationToken) {
+      base.Initialize(cancellationToken);
+      //encoding
+      var enc = Problem.Encoding as RealVectorEncoding;
+      if (enc == null) throw new ArgumentException("The SAPBA algorithm can only be applied to RealVectorEncodings");
+
+      //random
+      if (SetSeedRandomly) SeedParameter.Value.Value = new System.Random().Next();
+      Random.Reset(Seed);
+
+      //initialize Strategy and Problem
+      SurrogateStrategy.Initialize(this);
+      SurrogateStrategy.UpdateCancellation(cancellationToken);
+      surrogateProblem.SetStrategy(SurrogateStrategy);
+      surrogateProblem.SetProblem(Problem);
+    }
+    protected override void Run(CancellationToken cancellationToken) {
+      SurrogateStrategy.UpdateCancellation(cancellationToken);
+      try { EgoUtilities.SyncRunSubAlgorithm(OptimizationAlgorithm, Random.Next()); }
+      finally { Analyze(); }
+    }
+    private void Analyze() { }
+
+    #region Eventhandling
+    private void RegisterEventhandlers() {
+      DeregisterEventhandlers();
+      OptimizationAlgorithmParameter.ValueChanged += OnOptimizationAlgorithmChanged;
+    }
+    private void DeregisterEventhandlers() {
+      OptimizationAlgorithmParameter.ValueChanged -= OnOptimizationAlgorithmChanged;
+    }
+    private void OnOptimizationAlgorithmChanged(object sender, EventArgs e) {
+      OptimizationAlgorithm.Problem = surrogateProblem;
+    }
+
+    protected override void OnExecutionTimeChanged() {
+      base.OnExecutionTimeChanged();
+      if (CancellationTokenSource == null) return;
+      if (MaximumRuntime == -1) return;
+      if (ExecutionTime.TotalSeconds > MaximumRuntime) CancellationTokenSource.Cancel();
+    }
+    public override void Pause() {
+      base.Pause();
+      if (RegressionAlgorithm.ExecutionState == ExecutionState.Started) RegressionAlgorithm.Pause();
+      if (OptimizationAlgorithm.ExecutionState == ExecutionState.Started) OptimizationAlgorithm.Pause();
+
+    }
+    public override void Stop() {
+      base.Stop();
+      if (RegressionAlgorithm.ExecutionState == ExecutionState.Started) RegressionAlgorithm.Stop();
+      if (OptimizationAlgorithm.ExecutionState == ExecutionState.Started) OptimizationAlgorithm.Stop();
+    }
+    protected override void OnProblemChanged() {
+      base.OnProblemChanged();
+      surrogateProblem.SetProblem(Problem);
+    }
+    #endregion
+
+  }
+}
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/new 2.txt
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/new 2.txt	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/new 2.txt	(revision 14893)
@@ -0,0 +1,2 @@
+IF EXIST "%ProjectDir%\Properties\AssemblyInfo.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Properties\AssemblyInfo.cs.frame" "%ProjectDir%\Properties\AssemblyInfo.cs"
+IF EXIST "%ProjectDir%\Plugin.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Plugin.cs.frame" "%ProjectDir%\Plugin.cs"
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.EGO-3.4.csproj.FileListAbsolute.txt
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.EGO-3.4.csproj.FileListAbsolute.txt	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.EGO-3.4.csproj.FileListAbsolute.txt	(revision 14893)
@@ -0,0 +1,5 @@
+C:\HL\trunk\sources\bin\HeuristicLab.Algorithms.EGO-3.4.dll
+C:\HL\trunk\sources\bin\HeuristicLab.Algorithms.EGO-3.4.pdb
+C:\HL\branches\EfficientGlobalOptimization\HeuristicLab.Algorithms.EGO\obj\Debug\HeuristicLab.Algorithms.EGO-3.4.dll
+C:\HL\branches\EfficientGlobalOptimization\HeuristicLab.Algorithms.EGO\obj\Debug\HeuristicLab.Algorithms.EGO-3.4.pdb
+C:\HL\branches\EfficientGlobalOptimization\HeuristicLab.Algorithms.EGO\obj\Debug\HeuristicLab.Algorithms.EGO-3.4.csprojResolveAssemblyReference.cache
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.EGO.csproj.FileListAbsolute.txt
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.EGO.csproj.FileListAbsolute.txt	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.EGO.csproj.FileListAbsolute.txt	(revision 14893)
@@ -0,0 +1,4 @@
+C:\HL\trunk\sources\bin\HeuristicLab.Algorithms.EGO.dll
+C:\HL\trunk\sources\bin\HeuristicLab.Algorithms.EGO.pdb
+C:\HL\branches\EfficientGlobalOptimization\HeuristicLab.Algorithms.EGO\obj\Debug\HeuristicLab.Algorithms.EGO.dll
+C:\HL\branches\EfficientGlobalOptimization\HeuristicLab.Algorithms.EGO\obj\Debug\HeuristicLab.Algorithms.EGO.pdb
Index: /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.SAPBA-3.4.csproj.FileListAbsolute.txt
===================================================================
--- /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.SAPBA-3.4.csproj.FileListAbsolute.txt	(revision 14893)
+++ /branches/SAPBA/HeuristicLab.Algorithms.SAPBA/obj/Debug/HeuristicLab.Algorithms.SAPBA-3.4.csproj.FileListAbsolute.txt	(revision 14893)
@@ -0,0 +1,5 @@
+C:\HL\trunk\sources\bin\HeuristicLab.Algorithms.SAPBA-3.4.dll
+C:\HL\trunk\sources\bin\HeuristicLab.Algorithms.SAPBA-3.4.pdb
+C:\HL\branches\SAPBA\HeuristicLab.Algorithms.SAPBA\obj\Debug\HeuristicLab.Algorithms.SAPBA-3.4.csprojResolveAssemblyReference.cache
+C:\HL\branches\SAPBA\HeuristicLab.Algorithms.SAPBA\obj\Debug\HeuristicLab.Algorithms.SAPBA-3.4.dll
+C:\HL\branches\SAPBA\HeuristicLab.Algorithms.SAPBA\obj\Debug\HeuristicLab.Algorithms.SAPBA-3.4.pdb
Index: /branches/SAPBA/PreBuildEvent.cmd
===================================================================
--- /branches/SAPBA/PreBuildEvent.cmd	(revision 14893)
+++ /branches/SAPBA/PreBuildEvent.cmd	(revision 14893)
@@ -0,0 +1,2 @@
+IF EXIST "%ProjectDir%\Properties\AssemblyInfo.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Properties\AssemblyInfo.cs.frame" "%ProjectDir%\Properties\AssemblyInfo.cs"
+IF EXIST "%ProjectDir%\Plugin.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Plugin.cs.frame" "%ProjectDir%\Plugin.cs"
