Index: trunk/sources/HeuristicLab.SGA/SGA.cs
===================================================================
--- trunk/sources/HeuristicLab.SGA/SGA.cs	(revision 65)
+++ trunk/sources/HeuristicLab.SGA/SGA.cs	(revision 1153)
@@ -33,6 +33,13 @@
 
 namespace HeuristicLab.SGA {
+  /// <summary>
+  /// Class for the heuristic optimization technique "simple genetic algorithm".
+  /// </summary>
   public class SGA : ItemBase, IEditable {
     #region Create Operators
+    /// <summary>
+    /// Creates operators for the current instance.
+    /// </summary>
+    /// <param name="engine">The engine where to add the operators.</param>
     public static void Create(IEngine engine) {
       engine.OperatorGraph.Clear();
@@ -355,8 +362,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 flag whether to set the seed randomly or not.
+    /// </summary>
     public bool SetSeedRandomly {
       get { return mySetSeedRandomly.Data; }
@@ -364,4 +377,7 @@
     }
     private IntData mySeed;
+    /// <summary>
+    /// Gets or sets the value of the seed of the current instance.
+    /// </summary>
     public int Seed {
       get { return mySeed.Data; }
@@ -370,4 +386,8 @@
     private IntData myPopulationSize;
     private IntData myParents;
+    /// <summary>
+    /// Gets or sets the population size of the current instance.
+    /// </summary>
+    /// <remarks>The number of parents is set to two times the population size.</remarks>
     public int PopulationSize {
       get { return myPopulationSize.Data; }
@@ -378,4 +398,7 @@
     }
     private IntData myMaximumGenerations;
+    /// <summary>
+    /// Gets or sets the number of maximum generations.
+    /// </summary>
     public int MaximumGenerations {
       get { return myMaximumGenerations.Data; }
@@ -383,4 +406,7 @@
     }
     private DoubleData myMutationRate;
+    /// <summary>
+    /// Gets or sets the mutation rate of the current instance.
+    /// </summary>
     public double MutationRate {
       get { return myMutationRate.Data; }
@@ -388,4 +414,7 @@
     }
     private IntData myElites;
+    /// <summary>
+    /// Gets or sets the elites of the current instance.
+    /// </summary>
     public int Elites {
       get { return myElites.Data; }
@@ -394,4 +423,7 @@
     private CombinedOperator mySGA;
     private IOperator myVariableInjection;
+    /// <summary>
+    /// Gets or sets the problem injector of the current instance.
+    /// </summary>
     public IOperator ProblemInjector {
       get { return myVariableInjection.SubOperators[0]; }
@@ -404,4 +436,7 @@
     }
     private IOperator myPopulationInitialization;
+    /// <summary>
+    /// Gets or sets the solution generator of the current instance.
+    /// </summary>
     public IOperator SolutionGenerator {
       get { return myPopulationInitialization.SubOperators[0]; }
@@ -413,4 +448,7 @@
       }
     }
+    /// <summary>
+    /// Gets or sets the evaluator of the current instance.
+    /// </summary>
     public IOperator Evaluator {
       get { return myPopulationInitialization.SubOperators[1]; }
@@ -424,4 +462,7 @@
     }
     private IOperator mySGAMain;
+    /// <summary>
+    /// Gets or sets the selection operator of the current instance.
+    /// </summary>
     public IOperator Selector {
       get { return mySGAMain.SubOperators[0]; }
@@ -433,4 +474,7 @@
       }
     }
+    /// <summary>
+    /// Gets or sets the crossover operator of the current instance.
+    /// </summary>
     public IOperator Crossover {
       get { return mySGAMain.SubOperators[1]; }
@@ -442,4 +486,7 @@
       }
     }
+    /// <summary>
+    /// Gets or sets the mutation operator of the current instance.
+    /// </summary>
     public IOperator Mutator {
       get { return mySGAMain.SubOperators[2]; }
@@ -453,4 +500,7 @@
     #endregion
 
+    /// <summary>
+    /// Initializes a new instance of <see cref="SGA"/>.
+    /// </summary>
     public SGA() {
       myEngine = new SequentialEngine.SequentialEngine();
@@ -459,11 +509,26 @@
     }
 
+    /// <summary>
+    /// Creates a new instance of the <see cref="SGAEditor"/> class.
+    /// </summary>
+    /// <returns>The created instance of the <see cref="SGAEditor"/>.</returns>
     public override IView CreateView() {
       return new SGAEditor(this);
     }
+    /// <summary>
+    /// Creates a new instance of the <see cref="SGAEditor"/> class.
+    /// </summary>
+    /// <returns>The created instance of the <see cref="SGAEditor"/>.</returns>
     public virtual IEditor CreateEditor() {
       return new SGAEditor(this);
     }
 
+    /// <summary>
+    /// Clones the current instance (deep clone).
+    /// </summary>
+    /// <remarks>Deep clone through <see cref="Auxiliary.Clone"/> method of helper class 
+    /// <see cref="Auxiliary"/>.</remarks>
+    /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
+    /// <returns>The cloned object as <see cref="SGA"/>.</returns>
     public override object Clone(IDictionary<Guid, object> clonedObjects) {
       SGA clone = new SGA();
@@ -506,4 +571,13 @@
 
     #region Persistence Methods
+    /// <summary>
+    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
+    /// </summary>
+    /// <remarks>The engine of the current instance is saved as a child node with the 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 the data is saved.</param>
+    /// <param name="persistedObjects">A 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);
@@ -511,4 +585,11 @@
       return node;
     }
+    /// <summary>
+    /// Loads the persisted instance from the specified <paramref name="node"/>.
+    /// </summary>
+    /// <remarks>The elements of the current instance must be saved in a special way, see 
+    /// <see cref="GetXmlNode"/>.</remarks>
+    /// <param name="node">The <see cref="XmlNode"/> where the instance 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);
