Index: branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
===================================================================
--- branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 7845)
+++ branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 7850)
@@ -95,4 +95,5 @@
     <Reference Include="ALGLIB-3.5.0">
       <HintPath>..\..\..\..\trunk\sources\bin\ALGLIB-3.5.0.dll</HintPath>
+      <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Analysis-3.3">
@@ -135,4 +136,5 @@
       <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" />
     <Reference Include="HeuristicLab.Random-3.3">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
@@ -153,4 +155,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="SlidingWindow\OffspringSelectionSlidingWindowAnalyzer.cs" />
     <Compile Include="SlidingWindow\SlidingWindowData.cs" />
     <Compile Include="SlidingWindow\GenerationalSlidingWindowAnalyzer.cs" />
Index: branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Plugin.cs.frame
===================================================================
--- branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Plugin.cs.frame	(revision 7845)
+++ branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Plugin.cs.frame	(revision 7850)
@@ -41,4 +41,5 @@
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   [PluginDependency("HeuristicLab.Random", "3.3")]
   public class HeuristicLabProblemsDataAnalysisSymbolicPlugin : PluginBase {
Index: branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SlidingWindow/GenerationalSlidingWindowAnalyzer.cs
===================================================================
--- branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SlidingWindow/GenerationalSlidingWindowAnalyzer.cs	(revision 7845)
+++ branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SlidingWindow/GenerationalSlidingWindowAnalyzer.cs	(revision 7850)
@@ -72,6 +72,8 @@
       Parameters.Add(new LookupParameter<IntValue>(IterationsParameterName, ""));
       Parameters.Add(new ValueLookupParameter<IntValue>(MaximumIterationsParameterName, ""));
-      Parameters.Add(new FixedValueParameter<IntValue>(GenerationsIntervalParameterName, "", new IntValue(0)));
-      Parameters.Add(new FixedValueParameter<IntValue>(GenerationsIntervalStartParameterName, "", new IntValue(10)));
+      Parameters.Add(new FixedValueParameter<IntValue>(GenerationsIntervalParameterName, "", new IntValue(5)));
+      Parameters.Add(new FixedValueParameter<IntValue>(GenerationsIntervalStartParameterName, "", new IntValue(0)));
+
+      GenerationsIntervalStartParameter.Hidden = true;
     }
 
@@ -80,6 +82,6 @@
       var start = GenerationsIntervalStart.Value;
       var step = GenerationsInterval.Value;
+      if (iteration == 0) return false;
       if (iteration < start) return false;
-
       if ((iteration - start) % step == 0) return true;
 
Index: branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SlidingWindow/SlidingWindowAnalyzer.cs
===================================================================
--- branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SlidingWindow/SlidingWindowAnalyzer.cs	(revision 7845)
+++ branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SlidingWindow/SlidingWindowAnalyzer.cs	(revision 7850)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -35,5 +36,4 @@
     private const string ResultCollectionParameterName = "Results";
     private const string FitnessCalculationPartitionParameterName = "FitnessCalculationPartition";
-    private const string SlidingWindowParameterName = "Sliding Window";
     private const string SlidingWindowSizeParameterName = "Sliding Window Size";
     private const string SlidingWindowStepWidthParameterName = "Sliding Window Step Width";
@@ -52,7 +52,4 @@
     }
 
-    public IValueLookupParameter<IntRange> SlidingWindowParameter {
-      get { return (IValueLookupParameter<IntRange>)Parameters[SlidingWindowParameterName]; }
-    }
     public IFixedValueParameter<IntValue> SlidingWindowSizeParameter {
       get { return (IFixedValueParameter<IntValue>)Parameters[SlidingWindowSizeParameterName]; }
@@ -65,5 +62,4 @@
     #region properties
     public bool EnabledByDefault { get { return false; } }
-    public IntRange SlidingWindow { get { return SlidingWindowParameter.Value; } }
     public IntValue SlidingWindowSize { get { return SlidingWindowSizeParameter.Value; } }
     public IntValue SlidingWindowStepWidth { get { return SlidingWindowStepWidthParameter.Value; } }
@@ -77,7 +73,7 @@
 
     protected SlidingWindowAnalyzer() {
+      Parameters.Add(new LookupParameter<ResultCollection>(ResultCollectionParameterName, "The result collection to store the analysis results."));
       Parameters.Add(new ValueLookupParameter<T>(ProblemDataParameterName, "The problem data on which the symbolic data analysis solution should be evaluated."));
       Parameters.Add(new LookupParameter<IntRange>(FitnessCalculationPartitionParameterName, ""));
-      Parameters.Add(new ValueLookupParameter<IntRange>(SlidingWindowParameterName, ""));
       Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowSizeParameterName, "", new IntValue(1)));
       Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowStepWidthParameterName, "", new IntValue(1)));
