Index: branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/HeuristicLab.Algorithms.ParameterlessPopulationPyramid-3.3.csproj
===================================================================
--- branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/HeuristicLab.Algorithms.ParameterlessPopulationPyramid-3.3.csproj	(revision 11635)
+++ branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/HeuristicLab.Algorithms.ParameterlessPopulationPyramid-3.3.csproj	(revision 11636)
@@ -62,4 +62,8 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="HeuristicLab.Encodings.BinaryVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.BinaryVectorEncoding-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
@@ -82,4 +86,8 @@
       <Private>False</Private>
     </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" />
@@ -92,4 +100,5 @@
   <ItemGroup>
     <Compile Include="AlgorithmBase.cs" />
+    <Compile Include="HillClimber.cs" />
     <Compile Include="Problems\BinaryVectorProblem.cs" />
     <Compile Include="Plugin.cs" />
Index: branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/HillClimber.cs
===================================================================
--- branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/HillClimber.cs	(revision 11636)
+++ branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/HillClimber.cs	(revision 11636)
@@ -0,0 +1,89 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.BinaryVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Random;
+
+
+namespace HeuristicLab.Algorithms.ParameterlessPopulationPyramid {
+  [Item("Hill Climber", "Test algorithm.")]
+  [StorableClass]
+  [Creatable("Parameterless Population Pyramid")]
+  public class HillClimber : AlgorithmBase {
+    [Storable]
+    private IRandom random;
+
+    [StorableConstructor]
+    protected HillClimber(bool deserializing) : base(deserializing) { }
+    protected HillClimber(HillClimber original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new HillClimber(this, cloner);
+    }
+
+    public HillClimber()
+      : base() {
+      random = new MersenneTwister();
+    }
+    protected override void Run() {
+      bool[] solution = new bool[Problem.Length];
+      for (int i = 0; i < solution.Length; i++) {
+        solution[i] = random.Next(2) == 1;
+      }
+      var fitness = Problem.Evaluate(solution);
+      fitness = ImproveToLocalOptimum(Problem, solution, fitness, random);
+
+      Results.Add(new Result("Best quality", new DoubleValue(fitness)));
+      Results.Add(new Result("Best solution", new BinaryVector(solution)));
+    }
+    public static double ImproveToLocalOptimum(BinaryVectorProblem problem, bool[] solution, double fitness, IRandom rand) {
+      var tried = new HashSet<int>();
+      
+      double newFitness=fitness;
+      do {
+        var options = Enumerable.Range(0, solution.Length).Shuffle(rand);
+        foreach (var option in options) {
+          solution[option] = !solution[option];
+          newFitness = problem.Evaluate(solution);
+          if ((problem.Maximization && fitness < newFitness) || (!problem.Maximization && fitness > newFitness)) {
+            fitness = newFitness;
+            tried.Clear();
+          } else {
+            solution[option] = !solution[option];
+          }
+          tried.Add(option);
+        }
+      } while (tried.Count != solution.Length);
+      return fitness;
+    }     
+  }
+}
Index: branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/Problems/BinaryVectorProblem.cs
===================================================================
--- branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/Problems/BinaryVectorProblem.cs	(revision 11635)
+++ branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/Problems/BinaryVectorProblem.cs	(revision 11636)
@@ -41,4 +41,8 @@
     }
 
+    public abstract bool Maximization {
+      get;
+    }
+
     [StorableConstructor]
     protected BinaryVectorProblem(bool deserializing) : base(deserializing) { }
Index: branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/Problems/OneMaxProblem.cs
===================================================================
--- branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/Problems/OneMaxProblem.cs	(revision 11635)
+++ branches/Parameter-less Population Pyramid/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/Problems/OneMaxProblem.cs	(revision 11636)
@@ -36,5 +36,7 @@
     public override IDeepCloneable Clone(Cloner cloner) { return new OneMaxProblem(this, cloner); }
 
-
+    public override bool Maximization {
+      get { return true; }
+    }
     public OneMaxProblem() : base() { }
 
