Index: /trunk/sources/HeuristicLab.ES/ES.cs
===================================================================
--- /trunk/sources/HeuristicLab.ES/ES.cs	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/ES.cs	(revision 71)
@@ -0,0 +1,472 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.SequentialEngine;
+using HeuristicLab.Operators;
+using HeuristicLab.Random;
+using HeuristicLab.Logging;
+using HeuristicLab.Selection;
+using HeuristicLab.Selection.OffspringSelection;
+using HeuristicLab.Evolutionary;
+
+namespace HeuristicLab.ES {
+  public class ES : ItemBase, IEditable {
+    #region Create Operators
+    public static void Create(IEngine engine) {
+      engine.OperatorGraph.Clear();
+
+      CombinedOperator co = CreateES();
+      co.Name = "ES";
+      engine.OperatorGraph.AddOperator(co);
+      engine.OperatorGraph.InitialOperator = co;
+
+      engine.Reset();
+    }
+    private static CombinedOperator CreateES() {
+      CombinedOperator op = new CombinedOperator();
+      SequentialProcessor sp = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp);
+      op.OperatorGraph.InitialOperator = sp;
+
+      CombinedOperator co1 = CreateVariableInjection();
+      co1.Name = "Variable Injection";
+      op.OperatorGraph.AddOperator(co1);
+      sp.AddSubOperator(co1);
+
+      // place holder for ProblemInjector
+      EmptyOperator eo1 = new EmptyOperator();
+      eo1.Name = "ProblemInjector";
+      op.OperatorGraph.AddOperator(eo1);
+      co1.AddSubOperator(eo1);
+
+      CombinedOperator co2 = CreatePopulationInitialization();
+      co2.Name = "Population Initialization";
+      op.OperatorGraph.AddOperator(co2);
+      sp.AddSubOperator(co2);
+
+      // place holder for SolutionGenerator
+      EmptyOperator eo2 = new EmptyOperator();
+      eo2.Name = "SolutionGenerator";
+      op.OperatorGraph.AddOperator(eo2);
+      co2.AddSubOperator(eo2);
+
+      // place holder for Evaluator
+      EmptyOperator eo3 = new EmptyOperator();
+      eo3.Name = "Evaluator";
+      op.OperatorGraph.AddOperator(eo3);
+      co2.AddSubOperator(eo3);
+
+      CombinedOperator co3 = CreateESMain();
+      co3.Name = "ES Main";
+      op.OperatorGraph.AddOperator(co3);
+      sp.AddSubOperator(co3);
+
+      // place holder for Mutator
+      EmptyOperator eo4 = new EmptyOperator();
+      eo4.Name = "Mutator";
+      op.OperatorGraph.AddOperator(eo4);
+      co3.AddSubOperator(eo4);
+
+      // place holder for Evaluator
+      co3.AddSubOperator(eo3);
+
+      return op;
+    }
+    private static CombinedOperator CreateVariableInjection() {
+      CombinedOperator op = new CombinedOperator();
+      SequentialProcessor sp = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp);
+      op.OperatorGraph.InitialOperator = sp;
+
+      RandomInjector ri = new RandomInjector();
+      op.OperatorGraph.AddOperator(ri);
+      sp.AddSubOperator(ri);
+
+      OperatorExtractor oe = new OperatorExtractor();
+      oe.Name = "ProblemInjector";
+      oe.GetVariableInfo("Operator").ActualName = "ProblemInjector";
+      op.OperatorGraph.AddOperator(oe);
+      sp.AddSubOperator(oe);
+
+      VariableInjector vi = new VariableInjector();
+      vi.AddVariable(new Variable("ESmu", new IntData(1)));
+      vi.AddVariable(new Variable("ESlambda", new IntData(1)));
+      vi.AddVariable(new Variable("EvaluatedSolutions", new IntData()));
+      vi.AddVariable(new Variable("PlusNotation", new BoolData(true)));
+      vi.AddVariable(new Variable("Generations", new IntData()));
+      vi.AddVariable(new Variable("MaximumGenerations", new IntData(1000)));
+      vi.AddVariable(new Variable("LearningRate", new DoubleData(0.1)));
+      vi.AddVariable(new Variable("DampeningFactor", new DoubleData(10.0)));
+      vi.AddVariable(new Variable("ShakingFactor", new DoubleData(5.0)));
+      vi.AddVariable(new Variable("TargetSuccessProbability", new DoubleData(0.2)));
+      vi.AddVariable(new Variable("SuccessProbability", new DoubleData(0.2)));
+      op.OperatorGraph.AddOperator(vi);
+      sp.AddSubOperator(vi);
+
+      return op;
+    }
+    private static CombinedOperator CreatePopulationInitialization() {
+      CombinedOperator op = new CombinedOperator();
+      SequentialProcessor sp1 = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp1);
+      op.OperatorGraph.InitialOperator = sp1;
+
+      SubScopesCreater ssc = new SubScopesCreater();
+      ssc.GetVariableInfo("SubScopes").ActualName = "ESmu";
+      op.OperatorGraph.AddOperator(ssc);
+      sp1.AddSubOperator(ssc);
+
+      UniformSequentialSubScopesProcessor ussp = new UniformSequentialSubScopesProcessor();
+      op.OperatorGraph.AddOperator(ussp);
+      sp1.AddSubOperator(ussp);
+
+      SequentialProcessor sp2 = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp2);
+      ussp.AddSubOperator(sp2);
+
+      OperatorExtractor oe1 = new OperatorExtractor();
+      oe1.Name = "SolutionGenerator";
+      oe1.GetVariableInfo("Operator").ActualName = "SolutionGenerator";
+      op.OperatorGraph.AddOperator(oe1);
+      sp2.AddSubOperator(oe1);
+
+      OperatorExtractor oe2 = new OperatorExtractor();
+      oe2.Name = "Evaluator";
+      oe2.GetVariableInfo("Operator").ActualName = "Evaluator";
+      op.OperatorGraph.AddOperator(oe2);
+      sp2.AddSubOperator(oe2);
+
+      Counter c = new Counter();
+      c.GetVariableInfo("Value").ActualName = "EvaluatedSolutions";
+      op.OperatorGraph.AddOperator(c);
+      sp2.AddSubOperator(c);
+
+      Sorter s = new Sorter();
+      s.GetVariableInfo("Descending").ActualName = "Maximization";
+      s.GetVariableInfo("Value").ActualName = "Quality";
+      op.OperatorGraph.AddOperator(s);
+      sp1.AddSubOperator(s);
+
+      return op;
+    }
+    private static CombinedOperator CreateESMain() {
+      CombinedOperator op = new CombinedOperator();
+      SequentialProcessor sp = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp);
+      op.OperatorGraph.InitialOperator = sp;
+
+      LeftSelector ls = new LeftSelector();
+      ls.Name = "Child Selector";
+      ls.GetVariableInfo("Selected").ActualName = "ESlambda";
+      ls.GetVariable("CopySelected").Value = new BoolData(true);
+      op.OperatorGraph.AddOperator(ls);
+      sp.AddSubOperator(ls);
+
+      SequentialSubScopesProcessor ssp = new SequentialSubScopesProcessor();
+      op.OperatorGraph.AddOperator(ssp);
+      sp.AddSubOperator(ssp);
+
+      EmptyOperator eo = new EmptyOperator();
+      op.OperatorGraph.AddOperator(eo);
+      ssp.AddSubOperator(eo);
+
+      CombinedOperator co1 = CreateCreateChildren();
+      co1.Name = "Create Children";
+      op.OperatorGraph.AddOperator(co1);
+      ssp.AddSubOperator(co1);
+
+      ConditionalBranch cb1 = new ConditionalBranch();
+      cb1.Name = "Point or Plus Replacement";
+      cb1.GetVariableInfo("Condition").ActualName = "PlusNotation";
+      op.OperatorGraph.AddOperator(cb1);
+      sp.AddSubOperator(cb1);
+
+      MergingReducer mr = new MergingReducer();
+      mr.Name = "Plus Replacement";
+      op.OperatorGraph.AddOperator(mr);
+      cb1.AddSubOperator(mr);
+
+      RightReducer rr = new RightReducer();
+      rr.Name = "Point Replacement";
+      op.OperatorGraph.AddOperator(rr);
+      cb1.AddSubOperator(rr);
+
+      CombinedOperator co2 = CreateReplacement();
+      co2.Name = "Parents Selection";
+      op.OperatorGraph.AddOperator(co2);
+      sp.AddSubOperator(co2);
+
+      QualityLogger ql = new QualityLogger();
+      op.OperatorGraph.AddOperator(ql);
+      sp.AddSubOperator(ql);
+
+      BestAverageWorstQualityCalculator bawqc = new BestAverageWorstQualityCalculator();
+      op.OperatorGraph.AddOperator(bawqc);
+      sp.AddSubOperator(bawqc);
+
+      DataCollector dc = new DataCollector();
+      ItemList<StringData> names = dc.GetVariable("VariableNames").GetValue<ItemList<StringData>>();
+      names.Add(new StringData("BestQuality"));
+      names.Add(new StringData("AverageQuality"));
+      names.Add(new StringData("WorstQuality"));
+      op.OperatorGraph.AddOperator(dc);
+      sp.AddSubOperator(dc);
+
+      LinechartInjector lci = new LinechartInjector();
+      lci.GetVariableInfo("Linechart").ActualName = "Quality Linechart";
+      lci.GetVariable("NumberOfLines").GetValue<IntData>().Data = 3;
+      op.OperatorGraph.AddOperator(lci);
+      sp.AddSubOperator(lci);
+
+      Counter c = new Counter();
+      c.GetVariableInfo("Value").ActualName = "Generations";
+      op.OperatorGraph.AddOperator(c);
+      sp.AddSubOperator(c);
+
+      LessThanComparator ltc = new LessThanComparator();
+      ltc.GetVariableInfo("LeftSide").ActualName = "Generations";
+      ltc.GetVariableInfo("RightSide").ActualName = "MaximumGenerations";
+      ltc.GetVariableInfo("Result").ActualName = "GenerationsCondition";
+      op.OperatorGraph.AddOperator(ltc);
+      sp.AddSubOperator(ltc);
+
+      ConditionalBranch cb2 = new ConditionalBranch();
+      cb2.GetVariableInfo("Condition").ActualName = "GenerationsCondition";
+      op.OperatorGraph.AddOperator(cb2);
+      sp.AddSubOperator(cb2);
+
+      cb2.AddSubOperator(sp);
+
+      return op;
+    }
+    private static CombinedOperator CreateCreateChildren() {
+      CombinedOperator op = new CombinedOperator();
+      SequentialProcessor sp1 = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp1);
+      op.OperatorGraph.InitialOperator = sp1;
+
+      OffspringAnalyzer oa = new OffspringAnalyzer();
+      oa.Name = "Offspring Analyzer";
+      oa.GetVariable("ParentsCount").Value = new IntData(1);
+      oa.GetVariable("ComparisonFactor").Value = new DoubleData(0.0);
+      op.OperatorGraph.AddOperator(oa);
+      sp1.AddSubOperator(oa);
+
+      UniformSequentialSubScopesProcessor ussp = new UniformSequentialSubScopesProcessor();
+      op.OperatorGraph.AddOperator(ussp);
+      oa.AddSubOperator(ussp);
+
+      SequentialProcessor sp2 = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp2);
+      ussp.AddSubOperator(sp2);
+
+      OperatorExtractor oe1 = new OperatorExtractor();
+      oe1.Name = "Mutator";
+      oe1.GetVariableInfo("Operator").ActualName = "Mutator";
+      op.OperatorGraph.AddOperator(oe1);
+      sp2.AddSubOperator(oe1);
+
+      OperatorExtractor oe2 = new OperatorExtractor();
+      oe2.Name = "Evaluator";
+      oe2.GetVariableInfo("Operator").ActualName = "Evaluator";
+      op.OperatorGraph.AddOperator(oe2);
+      sp2.AddSubOperator(oe2);
+
+      Counter c = new Counter();
+      c.GetVariableInfo("Value").ActualName = "EvaluatedSolutions";
+      op.OperatorGraph.AddOperator(c);
+      sp2.AddSubOperator(c);
+
+      SuccessRuleMutationStrengthAdjuster srmsa = new SuccessRuleMutationStrengthAdjuster();
+      srmsa.Name = "SuccessRuleMutationStrengthAdjuster";
+      op.OperatorGraph.AddOperator(srmsa);
+      sp1.AddSubOperator(srmsa);
+
+      return op;
+    }
+    private static CombinedOperator CreateReplacement() {
+      CombinedOperator op = new CombinedOperator();
+      SequentialProcessor sp1 = new SequentialProcessor();
+      op.OperatorGraph.AddOperator(sp1);
+      op.OperatorGraph.InitialOperator = sp1;
+
+      Sorter s = new Sorter();
+      s.GetVariableInfo("Descending").ActualName = "Maximization";
+      s.GetVariableInfo("Value").ActualName = "Quality";
+      op.OperatorGraph.AddOperator(s);
+      sp1.AddSubOperator(s);
+
+      LeftSelector ls = new LeftSelector();
+      ls.Name = "Parents Selector";
+      ls.GetVariableInfo("Selected").ActualName = "ESmu";
+      ls.GetVariable("CopySelected").Value = new BoolData(false);
+      op.OperatorGraph.AddOperator(ls);
+      sp1.AddSubOperator(ls);
+
+      RightReducer rr = new RightReducer();
+      rr.Name = "RightReducer";
+      op.OperatorGraph.AddOperator(rr);
+      sp1.AddSubOperator(rr);
+
+      return op;
+    }
+    #endregion
+
+    #region Properties
+    private IEngine myEngine;
+    public IEngine Engine {
+      get { return myEngine; }
+    }
+    private BoolData mySetSeedRandomly;
+    public bool SetSeedRandomly {
+      get { return mySetSeedRandomly.Data; }
+      set { mySetSeedRandomly.Data = value; }
+    }
+    private IntData mySeed;
+    public int Seed {
+      get { return mySeed.Data; }
+      set { mySeed.Data = value; }
+    }
+    private IntData myMu;
+    public int Mu {
+      get { return myMu.Data; }
+      set { myMu.Data = value; }
+    }
+    private IntData myLambda;
+    public int Lambda {
+      get { return myLambda.Data; }
+      set { myLambda.Data = value; }
+    }
+    private BoolData myPlusNotation;
+    public bool PlusNotation {
+      get { return myPlusNotation.Data; }
+      set { myPlusNotation.Data = value; }
+    }
+    private DoubleData myShakingFactor;
+    public double ShakingFactor {
+      get { return myShakingFactor.Data; }
+      set { myShakingFactor.Data = value; }
+    }
+    private DoubleData mySuccessProbability;
+    public double SuccessProbability {
+      get { return mySuccessProbability.Data; }
+      set { mySuccessProbability.Data = value; }
+    }
+    private IntData myMaximumGenerations;
+    public int MaximumGenerations {
+      get { return myMaximumGenerations.Data; }
+      set { myMaximumGenerations.Data = value; }
+    }
+    private CombinedOperator myES;
+    private IOperator myESMain;
+    private IOperator myVariableInjection;
+    public IOperator ProblemInjector {
+      get { return myVariableInjection.SubOperators[0]; }
+      set {
+        value.Name = "ProblemInjector";
+        myES.OperatorGraph.RemoveOperator(ProblemInjector.Guid);
+        myES.OperatorGraph.AddOperator(value);
+        myVariableInjection.AddSubOperator(value, 0);
+      }
+    }
+    private IOperator myPopulationInitialization;
+    public IOperator SolutionGenerator {
+      get { return myPopulationInitialization.SubOperators[0]; }
+      set {
+        value.Name = "SolutionGenerator";
+        myES.OperatorGraph.RemoveOperator(SolutionGenerator.Guid);
+        myES.OperatorGraph.AddOperator(value);
+        myPopulationInitialization.AddSubOperator(value, 0);
+      }
+    }
+    public IOperator Evaluator {
+      get { return myPopulationInitialization.SubOperators[1]; }
+      set {
+        value.Name = "Evaluator";
+        myES.OperatorGraph.RemoveOperator(Evaluator.Guid);
+        myES.OperatorGraph.AddOperator(value);
+        myPopulationInitialization.AddSubOperator(value, 1);
+        myESMain.AddSubOperator(value, 1);
+      }
+    }
+    public IOperator Mutator {
+      get { return myESMain.SubOperators[0]; }
+      set {
+        value.Name = "Mutator";
+        myES.OperatorGraph.RemoveOperator(Mutator.Guid);
+        myES.OperatorGraph.AddOperator(value);
+        myESMain.AddSubOperator(value, 0);
+      }
+    }
+    #endregion
+
+    public ES() {
+      myEngine = new SequentialEngine.SequentialEngine();
+      Create(myEngine);
+      SetReferences();
+    }
+
+    public override IView CreateView() {
+      return new ESEditor(this);
+    }
+    public virtual IEditor CreateEditor() {
+      return new ESEditor(this);
+    }
+
+    public override object Clone(IDictionary<Guid, object> clonedObjects) {
+      ES clone = new ES();
+      clonedObjects.Add(Guid, clone);
+      clone.myEngine = (IEngine)Auxiliary.Clone(Engine, clonedObjects);
+      return clone;
+    }
+
+    #region SetReferences Method
+    private void SetReferences() {
+      // ES
+      CombinedOperator co1 = (CombinedOperator)Engine.OperatorGraph.InitialOperator;
+      myES = co1;
+      // SequentialProcessor in ES
+      SequentialProcessor sp1 = (SequentialProcessor)co1.OperatorGraph.InitialOperator;
+      // Variable Injection
+      CombinedOperator co2 = (CombinedOperator)sp1.SubOperators[0];
+      myVariableInjection = co2;
+      // SequentialProcessor in Variable Injection
+      SequentialProcessor sp2 = (SequentialProcessor)co2.OperatorGraph.InitialOperator;
+      // RandomInjector
+      RandomInjector ri = (RandomInjector)sp2.SubOperators[0];
+      mySetSeedRandomly = ri.GetVariable("SetSeedRandomly").GetValue<BoolData>();
+      mySeed = ri.GetVariable("Seed").GetValue<IntData>();
+      // VariableInjector
+      VariableInjector vi = (VariableInjector)sp2.SubOperators[2];
+      myMu = vi.GetVariable("ESmu").GetValue<IntData>();
+      myLambda = vi.GetVariable("ESlambda").GetValue<IntData>();
+      myMaximumGenerations = vi.GetVariable("MaximumGenerations").GetValue<IntData>();
+      myPlusNotation = vi.GetVariable("PlusNotation").GetValue<BoolData>();
+      myShakingFactor = vi.GetVariable("ShakingFactor").GetValue<DoubleData>();
+      mySuccessProbability = vi.GetVariable("TargetSuccessProbability").GetValue<DoubleData>();
+      // Population Initialization
+      CombinedOperator co3 = (CombinedOperator)sp1.SubOperators[1];
+      myPopulationInitialization = co3;
+      // ES Main
+      CombinedOperator co4 = (CombinedOperator)sp1.SubOperators[2];
+      myESMain = co4;
+    }
+    #endregion
+
+    #region Persistence Methods
+    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
+      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
+      node.AppendChild(PersistenceManager.Persist("Engine", Engine, document, persistedObjects));
+      return node;
+    }
+    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
+      base.Populate(node, restoredObjects);
+      myEngine = (IEngine)PersistenceManager.Restore(node.SelectSingleNode("Engine"), restoredObjects);
+      SetReferences();
+    }
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.ES/ESEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.ES/ESEditor.Designer.cs	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/ESEditor.Designer.cs	(revision 71)
@@ -0,0 +1,590 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.ES {
+  partial class ESEditor {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (chooseOperatorDialog != null) chooseOperatorDialog.Dispose();
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.executeButton = new System.Windows.Forms.Button();
+      this.tabControl = new System.Windows.Forms.TabControl();
+      this.parametersTabPage = new System.Windows.Forms.TabPage();
+      this.setEvaluationButton = new System.Windows.Forms.Button();
+      this.setMutationButton = new System.Windows.Forms.Button();
+      this.setSolutionGenerationButton = new System.Windows.Forms.Button();
+      this.viewEvaluationButton = new System.Windows.Forms.Button();
+      this.viewMutationButton = new System.Windows.Forms.Button();
+      this.viewSolutionGenerationButton = new System.Windows.Forms.Button();
+      this.viewProblemInitializationButton = new System.Windows.Forms.Button();
+      this.setProblemInitializationButton = new System.Windows.Forms.Button();
+      this.evaluationTextBox = new System.Windows.Forms.TextBox();
+      this.mutationTextBox = new System.Windows.Forms.TextBox();
+      this.solutionGenerationTextBox = new System.Windows.Forms.TextBox();
+      this.problemInitializationTextBox = new System.Windows.Forms.TextBox();
+      this.setRandomSeedRandomlyCheckBox = new System.Windows.Forms.CheckBox();
+      this.initialMutationStrengthTextBox = new System.Windows.Forms.TextBox();
+      this.evaluationLabel = new System.Windows.Forms.Label();
+      this.mutationLabel = new System.Windows.Forms.Label();
+      this.solutionGenerationLabel = new System.Windows.Forms.Label();
+      this.problemInitializationLabel = new System.Windows.Forms.Label();
+      this.initialMutationStrengthLabel = new System.Windows.Forms.Label();
+      this.lambdaTextBox = new System.Windows.Forms.TextBox();
+      this.mutationRateLabel = new System.Windows.Forms.Label();
+      this.maximumGenerationsTextBox = new System.Windows.Forms.TextBox();
+      this.maximumGenerationsLabel = new System.Windows.Forms.Label();
+      this.randomSeedTextBox = new System.Windows.Forms.TextBox();
+      this.muTextBox = new System.Windows.Forms.TextBox();
+      this.setRandomSeedRandomlyLabel = new System.Windows.Forms.Label();
+      this.randomSeedLabel = new System.Windows.Forms.Label();
+      this.populationSizeLabel = new System.Windows.Forms.Label();
+      this.scopesTabPage = new System.Windows.Forms.TabPage();
+      this.scopeView = new HeuristicLab.Core.ScopeView();
+      this.abortButton = new System.Windows.Forms.Button();
+      this.resetButton = new System.Windows.Forms.Button();
+      this.cloneEngineButton = new System.Windows.Forms.Button();
+      this.plusNotationLabel = new System.Windows.Forms.Label();
+      this.plusNotationButton = new System.Windows.Forms.Button();
+      this.targetSuccessRateLabel = new System.Windows.Forms.Label();
+      this.targetSuccessRateTextBox = new System.Windows.Forms.TextBox();
+      this.tabControl.SuspendLayout();
+      this.parametersTabPage.SuspendLayout();
+      this.scopesTabPage.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // executeButton
+      // 
+      this.executeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.executeButton.Location = new System.Drawing.Point(0, 396);
+      this.executeButton.Name = "executeButton";
+      this.executeButton.Size = new System.Drawing.Size(75, 23);
+      this.executeButton.TabIndex = 1;
+      this.executeButton.Text = "&Execute";
+      this.executeButton.UseVisualStyleBackColor = true;
+      this.executeButton.Click += new System.EventHandler(this.executeButton_Click);
+      // 
+      // tabControl
+      // 
+      this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.tabControl.Controls.Add(this.parametersTabPage);
+      this.tabControl.Controls.Add(this.scopesTabPage);
+      this.tabControl.Location = new System.Drawing.Point(0, 0);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(526, 390);
+      this.tabControl.TabIndex = 0;
+      // 
+      // parametersTabPage
+      // 
+      this.parametersTabPage.Controls.Add(this.targetSuccessRateTextBox);
+      this.parametersTabPage.Controls.Add(this.targetSuccessRateLabel);
+      this.parametersTabPage.Controls.Add(this.plusNotationButton);
+      this.parametersTabPage.Controls.Add(this.plusNotationLabel);
+      this.parametersTabPage.Controls.Add(this.setEvaluationButton);
+      this.parametersTabPage.Controls.Add(this.setMutationButton);
+      this.parametersTabPage.Controls.Add(this.setSolutionGenerationButton);
+      this.parametersTabPage.Controls.Add(this.viewEvaluationButton);
+      this.parametersTabPage.Controls.Add(this.viewMutationButton);
+      this.parametersTabPage.Controls.Add(this.viewSolutionGenerationButton);
+      this.parametersTabPage.Controls.Add(this.viewProblemInitializationButton);
+      this.parametersTabPage.Controls.Add(this.setProblemInitializationButton);
+      this.parametersTabPage.Controls.Add(this.evaluationTextBox);
+      this.parametersTabPage.Controls.Add(this.mutationTextBox);
+      this.parametersTabPage.Controls.Add(this.solutionGenerationTextBox);
+      this.parametersTabPage.Controls.Add(this.problemInitializationTextBox);
+      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyCheckBox);
+      this.parametersTabPage.Controls.Add(this.initialMutationStrengthTextBox);
+      this.parametersTabPage.Controls.Add(this.evaluationLabel);
+      this.parametersTabPage.Controls.Add(this.mutationLabel);
+      this.parametersTabPage.Controls.Add(this.solutionGenerationLabel);
+      this.parametersTabPage.Controls.Add(this.problemInitializationLabel);
+      this.parametersTabPage.Controls.Add(this.initialMutationStrengthLabel);
+      this.parametersTabPage.Controls.Add(this.mutationRateLabel);
+      this.parametersTabPage.Controls.Add(this.maximumGenerationsTextBox);
+      this.parametersTabPage.Controls.Add(this.maximumGenerationsLabel);
+      this.parametersTabPage.Controls.Add(this.randomSeedTextBox);
+      this.parametersTabPage.Controls.Add(this.muTextBox);
+      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyLabel);
+      this.parametersTabPage.Controls.Add(this.randomSeedLabel);
+      this.parametersTabPage.Controls.Add(this.populationSizeLabel);
+      this.parametersTabPage.Controls.Add(this.lambdaTextBox);
+      this.parametersTabPage.Location = new System.Drawing.Point(4, 22);
+      this.parametersTabPage.Name = "parametersTabPage";
+      this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.parametersTabPage.Size = new System.Drawing.Size(518, 364);
+      this.parametersTabPage.TabIndex = 0;
+      this.parametersTabPage.Text = "Parameters";
+      this.parametersTabPage.UseVisualStyleBackColor = true;
+      // 
+      // setEvaluationButton
+      // 
+      this.setEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setEvaluationButton.Location = new System.Drawing.Point(469, 338);
+      this.setEvaluationButton.Name = "setEvaluationButton";
+      this.setEvaluationButton.Size = new System.Drawing.Size(43, 20);
+      this.setEvaluationButton.TabIndex = 35;
+      this.setEvaluationButton.Text = "Set...";
+      this.setEvaluationButton.UseVisualStyleBackColor = true;
+      this.setEvaluationButton.Click += new System.EventHandler(this.setEvaluationButton_Click);
+      // 
+      // setMutationButton
+      // 
+      this.setMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setMutationButton.Location = new System.Drawing.Point(469, 312);
+      this.setMutationButton.Name = "setMutationButton";
+      this.setMutationButton.Size = new System.Drawing.Size(43, 20);
+      this.setMutationButton.TabIndex = 31;
+      this.setMutationButton.Text = "Set...";
+      this.setMutationButton.UseVisualStyleBackColor = true;
+      this.setMutationButton.Click += new System.EventHandler(this.setMutationButton_Click);
+      // 
+      // setSolutionGenerationButton
+      // 
+      this.setSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setSolutionGenerationButton.Location = new System.Drawing.Point(469, 286);
+      this.setSolutionGenerationButton.Name = "setSolutionGenerationButton";
+      this.setSolutionGenerationButton.Size = new System.Drawing.Size(43, 20);
+      this.setSolutionGenerationButton.TabIndex = 19;
+      this.setSolutionGenerationButton.Text = "Set...";
+      this.setSolutionGenerationButton.UseVisualStyleBackColor = true;
+      this.setSolutionGenerationButton.Click += new System.EventHandler(this.setSolutionGenerationButton_Click);
+      // 
+      // viewEvaluationButton
+      // 
+      this.viewEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewEvaluationButton.Location = new System.Drawing.Point(410, 338);
+      this.viewEvaluationButton.Name = "viewEvaluationButton";
+      this.viewEvaluationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewEvaluationButton.TabIndex = 34;
+      this.viewEvaluationButton.Text = "View...";
+      this.viewEvaluationButton.UseVisualStyleBackColor = true;
+      this.viewEvaluationButton.Click += new System.EventHandler(this.viewEvaluationButton_Click);
+      // 
+      // viewMutationButton
+      // 
+      this.viewMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewMutationButton.Location = new System.Drawing.Point(410, 312);
+      this.viewMutationButton.Name = "viewMutationButton";
+      this.viewMutationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewMutationButton.TabIndex = 30;
+      this.viewMutationButton.Text = "View...";
+      this.viewMutationButton.UseVisualStyleBackColor = true;
+      this.viewMutationButton.Click += new System.EventHandler(this.viewMutationButton_Click);
+      // 
+      // viewSolutionGenerationButton
+      // 
+      this.viewSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewSolutionGenerationButton.Location = new System.Drawing.Point(410, 286);
+      this.viewSolutionGenerationButton.Name = "viewSolutionGenerationButton";
+      this.viewSolutionGenerationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewSolutionGenerationButton.TabIndex = 18;
+      this.viewSolutionGenerationButton.Text = "View...";
+      this.viewSolutionGenerationButton.UseVisualStyleBackColor = true;
+      this.viewSolutionGenerationButton.Click += new System.EventHandler(this.viewSolutionGenerationButton_Click);
+      // 
+      // viewProblemInitializationButton
+      // 
+      this.viewProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewProblemInitializationButton.Location = new System.Drawing.Point(410, 260);
+      this.viewProblemInitializationButton.Name = "viewProblemInitializationButton";
+      this.viewProblemInitializationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewProblemInitializationButton.TabIndex = 14;
+      this.viewProblemInitializationButton.Text = "View...";
+      this.viewProblemInitializationButton.UseVisualStyleBackColor = true;
+      this.viewProblemInitializationButton.Click += new System.EventHandler(this.viewProblemInitializationButton_Click);
+      // 
+      // setProblemInitializationButton
+      // 
+      this.setProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setProblemInitializationButton.Location = new System.Drawing.Point(469, 260);
+      this.setProblemInitializationButton.Name = "setProblemInitializationButton";
+      this.setProblemInitializationButton.Size = new System.Drawing.Size(43, 20);
+      this.setProblemInitializationButton.TabIndex = 15;
+      this.setProblemInitializationButton.Text = "Set...";
+      this.setProblemInitializationButton.UseVisualStyleBackColor = true;
+      this.setProblemInitializationButton.Click += new System.EventHandler(this.setProblemInitializationButton_Click);
+      // 
+      // evaluationTextBox
+      // 
+      this.evaluationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.evaluationTextBox.Location = new System.Drawing.Point(218, 338);
+      this.evaluationTextBox.Name = "evaluationTextBox";
+      this.evaluationTextBox.ReadOnly = true;
+      this.evaluationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.evaluationTextBox.TabIndex = 33;
+      // 
+      // mutationTextBox
+      // 
+      this.mutationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationTextBox.Location = new System.Drawing.Point(218, 312);
+      this.mutationTextBox.Name = "mutationTextBox";
+      this.mutationTextBox.ReadOnly = true;
+      this.mutationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.mutationTextBox.TabIndex = 29;
+      // 
+      // solutionGenerationTextBox
+      // 
+      this.solutionGenerationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.solutionGenerationTextBox.Location = new System.Drawing.Point(218, 286);
+      this.solutionGenerationTextBox.Name = "solutionGenerationTextBox";
+      this.solutionGenerationTextBox.ReadOnly = true;
+      this.solutionGenerationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.solutionGenerationTextBox.TabIndex = 17;
+      // 
+      // problemInitializationTextBox
+      // 
+      this.problemInitializationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.problemInitializationTextBox.Location = new System.Drawing.Point(218, 260);
+      this.problemInitializationTextBox.Name = "problemInitializationTextBox";
+      this.problemInitializationTextBox.ReadOnly = true;
+      this.problemInitializationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.problemInitializationTextBox.TabIndex = 13;
+      // 
+      // setRandomSeedRandomlyCheckBox
+      // 
+      this.setRandomSeedRandomlyCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setRandomSeedRandomlyCheckBox.AutoSize = true;
+      this.setRandomSeedRandomlyCheckBox.Location = new System.Drawing.Point(218, 6);
+      this.setRandomSeedRandomlyCheckBox.Name = "setRandomSeedRandomlyCheckBox";
+      this.setRandomSeedRandomlyCheckBox.Size = new System.Drawing.Size(15, 14);
+      this.setRandomSeedRandomlyCheckBox.TabIndex = 1;
+      this.setRandomSeedRandomlyCheckBox.UseVisualStyleBackColor = true;
+      // 
+      // initialMutationStrengthTextBox
+      // 
+      this.initialMutationStrengthTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.initialMutationStrengthTextBox.Location = new System.Drawing.Point(218, 156);
+      this.initialMutationStrengthTextBox.Name = "initialMutationStrengthTextBox";
+      this.initialMutationStrengthTextBox.Size = new System.Drawing.Size(186, 20);
+      this.initialMutationStrengthTextBox.TabIndex = 11;
+      // 
+      // evaluationLabel
+      // 
+      this.evaluationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.evaluationLabel.AutoSize = true;
+      this.evaluationLabel.Location = new System.Drawing.Point(65, 341);
+      this.evaluationLabel.Name = "evaluationLabel";
+      this.evaluationLabel.Size = new System.Drawing.Size(60, 13);
+      this.evaluationLabel.TabIndex = 32;
+      this.evaluationLabel.Text = "&Evaluation:";
+      // 
+      // mutationLabel
+      // 
+      this.mutationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationLabel.AutoSize = true;
+      this.mutationLabel.Location = new System.Drawing.Point(65, 315);
+      this.mutationLabel.Name = "mutationLabel";
+      this.mutationLabel.Size = new System.Drawing.Size(51, 13);
+      this.mutationLabel.TabIndex = 28;
+      this.mutationLabel.Text = "&Mutation:";
+      // 
+      // solutionGenerationLabel
+      // 
+      this.solutionGenerationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.solutionGenerationLabel.AutoSize = true;
+      this.solutionGenerationLabel.Location = new System.Drawing.Point(65, 289);
+      this.solutionGenerationLabel.Name = "solutionGenerationLabel";
+      this.solutionGenerationLabel.Size = new System.Drawing.Size(103, 13);
+      this.solutionGenerationLabel.TabIndex = 16;
+      this.solutionGenerationLabel.Text = "&Solution Generation:";
+      // 
+      // problemInitializationLabel
+      // 
+      this.problemInitializationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.problemInitializationLabel.AutoSize = true;
+      this.problemInitializationLabel.Location = new System.Drawing.Point(65, 263);
+      this.problemInitializationLabel.Name = "problemInitializationLabel";
+      this.problemInitializationLabel.Size = new System.Drawing.Size(105, 13);
+      this.problemInitializationLabel.TabIndex = 12;
+      this.problemInitializationLabel.Text = "&Problem Initialization:";
+      // 
+      // initialMutationStrengthLabel
+      // 
+      this.initialMutationStrengthLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.initialMutationStrengthLabel.AutoSize = true;
+      this.initialMutationStrengthLabel.Location = new System.Drawing.Point(65, 159);
+      this.initialMutationStrengthLabel.Name = "initialMutationStrengthLabel";
+      this.initialMutationStrengthLabel.Size = new System.Drawing.Size(121, 13);
+      this.initialMutationStrengthLabel.TabIndex = 10;
+      this.initialMutationStrengthLabel.Text = "Initial Mutation Strength:";
+      // 
+      // lambdaTextBox
+      // 
+      this.lambdaTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.lambdaTextBox.Location = new System.Drawing.Point(218, 104);
+      this.lambdaTextBox.Name = "lambdaTextBox";
+      this.lambdaTextBox.Size = new System.Drawing.Size(186, 20);
+      this.lambdaTextBox.TabIndex = 9;
+      // 
+      // mutationRateLabel
+      // 
+      this.mutationRateLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationRateLabel.AutoSize = true;
+      this.mutationRateLabel.Location = new System.Drawing.Point(65, 107);
+      this.mutationRateLabel.Name = "mutationRateLabel";
+      this.mutationRateLabel.Size = new System.Drawing.Size(48, 13);
+      this.mutationRateLabel.TabIndex = 8;
+      this.mutationRateLabel.Text = "Lambda:";
+      // 
+      // maximumGenerationsTextBox
+      // 
+      this.maximumGenerationsTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.maximumGenerationsTextBox.Location = new System.Drawing.Point(218, 130);
+      this.maximumGenerationsTextBox.Name = "maximumGenerationsTextBox";
+      this.maximumGenerationsTextBox.Size = new System.Drawing.Size(186, 20);
+      this.maximumGenerationsTextBox.TabIndex = 7;
+      // 
+      // maximumGenerationsLabel
+      // 
+      this.maximumGenerationsLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.maximumGenerationsLabel.AutoSize = true;
+      this.maximumGenerationsLabel.Location = new System.Drawing.Point(65, 133);
+      this.maximumGenerationsLabel.Name = "maximumGenerationsLabel";
+      this.maximumGenerationsLabel.Size = new System.Drawing.Size(114, 13);
+      this.maximumGenerationsLabel.TabIndex = 6;
+      this.maximumGenerationsLabel.Text = "Maximum &Generations:";
+      // 
+      // randomSeedTextBox
+      // 
+      this.randomSeedTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.randomSeedTextBox.Location = new System.Drawing.Point(218, 26);
+      this.randomSeedTextBox.Name = "randomSeedTextBox";
+      this.randomSeedTextBox.Size = new System.Drawing.Size(186, 20);
+      this.randomSeedTextBox.TabIndex = 3;
+      // 
+      // muTextBox
+      // 
+      this.muTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.muTextBox.Location = new System.Drawing.Point(218, 78);
+      this.muTextBox.Name = "muTextBox";
+      this.muTextBox.Size = new System.Drawing.Size(186, 20);
+      this.muTextBox.TabIndex = 5;
+      // 
+      // setRandomSeedRandomlyLabel
+      // 
+      this.setRandomSeedRandomlyLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setRandomSeedRandomlyLabel.AutoSize = true;
+      this.setRandomSeedRandomlyLabel.Location = new System.Drawing.Point(65, 6);
+      this.setRandomSeedRandomlyLabel.Name = "setRandomSeedRandomlyLabel";
+      this.setRandomSeedRandomlyLabel.Size = new System.Drawing.Size(147, 13);
+      this.setRandomSeedRandomlyLabel.TabIndex = 0;
+      this.setRandomSeedRandomlyLabel.Text = "Set &Random Seed Randomly:";
+      // 
+      // randomSeedLabel
+      // 
+      this.randomSeedLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.randomSeedLabel.AutoSize = true;
+      this.randomSeedLabel.Location = new System.Drawing.Point(65, 29);
+      this.randomSeedLabel.Name = "randomSeedLabel";
+      this.randomSeedLabel.Size = new System.Drawing.Size(78, 13);
+      this.randomSeedLabel.TabIndex = 2;
+      this.randomSeedLabel.Text = "&Random Seed:";
+      // 
+      // populationSizeLabel
+      // 
+      this.populationSizeLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.populationSizeLabel.AutoSize = true;
+      this.populationSizeLabel.Location = new System.Drawing.Point(65, 81);
+      this.populationSizeLabel.Name = "populationSizeLabel";
+      this.populationSizeLabel.Size = new System.Drawing.Size(25, 13);
+      this.populationSizeLabel.TabIndex = 4;
+      this.populationSizeLabel.Text = "Mu:";
+      // 
+      // scopesTabPage
+      // 
+      this.scopesTabPage.Controls.Add(this.scopeView);
+      this.scopesTabPage.Location = new System.Drawing.Point(4, 22);
+      this.scopesTabPage.Name = "scopesTabPage";
+      this.scopesTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.scopesTabPage.Size = new System.Drawing.Size(518, 364);
+      this.scopesTabPage.TabIndex = 2;
+      this.scopesTabPage.Text = "Scopes";
+      this.scopesTabPage.UseVisualStyleBackColor = true;
+      // 
+      // scopeView
+      // 
+      this.scopeView.Caption = "Scope";
+      this.scopeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeView.Location = new System.Drawing.Point(3, 3);
+      this.scopeView.Name = "scopeView";
+      this.scopeView.Scope = null;
+      this.scopeView.Size = new System.Drawing.Size(512, 358);
+      this.scopeView.TabIndex = 0;
+      // 
+      // abortButton
+      // 
+      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.abortButton.Enabled = false;
+      this.abortButton.Location = new System.Drawing.Point(81, 396);
+      this.abortButton.Name = "abortButton";
+      this.abortButton.Size = new System.Drawing.Size(75, 23);
+      this.abortButton.TabIndex = 2;
+      this.abortButton.Text = "&Abort";
+      this.abortButton.UseVisualStyleBackColor = true;
+      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
+      // 
+      // resetButton
+      // 
+      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.resetButton.Location = new System.Drawing.Point(162, 396);
+      this.resetButton.Name = "resetButton";
+      this.resetButton.Size = new System.Drawing.Size(75, 23);
+      this.resetButton.TabIndex = 3;
+      this.resetButton.Text = "&Reset";
+      this.resetButton.UseVisualStyleBackColor = true;
+      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
+      // 
+      // cloneEngineButton
+      // 
+      this.cloneEngineButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.cloneEngineButton.Location = new System.Drawing.Point(420, 396);
+      this.cloneEngineButton.Name = "cloneEngineButton";
+      this.cloneEngineButton.Size = new System.Drawing.Size(106, 23);
+      this.cloneEngineButton.TabIndex = 4;
+      this.cloneEngineButton.Text = "&Clone Engine...";
+      this.cloneEngineButton.UseVisualStyleBackColor = true;
+      this.cloneEngineButton.Click += new System.EventHandler(this.cloneEngineButton_Click);
+      // 
+      // plusNotationLabel
+      // 
+      this.plusNotationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.plusNotationLabel.AutoSize = true;
+      this.plusNotationLabel.Location = new System.Drawing.Point(65, 214);
+      this.plusNotationLabel.Name = "plusNotationLabel";
+      this.plusNotationLabel.Size = new System.Drawing.Size(102, 13);
+      this.plusNotationLabel.TabIndex = 36;
+      this.plusNotationLabel.Text = "Plus/Point Notation:";
+      // 
+      // plusNotationButton
+      // 
+      this.plusNotationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.plusNotationButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.plusNotationButton.Location = new System.Drawing.Point(218, 208);
+      this.plusNotationButton.Name = "plusNotationButton";
+      this.plusNotationButton.Size = new System.Drawing.Size(78, 24);
+      this.plusNotationButton.TabIndex = 37;
+      this.plusNotationButton.Text = "Plus";
+      this.plusNotationButton.UseVisualStyleBackColor = true;
+      this.plusNotationButton.Click += new System.EventHandler(this.plusNotationButton_Click);
+      // 
+      // targetSuccessRateLabel
+      // 
+      this.targetSuccessRateLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.targetSuccessRateLabel.AutoSize = true;
+      this.targetSuccessRateLabel.Location = new System.Drawing.Point(65, 185);
+      this.targetSuccessRateLabel.Name = "targetSuccessRateLabel";
+      this.targetSuccessRateLabel.Size = new System.Drawing.Size(111, 13);
+      this.targetSuccessRateLabel.TabIndex = 38;
+      this.targetSuccessRateLabel.Text = "Target Success Rate:";
+      // 
+      // targetSuccessRateTextBox
+      // 
+      this.targetSuccessRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.targetSuccessRateTextBox.Location = new System.Drawing.Point(218, 182);
+      this.targetSuccessRateTextBox.Name = "targetSuccessRateTextBox";
+      this.targetSuccessRateTextBox.Size = new System.Drawing.Size(186, 20);
+      this.targetSuccessRateTextBox.TabIndex = 39;
+      // 
+      // ESEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tabControl);
+      this.Controls.Add(this.cloneEngineButton);
+      this.Controls.Add(this.resetButton);
+      this.Controls.Add(this.abortButton);
+      this.Controls.Add(this.executeButton);
+      this.Name = "ESEditor";
+      this.Size = new System.Drawing.Size(526, 419);
+      this.tabControl.ResumeLayout(false);
+      this.parametersTabPage.ResumeLayout(false);
+      this.parametersTabPage.PerformLayout();
+      this.scopesTabPage.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button executeButton;
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage parametersTabPage;
+    private System.Windows.Forms.Button abortButton;
+    private System.Windows.Forms.Button resetButton;
+    private System.Windows.Forms.TextBox lambdaTextBox;
+    private System.Windows.Forms.Label mutationRateLabel;
+    private System.Windows.Forms.TextBox muTextBox;
+    private System.Windows.Forms.Label populationSizeLabel;
+    private System.Windows.Forms.TabPage scopesTabPage;
+    private System.Windows.Forms.TextBox maximumGenerationsTextBox;
+    private System.Windows.Forms.Label maximumGenerationsLabel;
+    private System.Windows.Forms.TextBox initialMutationStrengthTextBox;
+    private System.Windows.Forms.Label initialMutationStrengthLabel;
+    private System.Windows.Forms.TextBox randomSeedTextBox;
+    private System.Windows.Forms.Label setRandomSeedRandomlyLabel;
+    private System.Windows.Forms.Label randomSeedLabel;
+    private System.Windows.Forms.CheckBox setRandomSeedRandomlyCheckBox;
+    private System.Windows.Forms.Label problemInitializationLabel;
+    private System.Windows.Forms.Label evaluationLabel;
+    private System.Windows.Forms.Label mutationLabel;
+    private System.Windows.Forms.Label solutionGenerationLabel;
+    private System.Windows.Forms.Button cloneEngineButton;
+    private System.Windows.Forms.TextBox mutationTextBox;
+    private System.Windows.Forms.TextBox solutionGenerationTextBox;
+    private System.Windows.Forms.TextBox problemInitializationTextBox;
+    private System.Windows.Forms.TextBox evaluationTextBox;
+    private System.Windows.Forms.Button setProblemInitializationButton;
+    private System.Windows.Forms.Button setEvaluationButton;
+    private System.Windows.Forms.Button setMutationButton;
+    private System.Windows.Forms.Button setSolutionGenerationButton;
+    private HeuristicLab.Core.ScopeView scopeView;
+    private System.Windows.Forms.Button viewEvaluationButton;
+    private System.Windows.Forms.Button viewMutationButton;
+    private System.Windows.Forms.Button viewSolutionGenerationButton;
+    private System.Windows.Forms.Button viewProblemInitializationButton;
+    private System.Windows.Forms.Button plusNotationButton;
+    private System.Windows.Forms.Label plusNotationLabel;
+    private System.Windows.Forms.TextBox targetSuccessRateTextBox;
+    private System.Windows.Forms.Label targetSuccessRateLabel;
+  }
+}
Index: /trunk/sources/HeuristicLab.ES/ESEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.ES/ESEditor.cs	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/ESEditor.cs	(revision 71)
@@ -0,0 +1,176 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.ES {
+  public partial class ESEditor : EditorBase {
+    private ChooseOperatorDialog chooseOperatorDialog;
+
+    public ES ES {
+      get { return (ES)Item; }
+      set { base.Item = value; }
+    }
+
+    public ESEditor() {
+      InitializeComponent();
+    }
+    public ESEditor(ES es)
+      : this() {
+      ES = es;
+    }
+
+    protected override void RemoveItemEvents() {
+      ES.Engine.ExceptionOccurred -= new EventHandler<ExceptionEventArgs>(Engine_ExceptionOccurred);
+      ES.Engine.Finished -= new EventHandler(Engine_Finished);
+      scopeView.Scope = null;
+      base.RemoveItemEvents();
+    }
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      ES.Engine.ExceptionOccurred += new EventHandler<ExceptionEventArgs>(Engine_ExceptionOccurred);
+      ES.Engine.Finished += new EventHandler(Engine_Finished);
+      SetDataBinding();
+      scopeView.Scope = ES.Engine.GlobalScope;
+    }
+
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      if (ES == null) {
+        tabControl.Enabled = false;
+      } else {
+        tabControl.Enabled = true;
+        problemInitializationTextBox.Text = ES.ProblemInjector.GetType().Name;
+        solutionGenerationTextBox.Text = ES.SolutionGenerator.GetType().Name;
+        mutationTextBox.Text = ES.Mutator.GetType().Name;
+        evaluationTextBox.Text = ES.Evaluator.GetType().Name;
+      }
+    }
+
+    private void SetDataBinding() {
+      setRandomSeedRandomlyCheckBox.DataBindings.Add("Checked", ES, "SetSeedRandomly");
+      randomSeedTextBox.DataBindings.Add("Text", ES, "Seed");
+      muTextBox.DataBindings.Add("Text", ES, "Mu");
+      lambdaTextBox.DataBindings.Add("Text", ES, "Lambda");
+      maximumGenerationsTextBox.DataBindings.Add("Text", ES, "MaximumGenerations");
+      initialMutationStrengthTextBox.DataBindings.Add("Text", ES, "ShakingFactor");
+      targetSuccessRateTextBox.DataBindings.Add("Text", ES, "SuccessProbability");
+    }
+
+    #region Button Events
+    private void plusNotationButton_Click(object sender, EventArgs e) {
+      if (plusNotationButton.Text.Equals("Plus")) {
+        plusNotationButton.Text = "Point";
+      } else {
+        plusNotationButton.Text = "Plus";
+      }
+      ES.PlusNotation = !ES.PlusNotation;
+    }
+    private void viewProblemInitializationButton_Click(object sender, EventArgs e) {
+      IView view = ES.ProblemInjector.CreateView();
+      if (view != null)
+        PluginManager.ControlManager.ShowControl(view);
+    }
+    private void viewSolutionGenerationButton_Click(object sender, EventArgs e) {
+      IView view = ES.SolutionGenerator.CreateView();
+      if (view != null)
+        PluginManager.ControlManager.ShowControl(view);
+    }
+    private void viewMutationButton_Click(object sender, EventArgs e) {
+      IView view = ES.Mutator.CreateView();
+      if (view != null)
+        PluginManager.ControlManager.ShowControl(view);
+    }
+    private void viewEvaluationButton_Click(object sender, EventArgs e) {
+      IView view = ES.Evaluator.CreateView();
+      if (view != null)
+        PluginManager.ControlManager.ShowControl(view);
+    }
+    private void setProblemInitializationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        ES.ProblemInjector = chooseOperatorDialog.Operator;
+        problemInitializationTextBox.Text = ES.ProblemInjector.GetType().Name;
+      }
+    }
+    private void setSolutionGenerationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        ES.SolutionGenerator= chooseOperatorDialog.Operator;
+        solutionGenerationTextBox.Text = ES.SolutionGenerator.GetType().Name;
+      }
+    }
+    private void setMutationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        ES.Mutator = chooseOperatorDialog.Operator;
+        mutationTextBox.Text = ES.Mutator.GetType().Name;
+      }
+    }
+    private void setEvaluationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        ES.Evaluator = chooseOperatorDialog.Operator;
+        evaluationTextBox.Text = ES.Evaluator.GetType().Name;
+      }
+    }
+    private void executeButton_Click(object sender, EventArgs e) {
+      executeButton.Enabled = false;
+      abortButton.Enabled = true;
+      ES.Engine.Execute();
+    }
+    private void abortButton_Click(object sender, EventArgs e) {
+      ES.Engine.Abort();
+    }
+    private void resetButton_Click(object sender, EventArgs e) {
+      ES.Engine.Reset();
+    }
+    private void cloneEngineButton_Click(object sender, EventArgs e) {
+      IEngine clone = (IEngine)ES.Engine.Clone();
+      IEditor editor = ((IEditable)clone).CreateEditor();
+      PluginManager.ControlManager.ShowControl(editor);
+    }
+    #endregion
+
+    #region Engine Events
+    private delegate void OnExceptionEventDelegate(object sender, ExceptionEventArgs e);
+    private void Engine_ExceptionOccurred(object sender, ExceptionEventArgs e) {
+      if (InvokeRequired)
+        Invoke(new OnExceptionEventDelegate(Engine_ExceptionOccurred), sender, e);
+      else
+        Auxiliary.ShowErrorMessageBox(e.Exception);
+    }
+    private void Engine_Finished(object sender, EventArgs e) {
+      scopeView.Refresh();
+      executeButton.Enabled = true;
+      abortButton.Enabled = false;
+    }
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.ES/ESEditor.resx
===================================================================
--- /trunk/sources/HeuristicLab.ES/ESEditor.resx	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/ESEditor.resx	(revision 71)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /trunk/sources/HeuristicLab.ES/HeuristicLab.ES.csproj
===================================================================
--- /trunk/sources/HeuristicLab.ES/HeuristicLab.ES.csproj	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/HeuristicLab.ES.csproj	(revision 71)
@@ -0,0 +1,124 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{2E6112A7-3A94-406D-A28C-38AC2D324DCA}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.ES</RootNamespace>
+    <AssemblyName>HeuristicLab.ES</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ES.cs" />
+    <Compile Include="HeuristicLabESPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ESEditor.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ESEditor.Designer.cs">
+      <DependentUpon>ESEditor.cs</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Core\HeuristicLab.Core.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Data\HeuristicLab.Data.csproj">
+      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
+      <Name>HeuristicLab.Data</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Evolutionary\HeuristicLab.Evolutionary.csproj">
+      <Project>{F5614C53-153C-4A37-A608-121E1C087F07}</Project>
+      <Name>HeuristicLab.Evolutionary</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Logging\HeuristicLab.Logging.csproj">
+      <Project>{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}</Project>
+      <Name>HeuristicLab.Logging</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Operators\HeuristicLab.Operators.csproj">
+      <Project>{A9983BA2-B3B2-475E-8E2C-62050B71D1C5}</Project>
+      <Name>HeuristicLab.Operators</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Random\HeuristicLab.Random.csproj">
+      <Project>{47019A74-F7F7-482E-83AA-D3F4F777E879}</Project>
+      <Name>HeuristicLab.Random</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Selection.OffspringSelection\HeuristicLab.Selection.OffspringSelection.csproj">
+      <Project>{205898D3-2717-4686-AF17-52409B7EC0C6}</Project>
+      <Name>HeuristicLab.Selection.OffspringSelection</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Selection\HeuristicLab.Selection.csproj">
+      <Project>{F7CF0571-25CB-43D5-8443-0843A1E2861A}</Project>
+      <Name>HeuristicLab.Selection</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.SequentialEngine\HeuristicLab.SequentialEngine.csproj">
+      <Project>{B4BE8E53-BA06-4237-9A01-24255F880201}</Project>
+      <Name>HeuristicLab.SequentialEngine</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="ESEditor.resx">
+      <DependentUpon>ESEditor.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>cmd /c ..\..\..\PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.ES/HeuristicLabESPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.ES/HeuristicLabESPlugin.cs	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/HeuristicLabESPlugin.cs	(revision 71)
@@ -0,0 +1,19 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.ES {
+  [ClassInfo(Name = "HeuristicLab.ES")]
+  [PluginFile(Filename = "HeuristicLab.ES.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core")]
+  [Dependency(Dependency = "HeuristicLab.Data")]
+  [Dependency(Dependency = "HeuristicLab.Evolutionary")]
+  [Dependency(Dependency = "HeuristicLab.Operators")]
+  [Dependency(Dependency = "HeuristicLab.Random")]
+  [Dependency(Dependency = "HeuristicLab.Selection")]
+  [Dependency(Dependency = "HeuristicLab.Logging")]
+  [Dependency(Dependency = "HeuristicLab.SequentialEngine")]
+  public class HeuristicLabESPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.ES/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.ES/Properties/AssemblyInfo.frame	(revision 71)
+++ /trunk/sources/HeuristicLab.ES/Properties/AssemblyInfo.frame	(revision 71)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.ES")]
+[assembly: AssemblyDescription("Standard Evolution Strategy (ES)")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c)  2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("bff11e7b-19f7-4d4f-a9f4-c659bbc92086")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.0.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.0.0.$WCREV$")]
Index: /trunk/sources/HeuristicLab.sln
===================================================================
--- /trunk/sources/HeuristicLab.sln	(revision 70)
+++ /trunk/sources/HeuristicLab.sln	(revision 71)
@@ -69,4 +69,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Grid", "HeuristicLab.Grid\HeuristicLab.Grid.csproj", "{545CE756-98D8-423B-AC2E-6E7D70926E5C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.ES", "HeuristicLab.ES\HeuristicLab.ES.csproj", "{2E6112A7-3A94-406D-A28C-38AC2D324DCA}"
 EndProject
 Global
@@ -200,4 +202,8 @@
 		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2E6112A7-3A94-406D-A28C-38AC2D324DCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2E6112A7-3A94-406D-A28C-38AC2D324DCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2E6112A7-3A94-406D-A28C-38AC2D324DCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2E6112A7-3A94-406D-A28C-38AC2D324DCA}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 70)
+++ /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 71)
@@ -36,2 +36,3 @@
 copy "..\..\..\HeuristicLab.TestFunctions\bin\%1\HeuristicLab.TestFunctions.dll" .\plugins
 copy "..\..\..\HeuristicLab.ThreadParallelEngine\bin\%1\HeuristicLab.ThreadParallelEngine.dll" .\plugins
+copy "..\..\..\HeuristicLab.ES\bin\%1\HeuristicLab.ES.dll" .\plugins