@@ -85,17 +81,12 @@
 
     public override IOperation Apply() {
-      if (!ExecutionContext.Scope.Variables.ContainsKey(FitnessCalculationPartitionParameter.ActualName))
-        ExecutionContext.Scope.Variables.Add(new Core.Variable(FitnessCalculationPartitionParameter.ActualName, (IntRange)SlidingWindow.Clone()));
-
       if (CheckForUpdate()) {
         var fitnessPartition = FitnessCalculationPartitionParameter.ActualValue;
+        if (fitnessPartition.End - fitnessPartition.Start == SlidingWindowSize.Value)
+          fitnessPartition.Start += SlidingWindowStepWidth.Value;
 
         fitnessPartition.End += SlidingWindowStepWidth.Value;
-        if (fitnessPartition.End - fitnessPartition.Start > SlidingWindowStepWidth.Value)
+        if (fitnessPartition.End - fitnessPartition.Start > SlidingWindowSize.Value)
           fitnessPartition.End = fitnessPartition.Start + SlidingWindowSize.Value;
-
-        if (fitnessPartition.End - fitnessPartition.Start == SlidingWindowSize.Value) {
-          fitnessPartition.Start += SlidingWindowStepWidth.Value;
-        }
       }
 
@@ -104,7 +95,15 @@
       SlidingWindowData slidingWindowData;
       if (!results.ContainsKey(SlidingWindowDataResultName)) {
-        slidingWindowData = new SlidingWindowData(FitnessCalculationPartitionParameter.ActualValue, new double[10]);
+        string targetVariable;
+        var classificationProblemData = ProblemDataParameter.ActualValue as IClassificationProblemData;
+        var regressionProblemData = ProblemDataParameter.ActualValue as IRegressionProblemData;
+        if (classificationProblemData != null) targetVariable = classificationProblemData.TargetVariable;
+        else if (regressionProblemData != null) targetVariable = regressionProblemData.TargetVariable;
+        else throw new NotSupportedException();
+
+        var targetData = ProblemDataParameter.ActualValue.Dataset.GetDoubleValues(targetVariable);
+        slidingWindowData = new SlidingWindowData(FitnessCalculationPartitionParameter.ActualValue, targetData);
         results.Add(new Result(SlidingWindowDataResultName, slidingWindowData));
-      } else slidingWindowData = (SlidingWindowData)results[SlidingWindowDataResultName];
+      } else slidingWindowData = (SlidingWindowData)results[SlidingWindowDataResultName].Value;
 
       slidingWindowData.SlidingWindowPosition.Start = FitnessCalculationPartitionParameter.ActualValue.Start;
Index: branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
===================================================================
--- branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 7845)
+++ branches/Sliding Window GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 7850)
@@ -32,8 +32,10 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
   [StorableClass]
-  public abstract class SymbolicDataAnalysisProblem<T, U, V> : HeuristicOptimizationProblem<U, V>, IDataAnalysisProblem<T>, ISymbolicDataAnalysisProblem, IStorableContent
+  public abstract class SymbolicDataAnalysisProblem<T, U, V> : HeuristicOptimizationProblem<U, V>, IDataAnalysisProblem<T>, ISymbolicDataAnalysisProblem, IStorableContent,
+    IProblemInstanceConsumer<T>, IProblemInstanceExporter<T>
     where T : class, IDataAnalysisProblemData
     where U : class, ISymbolicDataAnalysisEvaluator<T>
@@ -204,4 +206,5 @@
       Operators.Add(new MinAverageMaxSymbolicExpressionTreeLengthAnalyzer());
       Operators.Add(new SymbolicExpressionTreeLengthAnalyzer());
+      Operators.Add(new GenerationalSlidingWindowAnalyzer<T>());
       ParameterizeOperators();
     }
@@ -318,7 +321,29 @@
         op.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
       }
-    }
-
-    public abstract void ImportProblemDataFromFile(string fileName);
+
+      foreach (var op in operators.OfType<SlidingWindowAnalyzer<T>>()) {
+        op.FitnessCalculationPartitionParameter.ActualName = FitnessCalculationPartitionParameter.Name;
+        op.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
+
+        var start = ProblemData.TrainingPartition.Start;
+        var end = ProblemData.TrainingPartition.End;
+        var size = (end - start) / 5;
+        op.SlidingWindowSize.Value = size;
+        op.SlidingWindowStepWidth.Value = size / 2;
+      }
+    }
+
+    #region Import & Export
+    public void Load(T data) {
+      Name = data.Name;
+      Description = data.Description;
+      ProblemData = data;
+      OnReset();
+    }
+
+    public T Export() {
+      return ProblemData;
+    }
+    #endregion
   }
 }
