Index: branches/OptimizationNetworks/HeuristicLab.IntegratedMachineLearning.sln
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.IntegratedMachineLearning.sln	(revision 14671)
+++ branches/OptimizationNetworks/HeuristicLab.IntegratedMachineLearning.sln	(revision 14675)
@@ -42,3 +42,6 @@
 		HideSolutionNode = FALSE
 	EndGlobalSection
+	GlobalSection(Performance) = preSolution
+		HasPerformanceSessions = true
+	EndGlobalSection
 EndGlobal
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/FeatureSelectionNetwork.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/FeatureSelectionNetwork.cs	(revision 14671)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/FeatureSelectionNetwork.cs	(revision 14675)
@@ -69,6 +69,4 @@
 
       var regressionAlgorithm = CreateRegressionAlgorithm();
-      //TODO set empty regression problem
-
       RegressionAlgorithmNode = new OrchestratedAlgorithmNode("Regression");
       RegressionAlgorithmNode.Algorithm = regressionAlgorithm;
@@ -81,5 +79,4 @@
       var problem = new OrchestratedBinaryProblem(Orchestrator, 0, false);
       problem.Encoding.SolutionCreator = new RandomBinaryVectorCreator() { TrueProbability = new DoubleValue(0.2) };
-
 
       var osga = new OffspringSelectionGeneticAlgorithm();
@@ -126,5 +123,6 @@
       var msg = FeatureSelectionAlgorithmNode.OrchestrationPort.PrepareMessage();
       msg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Stop);
-      FeatureSelectionAlgorithmNode.OrchestrationPort.ReceiveMessage(msg, new CancellationToken()); ;
+      FeatureSelectionAlgorithmNode.OrchestrationPort.ReceiveMessage(msg, new CancellationToken());
+      RegressionAlgorithmNode.Algorithm.Runs.Clear();
     }
   }
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/FeatureSelectionOrchestrator.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/FeatureSelectionOrchestrator.cs	(revision 14671)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/FeatureSelectionOrchestrator.cs	(revision 14675)
@@ -93,9 +93,11 @@
 
     private void FeatureSelectionEvaluationPort_MessageReceived(IMessage evaluationMessage, CancellationToken token) {
+      var problemData = (IRegressionProblemData)RegressionProblemData.Clone();
       var binaryVector = (BinaryVector)evaluationMessage["BinaryVector"];
-      var problemData = (IRegressionProblemData)RegressionProblemData.Clone();
+      binaryVector.ElementNames = problemData.InputVariables.CheckedItems.Select(variable => variable.Value.Value);
 
       var allowedVariables = problemData.InputVariables.CheckedItems.Zip(binaryVector,
         (variable, allowed) => new { VariableName = variable.Value, Allowed = allowed });
+
       foreach (var allowedVariable in allowedVariables)
         problemData.InputVariables.SetItemCheckedState(allowedVariable.VariableName, allowedVariable.Allowed);
@@ -113,6 +115,40 @@
 
       var regressionSolution = results.Select(r => r.Value).OfType<IRegressionSolution>().First();
+
+      UpdatedResults(binaryVector, regressionSolution);
+
+
       double quality = regressionSolution.TestMeanAbsoluteError;
       evaluationMessage["Quality"] = new DoubleValue(quality);
+    }
+
+    private void UpdatedResults(BinaryVector binaryVector, IRegressionSolution solution) {
+      if (!Results.ContainsKey("Best Solution Vector")) {
+        Results.Add(new Result("Best Solution Vector", typeof(BinaryVector)));
+        //Results.Add(new Result("Best Solution Variables", typeof(DoubleArray)));
+        Results.Add(new Result("Best Symbolic Solution", typeof(IRegressionSolution)));
+      }
+
+      var previousBestVector = (BinaryVector)Results["Best Solution Vector"].Value;
+
+      //check if better vector has been found
+      if (previousBestVector != null && binaryVector.SequenceEqual(previousBestVector))
+        return;
+
+      Results["Best Solution Vector"].Value = binaryVector;
+      Results["Best Symbolic Solution"].Value = solution;
+
+      //var variableNames = solution.ProblemData.AllowedInputVariables;
+      //alglib.linearmodel lm = BuildModel(best, problemData);
+
+      //double[] coefficients = null;
+      //int nFeatures = -1;
+      //alglib.lrunpack(lm, out coefficients, out nFeatures);
+
+      //var doubleArray = new DoubleArray(coefficients.ToArray());
+      //doubleArray.ElementNames = variableNames;
+      //Results["Best Solution Variables"].Value = doubleArray;
+
+
     }
 
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/HeuristicLab.Networks.IntegratedOptimization.MachineLearning-3.3.csproj
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/HeuristicLab.Networks.IntegratedOptimization.MachineLearning-3.3.csproj	(revision 14671)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/HeuristicLab.Networks.IntegratedOptimization.MachineLearning-3.3.csproj	(revision 14675)
@@ -37,4 +37,9 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="ALGLIB-3.7.0, Version=3.7.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\ALGLIB-3.7.0.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="HeuristicLab.Algorithms.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/OrchestratedBinaryProblem.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/OrchestratedBinaryProblem.cs	(revision 14671)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.MachineLearning/OrchestratedBinaryProblem.cs	(revision 14675)
@@ -30,4 +30,5 @@
 namespace HeuristicLab.Networks.IntegratedOptimization.MachineLearning {
   [StorableClass]
+  [Creatable("Optimization Networks")]
   public sealed class OrchestratedBinaryProblem : SingleObjectiveBasicProblem<BinaryVectorEncoding> {
 
