Index: /branches/3.1/sources/HeuristicLab.ES/ES.cs
===================================================================
--- /branches/3.1/sources/HeuristicLab.ES/ES.cs	(revision 1077)
+++ /branches/3.1/sources/HeuristicLab.ES/ES.cs	(revision 1078)
@@ -35,6 +35,13 @@
 
 namespace HeuristicLab.ES {
+  /// <summary>
+  /// Class for the heuristic optimization technique "evolution strategy".
+  /// </summary>
   public class ES : ItemBase, IEditable {
     #region Create Operators
+    /// <summary>
+    /// Creates a new evolution strategy.
+    /// </summary>
+    /// <param name="engine">The engine of the ES to create.</param>
     public static void Create(IEngine engine) {
       engine.OperatorGraph.Clear();
@@ -373,8 +380,14 @@
     #region Properties
     private IEngine myEngine;
+    /// <summary>
+    /// Gets the engine of the current instance.
+    /// </summary>
     public IEngine Engine {
       get { return myEngine; }
     }
     private BoolData mySetSeedRandomly;
+    /// <summary>
+    /// Gets or sets the boolean flag whether to set the seed randomly or not.
+    /// </summary>
     public bool SetSeedRandomly {
       get { return mySetSeedRandomly.Data; }
@@ -382,4 +395,9 @@
     }
     private IntData mySeed;
+    /// <summary>
+    /// Gets or sets the seed of the current instance.
+    /// </summary>
+    /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/> 
+    /// in the setter.</remarks>
     public int Seed {
       get { return mySeed.Data; }
@@ -390,4 +408,9 @@
     }
     private IntData myMu;
+    /// <summary>
+    /// Gets or sets the µ value of the current instance.
+    /// </summary>
+    /// <remarks>Sets also the lambda and the rho value. Calls <see cref="ItemBase.OnChanged"/> of
+    /// base class <see cref="ItemBase"/>.</remarks>
     public int Mu {
       get { return myMu.Data; }
@@ -402,4 +425,9 @@
     }
     private IntData myRho;
+    /// <summary>
+    /// Gets or sets the rho value of the current instance.
+    /// </summary>
+    /// <remarks>Sets also the µ value. Calls <see cref="ItemBase.OnChanged"/> of
+    /// base class <see cref="ItemBase"/>.</remarks>
     public int Rho {
       get { return myRho.Data; }
@@ -413,4 +441,9 @@
     }
     private IntData myLambda;
+    /// <summary>
+    /// Gets or sets the lambda value of the current instance.
+    /// </summary>
+    /// <remarks>May also change the µ value under certain circumstances. 
+    /// Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>.</remarks>
     public int Lambda {
       get { return myLambda.Data; }
@@ -434,4 +467,9 @@
     }
     private BoolData myPlusNotation;
+    /// <summary>
+    /// Gets or sets the boolean flag whether it is a plus notation or not.
+    /// </summary>
+    /// <remarks>May also set the lambda value under certain circumstances. 
+    /// Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>.</remarks>
     public bool PlusNotation {
       get { return myPlusNotation.Data; }
@@ -447,4 +485,7 @@
     }
     private DoubleData myShakingFactor;
+    /// <summary>
+    /// Gets or sets the shaking factor of the current instance.
+    /// </summary>
     public double ShakingFactor {
       get { return myShakingFactor.Data; }
@@ -452,5 +493,10 @@
     }
     private DoubleData mySuccessProbability;
+    
     private DoubleData myTargetSuccessProbability;
+    /// <summary>
+    /// Gets or sets the success probability.
+    /// </summary>
+    /// <remarks>Gets the target success probability and sets also the target success probability.</remarks>
     public double SuccessProbability {
       get { return myTargetSuccessProbability.Data; }
@@ -461,4 +507,9 @@
     }
     private DoubleData myLearningRate;
+    /// <summary>
+    /// Gets or sets the learning rate.
+    /// </summary>
+    /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/> 
+    /// in the setter.</remarks>
     public double LearningRate {
       get { return myLearningRate.Data; }
@@ -471,4 +522,9 @@
     }
     private DoubleData myDampeningFactor;
+    /// <summary>
+    /// Gets or sets the dampening factor.
+    /// </summary>
+    /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/> 
+    /// in the setter.</remarks>
     public double DampeningFactor {
       get { return myDampeningFactor.Data; }
@@ -481,4 +537,7 @@
     }
     private IntData myMaximumGenerations;
+    /// <summary>
+    /// Gets or sets the maximum number of generations.
+    /// </summary>
     public int MaximumGenerations {
       get { return myMaximumGenerations.Data; }
@@ -486,4 +545,7 @@
     }
     private BoolData myUseSuccessRule;
+    /// <summary>
+    /// Gets or sets the boolean flag whether to use the success rule or not.
+    /// </summary>
     public bool UseSuccessRule {
       get { return myUseSuccessRule.Data; }
@@ -493,4 +555,7 @@
     private IOperator myESMain;
     private IOperator myVariableInjection;
+    /// <summary>
+    /// Gets or sets the problem injection operator.
+    /// </summary>
     public IOperator ProblemInjector {
       get { return myVariableInjection.SubOperators[0]; }
@@ -503,4 +568,7 @@
     }
     private IOperator myPopulationInitialization;
+    /// <summary>
+    /// Gets or sets the solution generation operator.
+    /// </summary>
     public IOperator SolutionGenerator {
       get { return myPopulationInitialization.SubOperators[0]; }
@@ -512,4 +580,7 @@
       }
     }
+    /// <summary>
+    /// Gets or sets the evaluation operator.
+    /// </summary>
     public IOperator Evaluator {
       get { return myPopulationInitialization.SubOperators[1]; }
@@ -522,4 +593,7 @@
       }
     }
+    /// <summary>
+    /// Gets or sets the mutation operator. 
+    /// </summary>
     public IOperator Mutator {
       get { return myESMain.SubOperators[0]; }
@@ -531,4 +605,7 @@
       }
     }
+    /// <summary>
+    /// Gets or sets the recombination operator.
+    /// </summary>
     public IOperator Recombinator {
       get { return myESMain.SubOperators[2]; }
@@ -542,4 +619,7 @@
     #endregion
 
+    /// <summary>
+    /// Initializes a new instance of <see cref="ES"/> having a <see cref="SequentialEngine"/> as engine.
+    /// </summary>
     public ES() {
       myEngine = new SequentialEngine.SequentialEngine();
@@ -548,11 +628,27 @@
     }
 
+    /// <summary>
+    /// Creates a new instance of <see cref="ESEditor"/> to display the current instance.
+    /// </summary>
+    /// <returns>The created view as <see cref="ESEditor"/>.</returns>
     public override IView CreateView() {
       return new ESEditor(this);
     }
+    /// <summary>
+    /// Creates a new instance of <see cref="ESEditor"/> to display the current instance.
+    /// </summary>
+    /// <returns>The created editor as <see cref="ESEditor"/>.</returns>
     public virtual IEditor CreateEditor() {
       return new ESEditor(this);
     }
 
+    /// <summary>
+    /// Clones the current instance (deep clone).
+    /// </summary>
+    /// <remarks>Uses <see cref="Auxiliary.Clone"/> method of the <see cref="Auxiliary"/> class to 
+    /// clone the engine.</remarks>
+    /// <param name="clonedObjects">A dictionary of all already cloned objects. 
+    /// (Needed to avoid cycles.)</param>
+    /// <returns>The cloned object as <see cref="ES"/>.</returns>
     public override object Clone(IDictionary<Guid, object> clonedObjects) {
       ES clone = new ES();
@@ -601,4 +697,14 @@
 
     #region Persistence Methods
+    /// <summary>
+    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="StorableBase.GetXmlNode"/> of base class <see cref="ItemBase"/>. 
+    /// <br/>The engine of the current instance is saved as child node with tag name <c>Engine</c>.</remarks>
+    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
+    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
+    /// <param name="persistedObjects">The dictionary of all already persisted objects. 
+    /// (Needed to avoid cycles.)</param>
+    /// <returns>The saved <see cref="XmlNode"/>.</returns>
     public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
       XmlNode node = base.GetXmlNode(name, document, persistedObjects);
@@ -606,4 +712,13 @@
       return node;
     }
+    /// <summary>
+    /// Loads the persisted ES from the specified <paramref name="node"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="StorableBase.Populate"/> of base class <see cref="ItemBase"/>.<br/>
+    /// The engine must be saved as child node with tag name <c>Engine</c> (see 
+    /// <see cref="GetXmlNode"/>).</remarks>
+    /// <param name="node">The <see cref="XmlNode"/> where the value is saved.</param>
+    /// <param name="restoredObjects">The dictionary of all already restored objects. 
+    /// (Needed to avoid cycles.)</param>
     public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
       base.Populate(node, restoredObjects);
