Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/ActionMessage.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/ActionMessage.cs	(revision 14598)
+++ 	(revision )
@@ -1,43 +1,0 @@
-﻿#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.Core.Networks;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public abstract class ActionMessage : Message {
-    private const string SenderValueName = "Sender";
-    private const string ActionValueName = "Action";
-
-    public IMessagePort Sender {
-      get { return (IMessagePort)this[SenderValueName]; }
-    }
-
-    public MessageAction Action {
-      get { return ((EnumValue<MessageAction>)this[ActionValueName]).Value; }
-    }
-
-    public ActionMessage(IMessagePort sender, MessageAction action) {
-      values.Add(new MessageValue<IMessagePort>(SenderValueName, sender));
-      values.Add(new MessageValue<EnumValue<MessageAction>>(ActionValueName, new EnumValue<MessageAction>(action)));
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/HeuristicLab.Networks.IntegratedOptimization-3.3.csproj
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/HeuristicLab.Networks.IntegratedOptimization-3.3.csproj	(revision 14598)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/HeuristicLab.Networks.IntegratedOptimization-3.3.csproj	(revision 14601)
@@ -226,33 +226,17 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Problems\BinaryKnapsackProblem.cs" />
     <Compile Include="IOrchestratorNode.cs" />
     <Compile Include="OrchestratedAlgorithmNode.cs" />
-    <Compile Include="OrchestrationSystem.cs" />
+    <Compile Include="OrchestrationMessage.cs" />
     <Compile Include="OrchestratorNode.cs" />
-    <Compile Include="Problems\LootProfitProblem.cs" />
-    <Compile Include="Problems\TourProfitProblem.cs" />
-    <Compile Include="Problems\VariegationProblem.cs" />
-    <Compile Include="SolveResponseMessage.cs" />
-    <Compile Include="SolveRequestMessage.cs" />
-    <Compile Include="TtpImporter.cs" />
+    <Compile Include="VariegationProblem.cs" />
     <Compile Include="TtpNetwork.cs" />
     <Compile Include="TtpNetwork2.cs" />
-    <Compile Include="TtpNetwork3.cs" />
     <Compile Include="TtpNetwork4.cs" />
-    <Compile Include="TtpNetwork5.cs" />
-    <Compile Include="TtpOrchestratorNode3.cs" />
     <Compile Include="TtpOrchestratorNode1.cs" />
     <Compile Include="TtpOrchestratorNode2.cs" />
     <Compile Include="TtpOrchestratorNode4.cs" />
-    <Compile Include="TtpOrchestratorNode5.cs" />
-    <Compile Include="TtpUtils.cs" />
-    <Compile Include="Utils.cs" />
     <None Include="Plugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.cs.frame" />
-    <Compile Include="ActionMessage.cs" />
-    <Compile Include="InitializeResponseMessage.cs" />
-    <Compile Include="InitializeRequestMessage.cs" />
-    <Compile Include="MessageAction.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/InitializeRequestMessage.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/InitializeRequestMessage.cs	(revision 14598)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿#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.Core.Networks;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public class InitializeRequestMessage : ActionMessage {
-    public InitializeRequestMessage(IMessagePort sender) : base(sender, MessageAction.InitializeRequest) { }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/InitializeResponseMessage.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/InitializeResponseMessage.cs	(revision 14598)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#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.Core.Networks;
-using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public class InitializeResponseMessage : ActionMessage {
-    private const string ProblemValueName = "Problem";
-
-    public IProblem Problem {
-      get { return ((IProblem)this[ProblemValueName]); }
-    }
-
-    public InitializeResponseMessage(IMessagePort sender, IProblem problem) : base(sender, MessageAction.InitializeResponse) {
-      values.Add(Utils.CreateMessageValue(ProblemValueName, problem));
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/MessageAction.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/MessageAction.cs	(revision 14598)
+++ 	(revision )
@@ -1,29 +1,0 @@
-﻿#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
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public enum MessageAction {
-    InitializeRequest,
-    InitializeResponse,
-    SolveRequest,
-    SolveResponse
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestratedAlgorithmNode.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestratedAlgorithmNode.cs	(revision 14598)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestratedAlgorithmNode.cs	(revision 14601)
@@ -108,5 +108,6 @@
                     foreach (var analyzer in multiAnalyzer.Operators) {
                       bool checkedState;
-                      checkedStates.TryGetValue(analyzer.GetType(), out checkedState);
+                      if (!checkedStates.TryGetValue(analyzer.GetType(), out checkedState))
+                        checkedState = analyzer.EnabledByDefault;
                       multiAnalyzer.Operators.SetItemCheckedState(analyzer, checkedState);
                     }
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestrationMessage.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestrationMessage.cs	(revision 14601)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestrationMessage.cs	(revision 14601)
@@ -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;
+
+namespace HeuristicLab.Networks.IntegratedOptimization {
+  [Flags]
+  public enum OrchestrationMessage {
+    Unknown = 0x0,
+    Prepare = 0x1,
+    Start = 0x2,
+    Pause = 0x4,
+    Stop = 0x8,
+    QualityAdaption = 0x100,
+  }
+}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestrationSystem.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/OrchestrationSystem.cs	(revision 14598)
+++ 	(revision )
@@ -1,34 +1,0 @@
-﻿#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;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  [Flags]
-  public enum OrchestrationMessage {
-    Unknown = 0x0,
-    Prepare = 0x1,
-    Start = 0x2,
-    Pause = 0x4,
-    Stop = 0x8,
-    QualityAdaption = 0x100,
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/SolveRequestMessage.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/SolveRequestMessage.cs	(revision 14598)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#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.Core.Networks;
-using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public class SolveRequestMessage : ActionMessage {
-    private const string ProblemValueName = "Problem";
-
-    public IProblem Problem {
-      get { return ((IProblem)this[ProblemValueName]); }
-    }
-
-    public SolveRequestMessage(IMessagePort sender, IProblem problem) : base(sender, MessageAction.SolveRequest) {
-      values.Add(Utils.CreateMessageValue(ProblemValueName, problem));
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/SolveResponseMessage.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/SolveResponseMessage.cs	(revision 14598)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#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.Core.Networks;
-using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public class SolveResponseMessage : ActionMessage {
-    private const string ResultsValueName = "Results";
-
-    public ResultCollection Problem {
-      get { return ((ResultCollection)this[ResultsValueName]); }
-    }
-
-    public SolveResponseMessage(IMessagePort sender, ResultCollection results) : base(sender, MessageAction.SolveResponse) {
-      values.Add(Utils.CreateMessageValue(ResultsValueName, results));
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpImporter.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpImporter.cs	(revision 14598)
+++ 	(revision )
@@ -1,64 +1,0 @@
-﻿using System.IO;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public static class TtpImporter {
-    public static void ImportTtpInstance(string filePath, out DoubleMatrix tspCoordinates,
-                                                   out IntValue kspCapacity,
-                                                   out IntArray kspItemValues,
-                                                   out IntArray kspItemWeights,
-                                                   out IntArray ttpAvailability,
-                                                   out DoubleValue ttpMinSpeed,
-                                                   out DoubleValue ttpMaxSpeed,
-                                                   out DoubleValue ttpRentingRatio) {
-      int nrOfCities = 0, nrOfItems = 0, capacity = 0;
-      double minSpeed = 0.0, maxSpeed = 0.0, rentingRatio = 0.0;
-
-      using (var fs = new FileStream(filePath, FileMode.Open))
-      using (var sr = new StreamReader(fs)) {
-        string input;
-        while ((input = sr.ReadLine()) != null && !input.Contains("NODE_COORD_SECTION")) {
-          if (input.Contains("DIMENSION:")) int.TryParse(input.Replace("DIMENSION:", string.Empty), out nrOfCities);
-          if (input.Contains("NUMBER OF ITEMS:")) int.TryParse(input.Replace("NUMBER OF ITEMS:", string.Empty), out nrOfItems);
-          if (input.Contains("CAPACITY OF KNAPSACK:")) int.TryParse(input.Replace("CAPACITY OF KNAPSACK:", string.Empty), out capacity);
-          if (input.Contains("MIN SPEED:")) double.TryParse(input.Replace("MIN SPEED:", string.Empty), out minSpeed);
-          if (input.Contains("MAX SPEED:")) double.TryParse(input.Replace("MAX SPEED:", string.Empty), out maxSpeed);
-          if (input.Contains("RENTING RATIO:")) double.TryParse(input.Replace("RENTING RATIO:", string.Empty), out rentingRatio);
-        }
-
-        tspCoordinates = new DoubleMatrix(nrOfCities, 2);
-        kspItemValues = new IntArray(nrOfItems);
-        kspItemWeights = new IntArray(nrOfItems);
-        ttpAvailability = new IntArray(nrOfItems);
-
-        // read cities
-        while ((input = sr.ReadLine()) != null && !input.Contains("ITEMS SECTION")) {
-          string[] data = input.Split('\t');
-          int index; double x, y;
-          int.TryParse(data[0], out index);
-          double.TryParse(data[1], out x);
-          double.TryParse(data[2], out y);
-          tspCoordinates[index - 1, 0] = x;
-          tspCoordinates[index - 1, 1] = y;
-        }
-        // read items
-        while ((input = sr.ReadLine()) != null) {
-          string[] data = input.Split('\t');
-          int index, value, weight, city;
-          int.TryParse(data[0], out index);
-          int.TryParse(data[1], out value);
-          int.TryParse(data[2], out weight);
-          int.TryParse(data[3], out city);
-          kspItemValues[index - 1] = value;
-          kspItemWeights[index - 1] = weight;
-          ttpAvailability[index - 1] = city - 1;
-        }
-      }
-
-      kspCapacity = new IntValue(capacity);
-      ttpMinSpeed = new DoubleValue(minSpeed);
-      ttpMaxSpeed = new DoubleValue(maxSpeed);
-      ttpRentingRatio = new DoubleValue(rentingRatio);
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpNetwork3.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpNetwork3.cs	(revision 14598)
+++ 	(revision )
@@ -1,84 +1,0 @@
-﻿//using HeuristicLab.Algorithms.CMAEvolutionStrategy;
-//using HeuristicLab.Algorithms.LocalSearch;
-//using HeuristicLab.Algorithms.ParameterlessPopulationPyramid;
-//using HeuristicLab.Common;
-//using HeuristicLab.Core;
-//using HeuristicLab.Core.Networks;
-//using HeuristicLab.Data;
-//using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-//namespace HeuristicLab.Networks.IntegratedOptimization {
-//  [Item("TtpNetwork3", "An optimization network for the TTP.")]
-//  [Creatable("Optimization Networks")]
-//  [StorableClass]
-//  // standard ttp
-//  // cmaes variegates ksp values and tsp coordinates
-//  // 1) init cmaes (length = ksp.values.length)
-//  // 2) start cmaes
-//  // 3) evaluate vector as follows:
-//  // 4) change ksp values and tsp coordinates (mult by factor in vector)
-//  // 5) best ksp
-//  // 6) best tsp
-//  // 7) return ttp quality
-//  public sealed class TtpNetwork3 : Network {
-//    [StorableConstructor]
-//    private TtpNetwork3(bool deserializing) : base(deserializing) { }
-//    private TtpNetwork3(TtpNetwork3 original, Cloner cloner) : base(original, cloner) { }
-//    public TtpNetwork3() : base("TtpNetwork3") {
-//      var orchestratorNode = new TtpOrchestratorNode3();
-//      Nodes.Add(orchestratorNode);
-
-//      var metaSolverNode = new OrchestratedAlgorithmNode("MetaSolver");
-//      var cmaes = new CMAEvolutionStrategy();
-//      cmaes.MaximumEvaluatedSolutions = 3000;
-//      cmaes.Engine = new ParallelEngine.ParallelEngine();
-//      metaSolverNode.Algorithm = cmaes;
-//      orchestratorNode.MetaSolverOrchestrationPort.ConnectedPort = metaSolverNode.OrchestrationPort;
-//      Nodes.Add(metaSolverNode);
-
-//      var tspSolverNode = new OrchestratedAlgorithmNode("TspSolver") { CloneAlgorithm = true };
-//      var ls = new LocalSearch();
-//      ls.Problem = orchestratorNode.TspParameter.Value;
-//      ls.MaximumIterations.Value = 100;
-//      tspSolverNode.Algorithm = ls;
-//      orchestratorNode.TspSolverOrchestrationPort.ConnectedPort = tspSolverNode.OrchestrationPort;
-//      Nodes.Add(tspSolverNode);
-
-//      var kspSolverNode = new OrchestratedAlgorithmNode("KspSolver") { CloneAlgorithm = true };
-//      var p3 = new ParameterlessPopulationPyramid();
-//      p3.Problem = orchestratorNode.KspParameter.Value;
-//      p3.MaximumRuntime = 3;
-//      kspSolverNode.Algorithm = p3;
-//      orchestratorNode.KspSolverOrchestrationPort.ConnectedPort = kspSolverNode.OrchestrationPort;
-//      Nodes.Add(kspSolverNode);
-
-//      #region Import
-//      DoubleMatrix tspCoordinates;
-//      IntValue kspCapacity; IntArray kspItemWeights; IntArray kspItemValues;
-//      IntArray ttpAvailability; DoubleValue ttpMinSpeed; DoubleValue ttpMaxSpeed; DoubleValue ttpRentingRatio;
-//      TtpImporter.ImportTtpInstance(@"ttp-instances\berlin52-ttp\berlin52_n51_uncorr_01.ttp",
-//          out tspCoordinates,
-//          out kspCapacity, out kspItemValues, out kspItemWeights,
-//          out ttpAvailability, out ttpMinSpeed, out ttpMaxSpeed, out ttpRentingRatio);
-
-//      var tsp = orchestratorNode.TspParameter.Value;
-//      tsp.Coordinates = tspCoordinates;
-
-//      var ksp = orchestratorNode.KspParameter.Value;
-//      ksp.KnapsackCapacity = kspCapacity;
-//      ksp.Encoding.Length = kspItemValues.Length;
-//      ksp.Values = kspItemValues;
-//      ksp.Weights = kspItemWeights;
-
-//      orchestratorNode.AvailabilityParameter.Value = ttpAvailability;
-//      orchestratorNode.MinSpeedParameter.Value = ttpMinSpeed;
-//      orchestratorNode.MaxSpeedParameter.Value = ttpMaxSpeed;
-//      orchestratorNode.RentingRatioParameter.Value = ttpRentingRatio;
-//      #endregion
-//    }
-
-//    public override IDeepCloneable Clone(Cloner cloner) {
-//      return new TtpNetwork3(this, cloner);
-//    }
-//  }
-//}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpNetwork5.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpNetwork5.cs	(revision 14598)
+++ 	(revision )
@@ -1,210 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using HeuristicLab.Algorithms.CMAEvolutionStrategy;
-using HeuristicLab.Algorithms.LocalSearch;
-using HeuristicLab.Algorithms.ParameterlessPopulationPyramid;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Networks;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  [Item("TtpNetwork5", "An optimization network for the TTP.")]
-  [Creatable("Optimization Networks")]
-  [StorableClass]
-  // standard ttp
-  // cmaes variegates ksp values (factors)
-  // 1) init cmaes (length = ksp.values.length)
-  // 2) start cmaes
-  // 3) evaluate vector as follows:
-  // 4) change ksp values (mult by factor in vector)
-  // 5) best ksp
-  // 6) best tsp for ksp selection
-  // 7) return ttp quality
-  public sealed class TtpNetwork5 : Network, IOptimizer {
-    #region Nodes
-    public TtpOrchestratorNode5 Orchestrator {
-      get { return (TtpOrchestratorNode5)Nodes["Orchestrator"]; }
-    }
-
-    public OrchestratedAlgorithmNode MetaSolver {
-      get { return (OrchestratedAlgorithmNode)Nodes["MetaSolver"]; }
-    }
-
-    public OrchestratedAlgorithmNode TspSolver {
-      get { return (OrchestratedAlgorithmNode)Nodes["TspSolver"]; }
-    }
-
-    public OrchestratedAlgorithmNode KspSolver {
-      get { return (OrchestratedAlgorithmNode)Nodes["KspSolver"]; }
-    }
-    #endregion
-
-    [StorableConstructor]
-    private TtpNetwork5(bool deserializing) : base(deserializing) { }
-    private TtpNetwork5(TtpNetwork5 original, Cloner cloner) : base(original, cloner) {
-      RegisterEvents();
-    }
-
-    private void RegisterEvents() {
-      MetaSolver.Algorithm.ExecutionStateChanged += OnExecutionStateChanged;
-      MetaSolver.Algorithm.ExecutionTimeChanged += OnExecutionTimeChanged;
-      MetaSolver.Algorithm.Prepared += OnPrepared;
-      MetaSolver.Algorithm.Started += OnStarted;
-      MetaSolver.Algorithm.Paused += OnPaused;
-      MetaSolver.Algorithm.Stopped += OnStopped;
-      MetaSolver.Algorithm.ExceptionOccurred += OnExceptionOccurred;
-    }
-
-    public TtpNetwork5() : base("TtpNetwork5") {
-      var orchestratorNode = new TtpOrchestratorNode5("Orchestrator");
-      Nodes.Add(orchestratorNode);
-
-      var metaSolverNode = new OrchestratedAlgorithmNode("MetaSolver");
-      var cmaes = new CMAEvolutionStrategy();
-      cmaes.Problem = new VariegationProblem();
-      cmaes.MaximumGenerations = 80;
-      metaSolverNode.Algorithm = cmaes;
-      orchestratorNode.MetaSolverOrchestrationPort.ConnectedPort = metaSolverNode.OrchestrationPort;
-      Nodes.Add(metaSolverNode);
-
-      //var tspSolverNode = new OrchestratedAlgorithmNode("TspSolver");
-      //var osga = new OffspringSelectionGeneticAlgorithm();
-      //osga.Problem = new TourProfitProblem();
-      //osga.ComparisonFactorLowerBound.Value = 1.0;
-      //osga.ComparisonFactorModifier = null;
-      //osga.ComparisonFactorUpperBound.Value = 1.0;
-      //var crossover = (MultiPermutationCrossover)(osga.Crossover = osga.CrossoverParameter.ValidValues.First(x => x is MultiPermutationCrossover));
-      //foreach (var c in crossover.Operators)
-      //  crossover.Operators.SetItemCheckedState(c, c is CosaCrossover || c is OrderCrossover2 || c is PartiallyMatchedCrossover);
-      //osga.MaximumSelectionPressure.Value = 200;
-      //osga.Mutator = osga.MutatorParameter.ValidValues.First(x => x is MultiPermutationManipulator);
-      //osga.PopulationSize.Value = 200;
-      //osga.Selector = osga.SelectorParameter.ValidValues.First(x => x is RandomSelector);
-      //tspSolverNode.Algorithm = osga;
-      //orchestratorNode.TspSolverOrchestrationPort.ConnectedPort = tspSolverNode.OrchestrationPort;
-      //Nodes.Add(tspSolverNode);
-
-      var tspSolverNode = new OrchestratedAlgorithmNode("TspSolver");
-      var ls = new LocalSearch();
-      ls.Problem = new TourProfitProblem();
-      ls.MaximumIterations.Value = 100;
-      ls.SampleSize.Value = 2000;
-      tspSolverNode.Algorithm = ls;
-      orchestratorNode.TspSolverOrchestrationPort.ConnectedPort = tspSolverNode.OrchestrationPort;
-      Nodes.Add(tspSolverNode);
-
-      var kspSolverNode = new OrchestratedAlgorithmNode("KspSolver");
-      var p3 = new ParameterlessPopulationPyramid();
-      p3.Problem = orchestratorNode.KspParameter.Value;
-      p3.MaximumRuntime = 3;
-      kspSolverNode.Algorithm = p3;
-      orchestratorNode.KspSolverOrchestrationPort.ConnectedPort = kspSolverNode.OrchestrationPort;
-      Nodes.Add(kspSolverNode);
-
-      #region Import
-      DoubleMatrix tspCoordinates;
-      IntValue kspCapacity; IntArray kspItemWeights; IntArray kspItemValues;
-      IntArray ttpAvailability; DoubleValue ttpMinSpeed; DoubleValue ttpMaxSpeed; DoubleValue ttpRentingRatio;
-      TtpImporter.ImportTtpInstance(@"ttp-instances\berlin52-ttp\berlin52_n51_uncorr-similar-weights_05.ttp",
-          out tspCoordinates,
-          out kspCapacity, out kspItemValues, out kspItemWeights,
-          out ttpAvailability, out ttpMinSpeed, out ttpMaxSpeed, out ttpRentingRatio);
-
-      var tsp = orchestratorNode.TspParameter.Value;
-      tsp.Coordinates = tspCoordinates;
-
-      var ksp = orchestratorNode.KspParameter.Value;
-      ksp.KnapsackCapacity = kspCapacity;
-      ksp.Encoding.Length = kspItemValues.Length;
-      ksp.Values = kspItemValues;
-      ksp.Weights = kspItemWeights;
-
-      orchestratorNode.AvailabilityParameter.Value = ttpAvailability;
-      orchestratorNode.MinSpeedParameter.Value = ttpMinSpeed;
-      orchestratorNode.MaxSpeedParameter.Value = ttpMaxSpeed;
-      orchestratorNode.RentingRatioParameter.Value = ttpRentingRatio;
-      #endregion
-
-      RegisterEvents();
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new TtpNetwork5(this, cloner);
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterEvents();
-    }
-
-    #region IOptimizer Members
-    public RunCollection Runs { get { return MetaSolver.Algorithm.Runs; } }
-    public IEnumerable<IOptimizer> NestedOptimizers { get { yield break; } }
-    public ExecutionState ExecutionState { get { return MetaSolver.Algorithm.ExecutionState; } }
-    public TimeSpan ExecutionTime { get { return MetaSolver.Algorithm.ExecutionTime; } }
-
-    public void Prepare(bool clearRuns) { Prepare(); }
-    public void Prepare() { Orchestrator.Prepare(); }
-    public void Start() {
-      if (MetaSolver.Algorithm.ExecutionState == ExecutionState.Prepared)
-        Orchestrator.Prepare();
-      Orchestrator.StartAsync();
-    }
-    public void Pause() { Orchestrator.Pause(); }
-    public void Stop() { Orchestrator.Stop(); }
-    #endregion
-
-    private void OnExecutionStateChanged(object sender, EventArgs e) { OnExecutionStateChanged(); }
-    private void OnExecutionTimeChanged(object sender, EventArgs e) { OnExecutionTimeChanged(); }
-    private void OnPrepared(object sender, EventArgs e) { OnPrepared(); }
-    private void OnStarted(object sender, EventArgs e) { OnStarted(); }
-    private void OnPaused(object sender, EventArgs e) { OnPaused(); }
-    private void OnStopped(object sender, EventArgs e) { OnStopped(); }
-    private void OnExceptionOccurred(object sender, EventArgs<Exception> e) { OnExceptionOccurred(e.Value); }
-
-    public event EventHandler ExecutionStateChanged;
-    private void OnExecutionStateChanged() {
-      var handler = ExecutionStateChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler ExecutionTimeChanged;
-    private void OnExecutionTimeChanged() {
-      var handler = ExecutionTimeChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Prepared;
-    private void OnPrepared() {
-      var handler = Prepared;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Started;
-    private void OnStarted() {
-      var handler = Started;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Paused;
-    private void OnPaused() {
-      var handler = Paused;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Stopped;
-    private void OnStopped() {
-      var handler = Stopped;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
-    private void OnExceptionOccurred(Exception exception) {
-      var handler = ExceptionOccurred;
-      if (handler != null) handler(this, new EventArgs<Exception>(exception));
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpOrchestratorNode3.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpOrchestratorNode3.cs	(revision 14598)
+++ 	(revision )
@@ -1,384 +1,0 @@
-﻿//using System;
-//using System.Collections.Concurrent;
-//using System.Collections.Generic;
-//using System.Linq;
-//using System.Threading;
-//using HeuristicLab.Common;
-//using HeuristicLab.Core;
-//using HeuristicLab.Core.Networks;
-//using HeuristicLab.Data;
-//using HeuristicLab.Encodings.BinaryVectorEncoding;
-//using HeuristicLab.Encodings.PermutationEncoding;
-//using HeuristicLab.Encodings.RealVectorEncoding;
-//using HeuristicLab.Operators;
-//using HeuristicLab.Optimization;
-//using HeuristicLab.Parameters;
-//using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-//using HeuristicLab.Problems.Knapsack;
-//using HeuristicLab.Problems.TravelingSalesman;
-
-//namespace HeuristicLab.Networks.IntegratedOptimization {
-//  [Item("TtpOrchestratorNode3", "An abstract base class for an orchestrator node for the TTP.")]
-//  [StorableClass]
-//  public sealed class TtpOrchestratorNode3 : OrchestratorNode {
-//    #region Constants
-//    private const string TspParameterName = "TSP";
-//    private const string KspParameterName = "KSP";
-//    private const string AvailabilityParameterName = "Availability";
-//    private const string MinSpeedParameterName = "MinSpeed";
-//    private const string MaxSpeedParameterName = "MaxSpeed";
-//    private const string RentingRatioParameterName = "RentingRatio";
-//    private const string IterationsParameterName = "Iterations";
-//    private const string MetaSolverName = "MetaSolver";
-//    private const string TspSolverName = "TspSolver";
-//    private const string KspSolverName = "KspSolver";
-//    private const string TspResultsResultName = "TspResults";
-//    private const string KspResultsResultName = "KspResults";
-//    private const string TtpResultsResultName = "TtpResults";
-//    #endregion
-
-//    #region Thread Results
-//    private object locker = new object();
-//    private ConcurrentDictionary<int, ResultCollection> tspThreadResults = new ConcurrentDictionary<int, ResultCollection>();
-//    private ConcurrentDictionary<int, ResultCollection> kspThreadResults = new ConcurrentDictionary<int, ResultCollection>();
-//    #endregion
-
-//    #region Parameters
-//    public IValueParameter<IntValue> IterationsParameter {
-//      get { return (IValueParameter<IntValue>)Parameters[IterationsParameterName]; }
-//    }
-
-//    public IValueParameter<TravelingSalesmanProblem> TspParameter {
-//      get { return (IValueParameter<TravelingSalesmanProblem>)Parameters[TspParameterName]; }
-//    }
-
-//    public IValueParameter<BinaryKnapsackProblem> KspParameter {
-//      get { return (IValueParameter<BinaryKnapsackProblem>)Parameters[KspParameterName]; }
-//    }
-
-//    public IValueParameter<IntArray> AvailabilityParameter {
-//      get { return (IValueParameter<IntArray>)Parameters[AvailabilityParameterName]; }
-//    }
-
-//    public IValueParameter<DoubleValue> MinSpeedParameter {
-//      get { return (IValueParameter<DoubleValue>)Parameters[MinSpeedParameterName]; }
-//    }
-
-//    public IValueParameter<DoubleValue> MaxSpeedParameter {
-//      get { return (IValueParameter<DoubleValue>)Parameters[MaxSpeedParameterName]; }
-//    }
-
-//    public IValueParameter<DoubleValue> RentingRatioParameter {
-//      get { return (IValueParameter<DoubleValue>)Parameters[RentingRatioParameterName]; }
-//    }
-//    #endregion
-
-//    #region Ports
-//    public IMessagePort MetaSolverOrchestrationPort {
-//      get { return (IMessagePort)Ports[MetaSolverName + OrchestrationPortNameSuffix]; }
-//    }
-
-//    public IMessagePort MetaSolverEvaluationPort {
-//      get { return (IMessagePort)Ports[MetaSolverName + EvaluationPortNameSuffix]; }
-//    }
-
-//    public IMessagePort TspSolverOrchestrationPort {
-//      get { return (IMessagePort)Ports[TspSolverName + OrchestrationPortNameSuffix]; }
-//    }
-
-//    public IMessagePort TspSolverEvaluationPort {
-//      get { return (IMessagePort)Ports[TspSolverName + EvaluationPortNameSuffix]; }
-//    }
-
-//    public IMessagePort KspSolverOrchestrationPort {
-//      get { return (IMessagePort)Ports[KspSolverName + OrchestrationPortNameSuffix]; }
-//    }
-
-//    public IMessagePort KspSolverEvaluationPort {
-//      get { return (IMessagePort)Ports[KspSolverName + EvaluationPortNameSuffix]; }
-//    }
-//    #endregion
-
-//    #region Results
-//    public ItemList<ResultCollection> TspResults {
-//      get { return (ItemList<ResultCollection>)Results[TspResultsResultName].Value; }
-//    }
-
-//    public ItemList<ResultCollection> KspResults {
-//      get { return (ItemList<ResultCollection>)Results[KspResultsResultName].Value; }
-//    }
-
-//    public ItemList<ResultCollection> TtpResults {
-//      get { return (ItemList<ResultCollection>)Results[TtpResultsResultName].Value; }
-//    }
-//    #endregion
-
-//    [StorableConstructor]
-//    private TtpOrchestratorNode3(bool deserializing) : base(deserializing) { }
-//    private TtpOrchestratorNode3(TtpOrchestratorNode3 original, Cloner cloner) : base(original, cloner) { }
-//    public TtpOrchestratorNode3() : this("TtpOrchestratorNode3") { }
-//    public TtpOrchestratorNode3(string name) : base(name) {
-//      #region Configure Parameters
-//      Parameters.Add(new ValueParameter<IntValue>(IterationsParameterName, new IntValue(20)));
-//      Parameters.Add(new ValueParameter<TravelingSalesmanProblem>(TspParameterName, new TravelingSalesmanProblem()));
-//      Parameters.Add(new ValueParameter<BinaryKnapsackProblem>(KspParameterName, new BinaryKnapsackProblem()));
-//      Parameters.Add(new ValueParameter<IntArray>(AvailabilityParameterName));
-//      Parameters.Add(new ValueParameter<DoubleValue>(MinSpeedParameterName, new DoubleValue(0.1)));
-//      Parameters.Add(new ValueParameter<DoubleValue>(MaxSpeedParameterName, new DoubleValue(1.0)));
-//      Parameters.Add(new ValueParameter<DoubleValue>(RentingRatioParameterName, new DoubleValue(0.5)));
-//      #endregion
-
-//      #region Configure Ports
-//      AddOrchestrationPort<VariegationProblem>(MetaSolverName);
-//      AddEvaluationPort<RealVector>(MetaSolverName, "RealVector", "Quality");
-//      AddOrchestrationPort<TravelingSalesmanProblem>(TspSolverName);
-//      AddEvaluationPort<Permutation>(TspSolverName, "TSPTour", "TSPTourLength");
-//      AddOrchestrationPort<BinaryKnapsackProblem>(KspSolverName);
-//      AddEvaluationPort<BinaryVector>(KspSolverName, "KnapsackSolution", "Quality");
-
-//      MetaSolverOrchestrationPort.ConnectedPortChanged += MetaSolverOrchestrationPort_ConnectedPortChanged;
-//      TspSolverOrchestrationPort.ConnectedPortChanged += TspSolverOrchestrationPort_ConnectedPortChanged;
-//      KspSolverOrchestrationPort.ConnectedPortChanged += KspSolverOrchestrationPort_ConnectedPortChanged;
-//      #endregion
-//    }
-
-//    public override IDeepCloneable Clone(Cloner cloner) {
-//      return new TtpOrchestratorNode3(this, cloner);
-//    }
-
-//    public override void Prepare() {
-//      tspThreadResults.Clear();
-//      kspThreadResults.Clear();
-//      Results.Clear();
-//      Results.Add(new Result(TspResultsResultName, new ItemList<ResultCollection>()));
-//      Results.Add(new Result(KspResultsResultName, new ItemList<ResultCollection>()));
-//      Results.Add(new Result(TtpResultsResultName, new ItemList<ResultCollection>()));
-//    }
-
-//    public override void Start() {
-//      var metaMsg = MetaSolverOrchestrationPort.PrepareMessage();
-//      metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.QualityAdaption);
-//      var problem = new VariegationProblem();
-//      problem.Encoding.Length = KspParameter.Value.Length + TspParameter.Value.Coordinates.Rows * 2;
-//      problem.Encoding.Bounds = new DoubleMatrix(new[,] { { -1.0, 1.0 } });
-//      metaMsg["Problem"] = problem;
-//      MetaSolverOrchestrationPort.SendMessage(metaMsg);
-//    }
-
-//    public override void Pause() {
-//      throw new NotImplementedException();
-//    }
-
-//    public override void Stop() {
-//      throw new NotImplementedException();
-//    }
-
-//    protected override void ProcessMessage(IMessage message, IMessagePort port, CancellationToken token) {
-//      var messageActions = new Dictionary<IMessagePort, Action<IMessage>>();
-//      messageActions.Add(MetaSolverOrchestrationPort, MetaSolverOrchestrationPortMessage);
-//      messageActions.Add(MetaSolverEvaluationPort, MetaSolverEvaluationPortMessage);
-//      messageActions.Add(TspSolverOrchestrationPort, TspSolverOrchestrationPortMessage);
-//      messageActions.Add(TspSolverEvaluationPort, TspSolverEvaluationPortMessage);
-//      messageActions.Add(KspSolverOrchestrationPort, KspSolverOrchestrationPortMessage);
-//      messageActions.Add(KspSolverEvaluationPort, KspSolverEvaluationPortMessage);
-
-//      messageActions[port](message);
-
-//      base.ProcessMessage(message, port, token);
-//    }
-
-//    #region MetaSolver Message Handling
-//    private void MetaSolverOrchestrationPortMessage(IMessage message) { }
-
-//    private void MetaSolverEvaluationPortMessage(IMessage message) {
-//      var factors = (RealVector)message["RealVector"];
-//      int fi = 0;
-
-//      var ksp = (BinaryKnapsackProblem)KspParameter.Value.Clone();
-//      while (fi < ksp.Values.Length) {
-//        ksp.Values[fi] = (int)Math.Ceiling(ksp.Values[fi] * factors[fi]);
-//        ++fi;
-//      }
-
-//      var kspMsg = KspSolverOrchestrationPort.PrepareMessage();
-//      kspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Start);
-//      kspMsg["Problem"] = ksp;
-//      KspSolverOrchestrationPort.SendMessage(kspMsg);
-
-//      var kspResults = kspThreadResults[Thread.CurrentThread.ManagedThreadId];
-//      var bestKspSolution = (BinaryVector)kspResults["Best Solution"].Value;
-//      var kspCapacity = (IntValue)KspParameter.Value.KnapsackCapacity.Clone();
-//      var kspPenalty = new DoubleValue(0.0);
-//      var kspWeights = (IntArray)KspParameter.Value.Weights.Clone();
-//      var kspValues = (IntArray)KspParameter.Value.Values.Clone();
-//      var bestKspQuality = KnapsackEvaluator.Apply(bestKspSolution, kspCapacity, kspPenalty, kspWeights, kspValues).Quality;
-//      var loot = new KnapsackSolution(bestKspSolution, bestKspQuality, kspCapacity, kspWeights, kspValues);
-//      kspResults.Add(new Result("Best KSP Solution", loot));
-
-//      var tsp = (TravelingSalesmanProblem)TspParameter.Value.Clone();
-//      for (int j = 0; j < tsp.Coordinates.Rows; j++) {
-//        tsp.Coordinates[j, 0] = (int)Math.Ceiling(tsp.Coordinates[j, 0] * factors[fi + j * 2]);
-//        tsp.Coordinates[j, 1] = (int)Math.Ceiling(tsp.Coordinates[j, 1] * factors[fi + j * 2 + 1]);
-//      }
-
-//      var tspMsg = TspSolverOrchestrationPort.PrepareMessage();
-//      tspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Start);
-//      tspMsg["Problem"] = tsp;
-//      TspSolverOrchestrationPort.SendMessage(tspMsg);
-
-//      var tspResults = tspThreadResults[Thread.CurrentThread.ManagedThreadId];
-//      var tour = (PathTSPTour)tspResults["Best TSP Solution"].Value;
-//      tour.Coordinates = (DoubleMatrix)TspParameter.Value.Coordinates.Clone();
-//      tour.Quality.Value = TSPCoordinatesPathEvaluator.Apply(new TSPEuclideanPathEvaluator(), tour.Coordinates, tour.Permutation);
-
-//      #region Analyze
-//      double objectiveValue = EvaluateTtp(TspParameter.Value, tour.Permutation.ToArray(), KspParameter.Value, loot.BinaryVector.ToArray());
-//      ((DoubleValue)message["Quality"]).Value = objectiveValue;
-
-//      var ttpResults = new ResultCollection();
-//      ttpResults.Add(new Result("Quality", new DoubleValue(objectiveValue)));
-//      ttpResults.Add(new Result("Tour", tour));
-//      ttpResults.Add(new Result("Loot", loot));
-
-//      lock (locker) {
-//        TtpResults.Add(ttpResults);
-//        TspResults.Add(tspResults);
-//        KspResults.Add(kspResults);
-
-//        IResult bestQuality;
-//        if (!Results.TryGetValue("Best TTP Quality", out bestQuality)) {
-//          Results.Add(new Result("Best TTP Quality", new DoubleValue(objectiveValue)));
-//          Results.Add(new Result("Best Tour", tour));
-//          Results.Add(new Result("Best Loot", loot));
-//        } else if (((DoubleValue)bestQuality.Value).Value < objectiveValue) {
-//          ((DoubleValue)bestQuality.Value).Value = objectiveValue;
-//          Results["Best Tour"].Value = tour;
-//          Results["Best Loot"].Value = loot;
-//        }
-//      }
-//      #endregion
-//    }
-//    #endregion
-
-//    #region TspSolver Message Handling
-//    private void TspSolverOrchestrationPortMessage(IMessage message) {
-//      var results = (ResultCollection)message["Results"];
-//      if (results.ContainsKey("Best TSP Solution")) {
-//        tspThreadResults[Thread.CurrentThread.ManagedThreadId] = results;
-//      }
-//    }
-
-//    private void TspSolverEvaluationPortMessage(IMessage message) { }
-//    #endregion
-
-//    #region KspSolver Message Handling
-//    private void KspSolverOrchestrationPortMessage(IMessage message) {
-//      var results = (ResultCollection)message["Results"];
-//      if (results.ContainsKey("Best Solution")) {
-//        kspThreadResults[Thread.CurrentThread.ManagedThreadId] = results;
-//      }
-//    }
-
-//    private void KspSolverEvaluationPortMessage(IMessage message) { }
-//    #endregion
-
-//    #region Helpers
-//    private double EvaluateTtp(TravelingSalesmanProblem tsp, int[] tour, BinaryKnapsackProblem ksp, bool[] loot) {
-//      bool feasible;
-//      return EvaluateTtp(tsp, tour, ksp, loot, out feasible);
-//    }
-
-//    private double EvaluateTtp(TravelingSalesmanProblem tsp, int[] tour, BinaryKnapsackProblem ksp, bool[] loot, out bool feasible) {
-//      double collectedWeight = 0.0;
-//      double objectiveValue = 0.0;
-//      double infeasibleBaseLine = -1000000.0;
-//      double speedCoefficient = (MaxSpeedParameter.Value.Value - MinSpeedParameter.Value.Value) / ksp.KnapsackCapacity.Value;
-
-//      int hideoutIdx = 0;
-//      while (tour[hideoutIdx] != 0) hideoutIdx++;
-//      int cityIdx = (hideoutIdx + 1) % tour.Length;
-//      int lastCityIdx = hideoutIdx;
-
-//      while (cityIdx != hideoutIdx) {
-//        double oldCollectedWeight = collectedWeight;
-//        var availableItems = AvailabilityParameter.Value.Select((c, i) => new { CityIdx = c, ItemIdx = i }).Where(x => x.CityIdx == tour[cityIdx]);
-
-//        foreach (var item in availableItems) {
-//          if (!loot[item.ItemIdx]) continue;
-//          collectedWeight += ksp.Weights[item.ItemIdx];
-//          objectiveValue += ksp.Values[item.ItemIdx];
-//        }
-
-//        objectiveValue -= Distance(tsp.Coordinates.CloneAsMatrix(), tour[lastCityIdx], tour[cityIdx]) * RentingRatioParameter.Value.Value /
-//                          (MaxSpeedParameter.Value.Value - speedCoefficient * oldCollectedWeight);
-//        lastCityIdx = cityIdx;
-//        cityIdx = (cityIdx + 1) % tour.Length;
-//      }
-
-//      objectiveValue -= Distance(tsp.Coordinates.CloneAsMatrix(), tour[lastCityIdx], tour[hideoutIdx]) * RentingRatioParameter.Value.Value /
-//                        (MaxSpeedParameter.Value.Value - speedCoefficient * collectedWeight);
-
-//      feasible = collectedWeight <= ksp.KnapsackCapacity.Value;
-//      if (!feasible) objectiveValue = infeasibleBaseLine - collectedWeight;
-
-//      return objectiveValue;
-//    }
-
-//    private double Distance(double[,] coords, int fromIdx, int toIdx) {
-//      double fromX = coords[fromIdx, 0], fromY = coords[fromIdx, 1],
-//             toX = coords[toIdx, 0], toY = coords[toIdx, 1];
-//      return (int)Math.Ceiling(Math.Sqrt((toX - fromX) * (toX - fromX) + (toY - fromY) * (toY - fromY)));
-//    }
-//    #endregion
-
-//    #region Event Handlers
-//    private void MetaSolverOrchestrationPort_ConnectedPortChanged(object sender, EventArgs e) {
-//      if (MetaSolverOrchestrationPort.ConnectedPort == null) return;
-
-//      var node = MetaSolverOrchestrationPort.ConnectedPort.Parent as OrchestratedAlgorithmNode;
-//      if (node == null) return;
-
-//      var hook = new HookOperator { Name = "Meta Eval Hook" };
-//      hook.Parameters.Add(new LookupParameter<RealVector>("RealVector") { Hidden = true });
-//      hook.Parameters.Add(new LookupParameter<DoubleValue>("Quality") { Hidden = true });
-//      node.EvalHook = hook;
-
-//      node.OrchestrationPort.CloneParametersFromPort(MetaSolverOrchestrationPort);
-//      node.EvaluationPort.CloneParametersFromPort(MetaSolverEvaluationPort);
-//      node.EvaluationPort.ConnectedPort = MetaSolverEvaluationPort;
-//    }
-
-//    private void TspSolverOrchestrationPort_ConnectedPortChanged(object sender, EventArgs e) {
-//      if (TspSolverOrchestrationPort.ConnectedPort == null) return;
-
-//      var node = TspSolverOrchestrationPort.ConnectedPort.Parent as OrchestratedAlgorithmNode;
-//      if (node == null) return;
-
-//      var hook = new HookOperator { Name = "TSP Eval Hook" };
-//      hook.Parameters.Add(new LookupParameter<Permutation>("TSPTour") { Hidden = true });
-//      hook.Parameters.Add(new LookupParameter<DoubleValue>("TSPTourLength") { Hidden = true });
-//      node.EvalHook = hook;
-
-//      node.OrchestrationPort.CloneParametersFromPort(TspSolverOrchestrationPort);
-//      node.EvaluationPort.CloneParametersFromPort(TspSolverEvaluationPort);
-//      node.EvaluationPort.ConnectedPort = TspSolverEvaluationPort;
-//    }
-
-//    private void KspSolverOrchestrationPort_ConnectedPortChanged(object sender, EventArgs e) {
-//      if (KspSolverOrchestrationPort.ConnectedPort == null) return;
-
-//      var node = KspSolverOrchestrationPort.ConnectedPort.Parent as OrchestratedAlgorithmNode;
-//      if (node == null) return;
-
-//      var hook = new HookOperator { Name = "KSP Eval Hook" };
-//      hook.Parameters.Add(new LookupParameter<BinaryVector>("KnapsackSolution") { Hidden = true });
-//      hook.Parameters.Add(new LookupParameter<DoubleValue>("Quality") { Hidden = true });
-//      node.EvalHook = hook;
-
-//      node.OrchestrationPort.CloneParametersFromPort(KspSolverOrchestrationPort);
-//      node.EvaluationPort.CloneParametersFromPort(KspSolverEvaluationPort);
-//      node.EvaluationPort.ConnectedPort = KspSolverEvaluationPort;
-//    }
-//    #endregion
-//  }
-//}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpOrchestratorNode5.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpOrchestratorNode5.cs	(revision 14598)
+++ 	(revision )
@@ -1,345 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Networks;
-using HeuristicLab.Data;
-using HeuristicLab.Encodings.BinaryVectorEncoding;
-using HeuristicLab.Encodings.PermutationEncoding;
-using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.Knapsack;
-using HeuristicLab.Problems.TravelingSalesman;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  [Item("TtpOrchestratorNode5", "An abstract base class for an orchestrator node for the TTP.")]
-  [StorableClass]
-  public sealed class TtpOrchestratorNode5 : OrchestratorNode {
-    #region Constants
-    private const string TspParameterName = "TSP";
-    private const string KspParameterName = "KSP";
-    private const string AvailabilityParameterName = "Availability";
-    private const string MinSpeedParameterName = "MinSpeed";
-    private const string MaxSpeedParameterName = "MaxSpeed";
-    private const string RentingRatioParameterName = "RentingRatio";
-    private const string IterationsParameterName = "Iterations";
-    private const string MetaSolverName = "MetaSolver";
-    private const string TspSolverName = "TspSolver";
-    private const string KspSolverName = "KspSolver";
-    #endregion
-
-    [Storable]
-    private ResultCollection tspResults, kspResults;
-
-    private CancellationTokenSource cts;
-
-    #region Parameters
-    public IValueParameter<IntValue> IterationsParameter {
-      get { return (IValueParameter<IntValue>)Parameters[IterationsParameterName]; }
-    }
-
-    public IValueParameter<TravelingSalesmanProblem> TspParameter {
-      get { return (IValueParameter<TravelingSalesmanProblem>)Parameters[TspParameterName]; }
-    }
-
-    public IValueParameter<BinaryKnapsackProblem> KspParameter {
-      get { return (IValueParameter<BinaryKnapsackProblem>)Parameters[KspParameterName]; }
-    }
-
-    public IValueParameter<IntArray> AvailabilityParameter {
-      get { return (IValueParameter<IntArray>)Parameters[AvailabilityParameterName]; }
-    }
-
-    public IValueParameter<DoubleValue> MinSpeedParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[MinSpeedParameterName]; }
-    }
-
-    public IValueParameter<DoubleValue> MaxSpeedParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[MaxSpeedParameterName]; }
-    }
-
-    public IValueParameter<DoubleValue> RentingRatioParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[RentingRatioParameterName]; }
-    }
-    #endregion
-
-    #region Ports
-    public IMessagePort MetaSolverOrchestrationPort {
-      get { return (IMessagePort)Ports[MetaSolverName + OrchestrationPortNameSuffix]; }
-    }
-
-    public IMessagePort MetaSolverEvaluationPort {
-      get { return (IMessagePort)Ports[MetaSolverName + EvaluationPortNameSuffix]; }
-    }
-
-    public IMessagePort TspSolverOrchestrationPort {
-      get { return (IMessagePort)Ports[TspSolverName + OrchestrationPortNameSuffix]; }
-    }
-
-    public IMessagePort TspSolverEvaluationPort {
-      get { return (IMessagePort)Ports[TspSolverName + EvaluationPortNameSuffix]; }
-    }
-
-    public IMessagePort KspSolverOrchestrationPort {
-      get { return (IMessagePort)Ports[KspSolverName + OrchestrationPortNameSuffix]; }
-    }
-
-    public IMessagePort KspSolverEvaluationPort {
-      get { return (IMessagePort)Ports[KspSolverName + EvaluationPortNameSuffix]; }
-    }
-    #endregion
-
-    [StorableConstructor]
-    private TtpOrchestratorNode5(bool deserializing) : base(deserializing) { }
-    private TtpOrchestratorNode5(TtpOrchestratorNode5 original, Cloner cloner) : base(original, cloner) {
-      RegisterEvents();
-    }
-    public TtpOrchestratorNode5() : this("TtpOrchestratorNode5") { }
-    public TtpOrchestratorNode5(string name) : base(name) {
-      #region Configure Parameters
-      Parameters.Add(new ValueParameter<IntValue>(IterationsParameterName, new IntValue(20)));
-      Parameters.Add(new ValueParameter<TravelingSalesmanProblem>(TspParameterName, new TravelingSalesmanProblem()));
-      Parameters.Add(new ValueParameter<BinaryKnapsackProblem>(KspParameterName, new BinaryKnapsackProblem()));
-      Parameters.Add(new ValueParameter<IntArray>(AvailabilityParameterName));
-      Parameters.Add(new ValueParameter<DoubleValue>(MinSpeedParameterName, new DoubleValue(0.1)));
-      Parameters.Add(new ValueParameter<DoubleValue>(MaxSpeedParameterName, new DoubleValue(1.0)));
-      Parameters.Add(new ValueParameter<DoubleValue>(RentingRatioParameterName, new DoubleValue(0.5)));
-      #endregion
-
-      #region Configure Ports
-      AddOrchestrationPort<VariegationProblem>(MetaSolverName);
-      AddEvaluationPort<RealVector>(MetaSolverName, "RealVector", "Quality");
-      AddOrchestrationPort<TourProfitProblem>(TspSolverName);
-      AddEvaluationPort<Permutation>(TspSolverName, "TSPTour", "TSPTourLength");
-      AddOrchestrationPort<BinaryKnapsackProblem>(KspSolverName);
-      AddEvaluationPort<BinaryVector>(KspSolverName, "KnapsackSolution", "Quality");
-
-      RegisterEvents();
-      #endregion
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new TtpOrchestratorNode5(this, cloner);
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterEvents();
-    }
-
-    private void RegisterEvents() {
-      MetaSolverOrchestrationPort.ConnectedPortChanged += MetaSolverOrchestrationPort_ConnectedPortChanged;
-      TspSolverOrchestrationPort.ConnectedPortChanged += TspSolverOrchestrationPort_ConnectedPortChanged;
-      KspSolverOrchestrationPort.ConnectedPortChanged += KspSolverOrchestrationPort_ConnectedPortChanged;
-    }
-
-    public override void Prepare() {
-      Results.Clear();
-
-      var metaMsg = MetaSolverOrchestrationPort.PrepareMessage();
-      metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Prepare | OrchestrationMessage.QualityAdaption);
-      var problem = new VariegationProblem();
-      problem.Encoding.Length = KspParameter.Value.Length;
-      problem.Encoding.Bounds = new DoubleMatrix(new[,] { { -1.0, 1.0 } });
-      metaMsg["Problem"] = problem;
-      MetaSolverOrchestrationPort.SendMessage(metaMsg);
-    }
-
-    public override void Start() {
-      cts = new CancellationTokenSource();
-
-      try {
-        var metaMsg = MetaSolverOrchestrationPort.PrepareMessage();
-        metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Start);
-        MetaSolverOrchestrationPort.SendMessage(metaMsg);
-      } catch (Exception e) { }
-    }
-
-    public override void Pause() {
-      cts.Cancel();
-
-      var metaMsg = MetaSolverOrchestrationPort.PrepareMessage();
-      metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Pause);
-      MetaSolverOrchestrationPort.SendMessage(metaMsg);
-
-      var tspMsg = TspSolverOrchestrationPort.PrepareMessage();
-      tspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Stop);
-      TspSolverOrchestrationPort.SendMessage(tspMsg);
-
-      var kspMsg = KspSolverOrchestrationPort.PrepareMessage();
-      kspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Stop);
-      KspSolverOrchestrationPort.SendMessage(kspMsg);
-    }
-
-    public override void Stop() {
-      cts.Cancel();
-
-      var metaMsg = MetaSolverOrchestrationPort.PrepareMessage();
-      metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Stop);
-      MetaSolverOrchestrationPort.SendMessage(metaMsg);
-
-      var tspMsg = TspSolverOrchestrationPort.PrepareMessage();
-      tspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Stop);
-      TspSolverOrchestrationPort.SendMessage(tspMsg);
-
-      var kspMsg = KspSolverOrchestrationPort.PrepareMessage();
-      kspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Stop);
-      KspSolverOrchestrationPort.SendMessage(kspMsg);
-    }
-
-    protected override void ProcessMessage(IMessage message, IMessagePort port, CancellationToken token) {
-      var messageActions = new Dictionary<IMessagePort, Action<IMessage>>();
-      messageActions.Add(MetaSolverOrchestrationPort, MetaSolverOrchestrationPortMessage);
-      messageActions.Add(MetaSolverEvaluationPort, MetaSolverEvaluationPortMessage);
-      messageActions.Add(TspSolverOrchestrationPort, TspSolverOrchestrationPortMessage);
-      messageActions.Add(TspSolverEvaluationPort, TspSolverEvaluationPortMessage);
-      messageActions.Add(KspSolverOrchestrationPort, KspSolverOrchestrationPortMessage);
-      messageActions.Add(KspSolverEvaluationPort, KspSolverEvaluationPortMessage);
-
-      messageActions[port](message);
-
-      base.ProcessMessage(message, port, token);
-    }
-
-    #region MetaSolver Message Handling
-    private void MetaSolverOrchestrationPortMessage(IMessage message) { }
-
-    private void MetaSolverEvaluationPortMessage(IMessage message) {
-      var factors = (RealVector)message["RealVector"];
-
-      var ksp = (BinaryKnapsackProblem)KspParameter.Value.Clone();
-      for (int i = 0; i < factors.Length; i++)
-        ksp.Values[i] = (int)Math.Ceiling(ksp.Values[i] * factors[i]);
-
-      var kspMsg = KspSolverOrchestrationPort.PrepareMessage();
-      kspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Prepare | OrchestrationMessage.Start);
-      kspMsg["Problem"] = ksp;
-      KspSolverOrchestrationPort.SendMessage(kspMsg);
-      cts.Token.ThrowIfCancellationRequested();
-
-      var bestKspSolution = (BinaryVector)kspResults["Best Solution"].Value;
-      var kspCapacity = (IntValue)KspParameter.Value.KnapsackCapacity.Clone();
-      var kspPenalty = new DoubleValue(0.0);
-      var kspWeights = (IntArray)KspParameter.Value.Weights.Clone();
-      var kspValues = (IntArray)KspParameter.Value.Values.Clone();
-      var bestKspQuality = KnapsackEvaluator.Apply(bestKspSolution, kspCapacity, kspPenalty, kspWeights, kspValues).Quality;
-      var loot = new KnapsackSolution(bestKspSolution, bestKspQuality, kspCapacity, kspWeights, kspValues);
-      kspResults.Add(new Result("Best KSP Solution", loot));
-
-      var tspMsg = TspSolverOrchestrationPort.PrepareMessage();
-      tspMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(OrchestrationMessage.Prepare | OrchestrationMessage.Start);
-      var tpp = new TourProfitProblem {
-        Tsp = (TravelingSalesmanProblem)TspParameter.Value.Clone(),
-        Ksp = (BinaryKnapsackProblem)KspParameter.Value.Clone(),
-        FixedKspSolution = bestKspSolution,
-        Availability = AvailabilityParameter.Value.ToArray(),
-        RentingRatio = RentingRatioParameter.Value.Value,
-        MinSpeed = MinSpeedParameter.Value.Value,
-        MaxSpeed = MaxSpeedParameter.Value.Value
-      };
-      tpp.Encoding.Length = TspParameter.Value.Coordinates.Rows;
-      tspMsg["Problem"] = tpp;
-      TspSolverOrchestrationPort.SendMessage(tspMsg);
-      cts.Token.ThrowIfCancellationRequested();
-
-      var bestTspSolution = (Permutation)tspResults["Best TSP Solution"].Value;
-      var coordinates = (DoubleMatrix)TspParameter.Value.Coordinates.Clone();
-      var tour = new PathTSPTour(coordinates, bestTspSolution, new DoubleValue(TSPCoordinatesPathEvaluator.Apply(new TSPEuclideanPathEvaluator(), coordinates, bestTspSolution)));
-
-      #region Analyze
-      double objectiveValue = TtpUtils.EvaluateTtp(TspParameter.Value, tour.Permutation.ToArray(), KspParameter.Value, loot.BinaryVector.ToArray(),
-        AvailabilityParameter.Value.ToArray(), RentingRatioParameter.Value.Value, MinSpeedParameter.Value.Value, MaxSpeedParameter.Value.Value);
-      ((DoubleValue)message["Quality"]).Value = objectiveValue;
-
-      IResult bestQuality;
-      if (!Results.TryGetValue("Best TTP Quality", out bestQuality)) {
-        Results.Add(new Result("Best TTP Quality", new DoubleValue(objectiveValue)));
-        Results.Add(new Result("Best Tour", tour));
-        Results.Add(new Result("Best Loot", loot));
-      } else if (((DoubleValue)bestQuality.Value).Value < objectiveValue) {
-        ((DoubleValue)bestQuality.Value).Value = objectiveValue;
-        Results["Best Tour"].Value = tour;
-        Results["Best Loot"].Value = loot;
-      }
-      #endregion
-    }
-    #endregion
-
-    #region TspSolver Message Handling
-    private void TspSolverOrchestrationPortMessage(IMessage message) {
-      var results = (ResultCollection)message["Results"];
-      if (results.ContainsKey("Best TSP Solution")) {
-        tspResults = results;
-      }
-    }
-
-    private void TspSolverEvaluationPortMessage(IMessage message) { }
-    #endregion
-
-    #region KspSolver Message Handling
-    private void KspSolverOrchestrationPortMessage(IMessage message) {
-      var results = (ResultCollection)message["Results"];
-      if (results.ContainsKey("Best Solution")) {
-        kspResults = results;
-      }
-    }
-
-    private void KspSolverEvaluationPortMessage(IMessage message) { }
-    #endregion
-
-    #region Event Handlers
-    private void MetaSolverOrchestrationPort_ConnectedPortChanged(object sender, EventArgs e) {
-      if (MetaSolverOrchestrationPort.ConnectedPort == null) return;
-
-      var node = MetaSolverOrchestrationPort.ConnectedPort.Parent as OrchestratedAlgorithmNode;
-      if (node == null) return;
-
-      var hook = new HookOperator { Name = "Meta Eval Hook" };
-      hook.Parameters.Add(new LookupParameter<RealVector>("RealVector") { Hidden = true });
-      hook.Parameters.Add(new LookupParameter<DoubleValue>("Quality") { Hidden = true });
-      node.EvalHook = hook;
-
-      node.OrchestrationPort.CloneParametersFromPort(MetaSolverOrchestrationPort);
-      node.EvaluationPort.CloneParametersFromPort(MetaSolverEvaluationPort);
-      node.EvaluationPort.ConnectedPort = MetaSolverEvaluationPort;
-    }
-
-    private void TspSolverOrchestrationPort_ConnectedPortChanged(object sender, EventArgs e) {
-      if (TspSolverOrchestrationPort.ConnectedPort == null) return;
-
-      var node = TspSolverOrchestrationPort.ConnectedPort.Parent as OrchestratedAlgorithmNode;
-      if (node == null) return;
-
-      var hook = new HookOperator { Name = "TSP Eval Hook" };
-      hook.Parameters.Add(new LookupParameter<Permutation>("TSPTour") { Hidden = true });
-      hook.Parameters.Add(new LookupParameter<DoubleValue>("TSPTourLength") { Hidden = true });
-      node.EvalHook = hook;
-
-      node.OrchestrationPort.CloneParametersFromPort(TspSolverOrchestrationPort);
-      node.EvaluationPort.CloneParametersFromPort(TspSolverEvaluationPort);
-      node.EvaluationPort.ConnectedPort = TspSolverEvaluationPort;
-    }
-
-    private void KspSolverOrchestrationPort_ConnectedPortChanged(object sender, EventArgs e) {
-      if (KspSolverOrchestrationPort.ConnectedPort == null) return;
-
-      var node = KspSolverOrchestrationPort.ConnectedPort.Parent as OrchestratedAlgorithmNode;
-      if (node == null) return;
-
-      var hook = new HookOperator { Name = "KSP Eval Hook" };
-      hook.Parameters.Add(new LookupParameter<BinaryVector>("KnapsackSolution") { Hidden = true });
-      hook.Parameters.Add(new LookupParameter<DoubleValue>("Quality") { Hidden = true });
-      node.EvalHook = hook;
-
-      node.OrchestrationPort.CloneParametersFromPort(KspSolverOrchestrationPort);
-      node.EvaluationPort.CloneParametersFromPort(KspSolverEvaluationPort);
-      node.EvaluationPort.ConnectedPort = KspSolverEvaluationPort;
-    }
-    #endregion
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpUtils.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/TtpUtils.cs	(revision 14598)
+++ 	(revision )
@@ -1,54 +1,0 @@
-﻿using System;
-using System.Linq;
-using HeuristicLab.Problems.TravelingSalesman;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public static class TtpUtils {
-    public static double EvaluateTtp(TravelingSalesmanProblem tsp, int[] tour, BinaryKnapsackProblem ksp, bool[] loot, int[] availability, double rentingRatio, double minSpeed, double maxSpeed) {
-      bool feasible;
-      return EvaluateTtp(tsp, tour, ksp, loot, availability, rentingRatio, minSpeed, maxSpeed, out feasible);
-    }
-
-    public static double EvaluateTtp(TravelingSalesmanProblem tsp, int[] tour, BinaryKnapsackProblem ksp, bool[] loot, int[] availability, double rentingRatio, double minSpeed, double maxSpeed, out bool feasible) {
-      double collectedWeight = 0.0;
-      double objectiveValue = 0.0;
-      double infeasibleBaseLine = -1000000.0;
-      double speedCoefficient = (maxSpeed - minSpeed) / ksp.KnapsackCapacity.Value;
-
-      int hideoutIdx = 0;
-      while (tour[hideoutIdx] != 0) hideoutIdx++;
-      int cityIdx = (hideoutIdx + 1) % tour.Length;
-      int lastCityIdx = hideoutIdx;
-
-      while (cityIdx != hideoutIdx) {
-        double oldCollectedWeight = collectedWeight;
-        var availableItems = availability.Select((c, i) => new { CityIdx = c, ItemIdx = i }).Where(x => x.CityIdx == tour[cityIdx]);
-
-        foreach (var item in availableItems) {
-          if (!loot[item.ItemIdx]) continue;
-          collectedWeight += ksp.Weights[item.ItemIdx];
-          objectiveValue += ksp.Values[item.ItemIdx];
-        }
-
-        objectiveValue -= Distance(tsp.Coordinates.CloneAsMatrix(), tour[lastCityIdx], tour[cityIdx]) * rentingRatio /
-                          (maxSpeed - speedCoefficient * oldCollectedWeight);
-        lastCityIdx = cityIdx;
-        cityIdx = (cityIdx + 1) % tour.Length;
-      }
-
-      objectiveValue -= Distance(tsp.Coordinates.CloneAsMatrix(), tour[lastCityIdx], tour[hideoutIdx]) * rentingRatio /
-                        (maxSpeed - speedCoefficient * collectedWeight);
-
-      feasible = collectedWeight <= ksp.KnapsackCapacity.Value;
-      if (!feasible) objectiveValue = infeasibleBaseLine - collectedWeight;
-
-      return objectiveValue;
-    }
-
-    private static double Distance(double[,] coords, int fromIdx, int toIdx) {
-      double fromX = coords[fromIdx, 0], fromY = coords[fromIdx, 1],
-             toX = coords[toIdx, 0], toY = coords[toIdx, 1];
-      return (int)Math.Ceiling(Math.Sqrt((toX - fromX) * (toX - fromX) + (toY - fromY) * (toY - fromY)));
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/Utils.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/Utils.cs	(revision 14598)
+++ 	(revision )
@@ -1,15 +1,0 @@
-﻿using HeuristicLab.Core;
-using HeuristicLab.Core.Networks;
-
-namespace HeuristicLab.Networks.IntegratedOptimization {
-  public static class Utils {
-    public static bool TranslateMessage<T>(IMessage message, out T expectedMessage) where T : class, IMessage {
-      expectedMessage = message as T;
-      return expectedMessage != null;
-    }
-
-    public static IMessageValue<T> CreateMessageValue<T>(string name, T value) where T : class, IItem {
-      return new MessageValue<T>(name, value);
-    }
-  }
-}
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/VariegationProblem.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/VariegationProblem.cs	(revision 14601)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization/3.3/VariegationProblem.cs	(revision 14601)
@@ -0,0 +1,29 @@
+﻿using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Networks.IntegratedOptimization {
+  [Item("Variegation Problem", "Represents a problem whose objective is to optimize problem parameters.")]
+  [Creatable(CreatableAttribute.Categories.Problems, Priority = 999)]
+  [StorableClass]
+  public class VariegationProblem : SingleObjectiveBasicProblem<RealVectorEncoding> {
+    public override bool Maximization {
+      get { return true; }
+    }
+
+    [StorableConstructor]
+    protected VariegationProblem(bool deserializing) : base(deserializing) { }
+    protected VariegationProblem(VariegationProblem original, Cloner cloner) : base(original, cloner) { }
+    public VariegationProblem() : base() {
+      Encoding.Length = 5;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new VariegationProblem(this, cloner);
+    }
+
+    public override double Evaluate(Individual individual, IRandom random) { return 0.0; }
+  }
+}
