Changeset 1091


Ignore:
Timestamp:
01/08/09 10:19:30 (12 years ago)
Author:
abeham
Message:

Modified the ES interface in the trunk to provide controls for the more advanced sigmaSA-ES (ticket #84)

Location:
trunk/sources/HeuristicLab.ES
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.ES/ES.cs

    r896 r1091  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2009 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    4848
    4949      CombinedOperator co = CreateES();
    50       co.Name = "ES";
     50      co.Name = "σSA-ES";
    5151      engine.OperatorGraph.AddOperator(co);
    5252      engine.OperatorGraph.InitialOperator = co;
     
    134134      vi.AddVariable(new Variable("Generations", new IntData()));
    135135      vi.AddVariable(new Variable("MaximumGenerations", new IntData(1000)));
     136      vi.AddVariable(new Variable("GeneralLearningRate", new DoubleData(0.1)));
    136137      vi.AddVariable(new Variable("LearningRate", new DoubleData(0.1)));
    137       vi.AddVariable(new Variable("DampeningFactor", new DoubleData(10.0)));
    138       vi.AddVariable(new Variable("ShakingFactor", new DoubleData(5.0)));
    139       vi.AddVariable(new Variable("TargetSuccessProbability", new DoubleData(0.2)));
    140       vi.AddVariable(new Variable("SuccessProbability", new DoubleData(0.2)));
    141       vi.AddVariable(new Variable("UseSuccessRule", new BoolData(true)));
    142138      op.OperatorGraph.AddOperator(vi);
    143139      sp.AddSubOperator(vi);
     
    180176      op.OperatorGraph.AddOperator(c);
    181177      sp2.AddSubOperator(c);
     178
     179      VariableInjector vi = new VariableInjector();
     180      vi.AddVariable(new Variable("ShakingFactors", new DoubleArrayData(new double[] { 5.0 })));
     181      op.OperatorGraph.AddOperator(vi);
     182      sp2.AddSubOperator(vi);
    182183
    183184      Sorter s = new Sorter();
     
    285286      op.OperatorGraph.InitialOperator = sp1;
    286287
    287       ConditionalBranch cb = new ConditionalBranch();
    288       cb.GetVariableInfo("Condition").ActualName = "UseSuccessRule";
    289       op.OperatorGraph.AddOperator(cb);
    290       sp1.AddSubOperator(cb);
    291 
    292       SequentialProcessor sp2 = new SequentialProcessor();
    293       op.OperatorGraph.AddOperator(sp2);
    294       cb.AddSubOperator(sp2);
    295 
    296       OffspringAnalyzer oa = new OffspringAnalyzer();
    297       oa.Name = "Offspring Analyzer";
    298       oa.GetVariable("ParentsCount").Value = new IntData(1);
    299       oa.GetVariable("ComparisonFactor").Value = new DoubleData(0.0);
    300       op.OperatorGraph.AddOperator(oa);
    301       sp2.AddSubOperator(oa);
    302 
    303       SequentialProcessor sp3 = new SequentialProcessor();
    304       op.OperatorGraph.AddOperator(sp3);
    305       oa.AddSubOperator(sp3);
    306       cb.AddSubOperator(sp3);
    307 
    308288      OperatorExtractor oe1 = new OperatorExtractor();
    309289      oe1.Name = "Recombinator";
    310290      oe1.GetVariableInfo("Operator").ActualName = "Recombinator";
    311291      op.OperatorGraph.AddOperator(oe1);
    312       sp3.AddSubOperator(oe1);
     292      sp1.AddSubOperator(oe1);
    313293
    314294      UniformSequentialSubScopesProcessor ussp = new UniformSequentialSubScopesProcessor();
    315295      op.OperatorGraph.AddOperator(ussp);
    316       sp3.AddSubOperator(ussp);
    317 
    318       SequentialProcessor sp4 = new SequentialProcessor();
    319       op.OperatorGraph.AddOperator(sp4);
    320       ussp.AddSubOperator(sp4);
     296      sp1.AddSubOperator(ussp);
     297
     298      SequentialProcessor sp2 = new SequentialProcessor();
     299      op.OperatorGraph.AddOperator(sp2);
     300      ussp.AddSubOperator(sp2);
    321301
    322302      OperatorExtractor oe2 = new OperatorExtractor();
     
    324304      oe2.GetVariableInfo("Operator").ActualName = "Mutator";
    325305      op.OperatorGraph.AddOperator(oe2);
    326       sp4.AddSubOperator(oe2);
     306      sp2.AddSubOperator(oe2);
    327307
    328308      OperatorExtractor oe3 = new OperatorExtractor();
     
    330310      oe3.GetVariableInfo("Operator").ActualName = "Evaluator";
    331311      op.OperatorGraph.AddOperator(oe3);
    332       sp4.AddSubOperator(oe3);
     312      sp2.AddSubOperator(oe3);
    333313
    334314      Counter c = new Counter();
    335315      c.GetVariableInfo("Value").ActualName = "EvaluatedSolutions";
    336316      op.OperatorGraph.AddOperator(c);
    337       sp4.AddSubOperator(c);
    338 
    339       SuccessRuleMutationStrengthAdjuster srmsa = new SuccessRuleMutationStrengthAdjuster();
    340       srmsa.Name = "SuccessRuleMutationStrengthAdjuster";
    341       op.OperatorGraph.AddOperator(srmsa);
    342       sp2.AddSubOperator(srmsa);
     317      sp2.AddSubOperator(c);
    343318
    344319      Sorter s = new Sorter();
     
    411386    /// Gets or sets the µ value of the current instance.
    412387    /// </summary>
    413     /// <remarks>Sets also the lambda and the rho value. Calls <see cref="ItemBase.OnChanged"/> of
     388    /// <remarks>Sets also the λ and the ρ value if necessary. Using the comma notation it must hold that λ >= µ and generally µ >= ρ must hold as well. Calls <see cref="ItemBase.OnChanged"/> of
    414389    /// base class <see cref="ItemBase"/>.</remarks>
    415390    public int Mu {
     
    426401    private IntData myRho;
    427402    /// <summary>
    428     /// Gets or sets the rho value of the current instance.
    429     /// </summary>
    430     /// <remarks>Sets also the µ value. Calls <see cref="ItemBase.OnChanged"/> of
     403    /// Gets or sets the ρ value of the current instance.
     404    /// </summary>
     405    /// <remarks>Sets also the µ value to be as large as the new ρ value if it was smaller before. Calls <see cref="ItemBase.OnChanged"/> of
    431406    /// base class <see cref="ItemBase"/>.</remarks>
    432407    public int Rho {
     
    442417    private IntData myLambda;
    443418    /// <summary>
    444     /// Gets or sets the lambda value of the current instance.
    445     /// </summary>
    446     /// <remarks>May also change the µ value under certain circumstances.
     419    /// Gets or sets the λ value of the current instance.
     420    /// </summary>
     421    /// <remarks>If the comma notation is used, it also changes the µ value to be as large as the new λ value if it was larger before. Note that in general for good optimization results it needs to be fairly larger than mu.
    447422    /// Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>.</remarks>
    448423    public int Lambda {
     
    452427          if (PlusNotation) myLambda.Data = value;
    453428          else {
    454             if (value > 1 && value < Mu) {
     429            if (value >= 1 && value < Mu) {
    455430              myLambda.Data = value;
    456               myMu.Data = value - 1;
    457             } else if (value == 1) {
    458               myMu.Data = 1;
    459               myLambda.Data = 2;
     431              myMu.Data = value;
    460432            } else if (value > Mu) {
    461433              myLambda.Data = value;
     
    468440    private BoolData myPlusNotation;
    469441    /// <summary>
    470     /// Gets or sets the boolean flag whether it is a plus notation or not.
    471     /// </summary>
    472     /// <remarks>May also set the lambda value under certain circumstances.
     442    /// Gets or sets the boolean flag whether the plus notation is used (true) or the comma notation (false).
     443    /// </summary>
     444    /// <remarks>If set to false (comma notation) it sets λ to be as large as µ if is lower. Note that in general for good optimization results it needs to be fairly larger than µ.
    473445    /// Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>.</remarks>
    474446    public bool PlusNotation {
     
    476448      set {
    477449        if (!value && myPlusNotation.Data) { // from plus to point
    478           if (Lambda <= Mu) {
    479             myLambda.Data = Mu + 1;
     450          if (Lambda < Mu) {
     451            myLambda.Data = Mu;
    480452          }
    481453        }
     
    484456      }
    485457    }
    486     private DoubleData myShakingFactor;
    487     /// <summary>
    488     /// Gets or sets the shaking factor of the current instance.
    489     /// </summary>
    490     public double ShakingFactor {
    491       get { return myShakingFactor.Data; }
    492       set { myShakingFactor.Data = value; }
    493     }
    494     private DoubleData mySuccessProbability;
    495    
    496     private DoubleData myTargetSuccessProbability;
    497     /// <summary>
    498     /// Gets or sets the success probability.
    499     /// </summary>
    500     /// <remarks>Gets the target success probability and sets also the target success probability.</remarks>
    501     public double SuccessProbability {
    502       get { return myTargetSuccessProbability.Data; }
    503       set {
    504         myTargetSuccessProbability.Data = value;
    505         mySuccessProbability.Data = value;
     458    private DoubleArrayData myShakingFactors;
     459    /// <summary>
     460    /// Gets or sets the initial strategy vector s(0).
     461    /// </summary>
     462    /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>
     463    /// in the setter.</remarks>
     464    public double[] ShakingFactors {
     465      get { return myShakingFactors.Data; }
     466      set { myShakingFactors.Data = value; }
     467    }
     468    private DoubleData myGeneralLearningRate;
     469    /// <summary>
     470    /// Gets or sets the general learning rate (tau0).
     471    /// </summary>
     472    /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>
     473    /// in the setter.</remarks>
     474    public double GeneralLearningRate {
     475      get { return myGeneralLearningRate.Data; }
     476      set {
     477        if (value > 0.0 && value <= 1.0) {
     478          myGeneralLearningRate.Data = value;
     479          OnChanged();
     480        }
    506481      }
    507482    }
    508483    private DoubleData myLearningRate;
    509484    /// <summary>
    510     /// Gets or sets the learning rate.
     485    /// Gets or sets the learning rate (tau).
    511486    /// </summary>
    512487    /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>
     
    521496      }
    522497    }
    523     private DoubleData myDampeningFactor;
    524     /// <summary>
    525     /// Gets or sets the dampening factor.
    526     /// </summary>
    527     /// <remarks>Calls <see cref="ItemBase.OnChanged"/> of base class <see cref="ItemBase"/>
    528     /// in the setter.</remarks>
    529     public double DampeningFactor {
    530       get { return myDampeningFactor.Data; }
    531       set {
    532         if (value >= 1.0) {
    533           myDampeningFactor.Data = value;
    534           OnChanged();
    535         }
    536       }
    537     }
    538498    private IntData myMaximumGenerations;
    539499    /// <summary>
     
    543503      get { return myMaximumGenerations.Data; }
    544504      set { myMaximumGenerations.Data = value; }
    545     }
    546     private BoolData myUseSuccessRule;
    547     /// <summary>
    548     /// Gets or sets the boolean flag whether to use the success rule or not.
    549     /// </summary>
    550     public bool UseSuccessRule {
    551       get { return myUseSuccessRule.Data; }
    552       set { myUseSuccessRule.Data = value; }
    553505    }
    554506    private CombinedOperator myES;
     
    681633      myMaximumGenerations = vi.GetVariable("MaximumGenerations").GetValue<IntData>();
    682634      myPlusNotation = vi.GetVariable("PlusNotation").GetValue<BoolData>();
    683       myShakingFactor = vi.GetVariable("ShakingFactor").GetValue<DoubleData>();
    684       myTargetSuccessProbability = vi.GetVariable("TargetSuccessProbability").GetValue<DoubleData>();
    685       mySuccessProbability = vi.GetVariable("SuccessProbability").GetValue<DoubleData>();
     635      myGeneralLearningRate = vi.GetVariable("GeneralLearningRate").GetValue<DoubleData>();
    686636      myLearningRate = vi.GetVariable("LearningRate").GetValue<DoubleData>();
    687       myDampeningFactor = vi.GetVariable("DampeningFactor").GetValue<DoubleData>();
    688       myUseSuccessRule = vi.GetVariable("UseSuccessRule").GetValue<BoolData>();
    689637      // Population Initialization
    690638      CombinedOperator co3 = (CombinedOperator)sp1.SubOperators[1];
    691639      myPopulationInitialization = co3;
     640      // Variable Injector
     641      VariableInjector vi2 = (VariableInjector)co3.OperatorGraph.InitialOperator.SubOperators[1].SubOperators[0].SubOperators[3];
     642      myShakingFactors = vi2.GetVariable("ShakingFactors").GetValue<DoubleArrayData>();
    692643      // ES Main
    693644      CombinedOperator co4 = (CombinedOperator)sp1.SubOperators[2];
  • trunk/sources/HeuristicLab.ES/ESEditor.Designer.cs

    r98 r1091  
    1 #region License Information
     1#region License Information
    22/* HeuristicLab
    33 * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     
    4646    /// </summary>
    4747    private void InitializeComponent() {
     48      this.components = new System.ComponentModel.Container();
     49      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ESEditor));
    4850      this.executeButton = new System.Windows.Forms.Button();
    4951      this.tabControl = new System.Windows.Forms.TabControl();
    5052      this.parametersTabPage = new System.Windows.Forms.TabPage();
    5153      this.successRuleGroupBox = new System.Windows.Forms.GroupBox();
    52       this.dampeningFactorTextBox = new System.Windows.Forms.TextBox();
    53       this.dampeningFactorLabel = new System.Windows.Forms.Label();
    5454      this.learningRateTextBox = new System.Windows.Forms.TextBox();
    5555      this.label1 = new System.Windows.Forms.Label();
    56       this.targetSuccessRateTextBox = new System.Windows.Forms.TextBox();
     56      this.generalLearningRateTextBox = new System.Windows.Forms.TextBox();
    5757      this.targetSuccessRateLabel = new System.Windows.Forms.Label();
     58      this.label8 = new System.Windows.Forms.Label();
     59      this.label7 = new System.Windows.Forms.Label();
    5860      this.parentSelectionGroupBox = new System.Windows.Forms.GroupBox();
    5961      this.commaRadioButton = new System.Windows.Forms.RadioButton();
     
    6567      this.rhoTextBox = new System.Windows.Forms.TextBox();
    6668      this.rhoLabel = new System.Windows.Forms.Label();
    67       this.useSuccessRuleCheckBox = new System.Windows.Forms.CheckBox();
    6869      this.setEvaluationButton = new System.Windows.Forms.Button();
    6970      this.setMutationButton = new System.Windows.Forms.Button();
     
    7980      this.problemInitializationTextBox = new System.Windows.Forms.TextBox();
    8081      this.setRandomSeedRandomlyCheckBox = new System.Windows.Forms.CheckBox();
    81       this.initialMutationStrengthTextBox = new System.Windows.Forms.TextBox();
     82      this.initialMutationStrengthVectorTextBox = new System.Windows.Forms.TextBox();
    8283      this.evaluationLabel = new System.Windows.Forms.Label();
    8384      this.mutationLabel = new System.Windows.Forms.Label();
     
    9293      this.setRandomSeedRandomlyLabel = new System.Windows.Forms.Label();
    9394      this.randomSeedLabel = new System.Windows.Forms.Label();
     95      this.label6 = new System.Windows.Forms.Label();
     96      this.label5 = new System.Windows.Forms.Label();
     97      this.label4 = new System.Windows.Forms.Label();
     98      this.label3 = new System.Windows.Forms.Label();
     99      this.label2 = new System.Windows.Forms.Label();
    94100      this.populationSizeLabel = new System.Windows.Forms.Label();
    95101      this.lambdaTextBox = new System.Windows.Forms.TextBox();
     
    99105      this.resetButton = new System.Windows.Forms.Button();
    100106      this.cloneEngineButton = new System.Windows.Forms.Button();
     107      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
     108      this.problemDimensionLabel = new System.Windows.Forms.Label();
     109      this.problemDimensionTextBox = new System.Windows.Forms.TextBox();
    101110      this.tabControl.SuspendLayout();
    102111      this.parametersTabPage.SuspendLayout();
     
    109118      //
    110119      this.executeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    111       this.executeButton.Location = new System.Drawing.Point(0, 529);
     120      this.executeButton.Location = new System.Drawing.Point(0, 527);
    112121      this.executeButton.Name = "executeButton";
    113122      this.executeButton.Size = new System.Drawing.Size(75, 23);
     
    127136      this.tabControl.Name = "tabControl";
    128137      this.tabControl.SelectedIndex = 0;
    129       this.tabControl.Size = new System.Drawing.Size(526, 523);
     138      this.tabControl.Size = new System.Drawing.Size(501, 521);
    130139      this.tabControl.TabIndex = 0;
    131140      //
     
    140149      this.parametersTabPage.Controls.Add(this.rhoTextBox);
    141150      this.parametersTabPage.Controls.Add(this.rhoLabel);
    142       this.parametersTabPage.Controls.Add(this.useSuccessRuleCheckBox);
    143151      this.parametersTabPage.Controls.Add(this.setEvaluationButton);
    144152      this.parametersTabPage.Controls.Add(this.setMutationButton);
     
    154162      this.parametersTabPage.Controls.Add(this.problemInitializationTextBox);
    155163      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyCheckBox);
    156       this.parametersTabPage.Controls.Add(this.initialMutationStrengthTextBox);
     164      this.parametersTabPage.Controls.Add(this.problemDimensionTextBox);
     165      this.parametersTabPage.Controls.Add(this.initialMutationStrengthVectorTextBox);
    157166      this.parametersTabPage.Controls.Add(this.evaluationLabel);
    158167      this.parametersTabPage.Controls.Add(this.mutationLabel);
    159168      this.parametersTabPage.Controls.Add(this.solutionGenerationLabel);
    160169      this.parametersTabPage.Controls.Add(this.problemInitializationLabel);
     170      this.parametersTabPage.Controls.Add(this.problemDimensionLabel);
    161171      this.parametersTabPage.Controls.Add(this.initialMutationStrengthLabel);
    162172      this.parametersTabPage.Controls.Add(this.mutationRateLabel);
     
    167177      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyLabel);
    168178      this.parametersTabPage.Controls.Add(this.randomSeedLabel);
     179      this.parametersTabPage.Controls.Add(this.label6);
     180      this.parametersTabPage.Controls.Add(this.label5);
     181      this.parametersTabPage.Controls.Add(this.label4);
     182      this.parametersTabPage.Controls.Add(this.label3);
     183      this.parametersTabPage.Controls.Add(this.label2);
    169184      this.parametersTabPage.Controls.Add(this.populationSizeLabel);
    170185      this.parametersTabPage.Controls.Add(this.lambdaTextBox);
     
    172187      this.parametersTabPage.Name = "parametersTabPage";
    173188      this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
    174       this.parametersTabPage.Size = new System.Drawing.Size(518, 497);
     189      this.parametersTabPage.Size = new System.Drawing.Size(493, 495);
    175190      this.parametersTabPage.TabIndex = 0;
    176191      this.parametersTabPage.Text = "Parameters";
     
    180195      //
    181196      this.successRuleGroupBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    182       this.successRuleGroupBox.Controls.Add(this.dampeningFactorTextBox);
    183       this.successRuleGroupBox.Controls.Add(this.dampeningFactorLabel);
    184197      this.successRuleGroupBox.Controls.Add(this.learningRateTextBox);
    185198      this.successRuleGroupBox.Controls.Add(this.label1);
    186       this.successRuleGroupBox.Controls.Add(this.targetSuccessRateTextBox);
     199      this.successRuleGroupBox.Controls.Add(this.generalLearningRateTextBox);
    187200      this.successRuleGroupBox.Controls.Add(this.targetSuccessRateLabel);
    188       this.successRuleGroupBox.Location = new System.Drawing.Point(68, 201);
     201      this.successRuleGroupBox.Controls.Add(this.label8);
     202      this.successRuleGroupBox.Controls.Add(this.label7);
     203      this.successRuleGroupBox.Location = new System.Drawing.Point(9, 230);
    189204      this.successRuleGroupBox.Name = "successRuleGroupBox";
    190       this.successRuleGroupBox.Size = new System.Drawing.Size(336, 100);
     205      this.successRuleGroupBox.Size = new System.Drawing.Size(476, 74);
    191206      this.successRuleGroupBox.TabIndex = 40;
    192207      this.successRuleGroupBox.TabStop = false;
    193       this.successRuleGroupBox.Text = "Success Rule Mutation Strength Adjustment";
    194       //
    195       // dampeningFactorTextBox
    196       //
    197       this.dampeningFactorTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
    198       this.dampeningFactorTextBox.Location = new System.Drawing.Point(150, 71);
    199       this.dampeningFactorTextBox.Name = "dampeningFactorTextBox";
    200       this.dampeningFactorTextBox.Size = new System.Drawing.Size(180, 20);
    201       this.dampeningFactorTextBox.TabIndex = 19;
    202       //
    203       // dampeningFactorLabel
    204       //
    205       this.dampeningFactorLabel.Anchor = System.Windows.Forms.AnchorStyles.Top;
    206       this.dampeningFactorLabel.AutoSize = true;
    207       this.dampeningFactorLabel.Location = new System.Drawing.Point(7, 74);
    208       this.dampeningFactorLabel.Name = "dampeningFactorLabel";
    209       this.dampeningFactorLabel.Size = new System.Drawing.Size(97, 13);
    210       this.dampeningFactorLabel.TabIndex = 18;
    211       this.dampeningFactorLabel.Text = "Dampening Factor:";
     208      this.successRuleGroupBox.Text = "Mutation Strength Adjustment";
    212209      //
    213210      // learningRateTextBox
    214211      //
    215212      this.learningRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
    216       this.learningRateTextBox.Location = new System.Drawing.Point(150, 45);
     213      this.learningRateTextBox.Location = new System.Drawing.Point(159, 45);
    217214      this.learningRateTextBox.Name = "learningRateTextBox";
    218       this.learningRateTextBox.Size = new System.Drawing.Size(180, 20);
     215      this.learningRateTextBox.Size = new System.Drawing.Size(186, 20);
    219216      this.learningRateTextBox.TabIndex = 17;
    220217      //
     
    225222      this.label1.Location = new System.Drawing.Point(7, 48);
    226223      this.label1.Name = "label1";
    227       this.label1.Size = new System.Drawing.Size(77, 13);
     224      this.label1.Size = new System.Drawing.Size(92, 13);
    228225      this.label1.TabIndex = 16;
    229       this.label1.Text = "Learning Rate:";
    230       //
    231       // targetSuccessRateTextBox
    232       //
    233       this.targetSuccessRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
    234       this.targetSuccessRateTextBox.Location = new System.Drawing.Point(150, 19);
    235       this.targetSuccessRateTextBox.Name = "targetSuccessRateTextBox";
    236       this.targetSuccessRateTextBox.Size = new System.Drawing.Size(180, 20);
    237       this.targetSuccessRateTextBox.TabIndex = 15;
     226      this.label1.Text = "Learning Rate (τ):";
     227      //
     228      // generalLearningRateTextBox
     229      //
     230      this.generalLearningRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
     231      this.generalLearningRateTextBox.Location = new System.Drawing.Point(159, 19);
     232      this.generalLearningRateTextBox.Name = "generalLearningRateTextBox";
     233      this.generalLearningRateTextBox.Size = new System.Drawing.Size(186, 20);
     234      this.generalLearningRateTextBox.TabIndex = 15;
    238235      //
    239236      // targetSuccessRateLabel
     
    243240      this.targetSuccessRateLabel.Location = new System.Drawing.Point(7, 22);
    244241      this.targetSuccessRateLabel.Name = "targetSuccessRateLabel";
    245       this.targetSuccessRateLabel.Size = new System.Drawing.Size(111, 13);
     242      this.targetSuccessRateLabel.Size = new System.Drawing.Size(138, 13);
    246243      this.targetSuccessRateLabel.TabIndex = 14;
    247       this.targetSuccessRateLabel.Text = "Target Success Rate:";
     244      this.targetSuccessRateLabel.Text = "General Learning Rate (τ0):";
     245      //
     246      // label8
     247      //
     248      this.label8.Anchor = System.Windows.Forms.AnchorStyles.None;
     249      this.label8.AutoSize = true;
     250      this.label8.Location = new System.Drawing.Point(348, 48);
     251      this.label8.Name = "label8";
     252      this.label8.Size = new System.Drawing.Size(77, 13);
     253      this.label8.TabIndex = 4;
     254      this.label8.Text = "(LearningRate)";
     255      //
     256      // label7
     257      //
     258      this.label7.Anchor = System.Windows.Forms.AnchorStyles.None;
     259      this.label7.AutoSize = true;
     260      this.label7.Location = new System.Drawing.Point(348, 22);
     261      this.label7.Name = "label7";
     262      this.label7.Size = new System.Drawing.Size(114, 13);
     263      this.label7.TabIndex = 4;
     264      this.label7.Text = "(GeneralLearningRate)";
    248265      //
    249266      // parentSelectionGroupBox
     
    252269      this.parentSelectionGroupBox.Controls.Add(this.commaRadioButton);
    253270      this.parentSelectionGroupBox.Controls.Add(this.plusRadioButton);
    254       this.parentSelectionGroupBox.Location = new System.Drawing.Point(218, 307);
     271      this.parentSelectionGroupBox.Location = new System.Drawing.Point(168, 310);
    255272      this.parentSelectionGroupBox.Name = "parentSelectionGroupBox";
    256273      this.parentSelectionGroupBox.Size = new System.Drawing.Size(186, 38);
     
    286303      //
    287304      this.setRecombinationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    288       this.setRecombinationButton.Location = new System.Drawing.Point(469, 465);
     305      this.setRecombinationButton.Location = new System.Drawing.Point(419, 458);
    289306      this.setRecombinationButton.Name = "setRecombinationButton";
    290307      this.setRecombinationButton.Size = new System.Drawing.Size(43, 20);
     
    297314      //
    298315      this.viewRecombinationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    299       this.viewRecombinationButton.Location = new System.Drawing.Point(410, 465);
     316      this.viewRecombinationButton.Location = new System.Drawing.Point(360, 458);
    300317      this.viewRecombinationButton.Name = "viewRecombinationButton";
    301318      this.viewRecombinationButton.Size = new System.Drawing.Size(53, 20);
     
    308325      //
    309326      this.recombinationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    310       this.recombinationTextBox.Location = new System.Drawing.Point(218, 465);
     327      this.recombinationTextBox.Location = new System.Drawing.Point(168, 458);
    311328      this.recombinationTextBox.Name = "recombinationTextBox";
    312329      this.recombinationTextBox.ReadOnly = true;
     
    318335      this.recombinationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    319336      this.recombinationLabel.AutoSize = true;
    320       this.recombinationLabel.Location = new System.Drawing.Point(65, 468);
     337      this.recombinationLabel.Location = new System.Drawing.Point(6, 461);
    321338      this.recombinationLabel.Name = "recombinationLabel";
    322339      this.recombinationLabel.Size = new System.Drawing.Size(81, 13);
     
    327344      //
    328345      this.rhoTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    329       this.rhoTextBox.Location = new System.Drawing.Point(218, 94);
     346      this.rhoTextBox.Location = new System.Drawing.Point(168, 94);
    330347      this.rhoTextBox.Name = "rhoTextBox";
    331348      this.rhoTextBox.Size = new System.Drawing.Size(186, 20);
     
    336353      this.rhoLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    337354      this.rhoLabel.AutoSize = true;
    338       this.rhoLabel.Location = new System.Drawing.Point(65, 97);
     355      this.rhoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
     356      this.rhoLabel.Location = new System.Drawing.Point(6, 97);
    339357      this.rhoLabel.Name = "rhoLabel";
    340       this.rhoLabel.Size = new System.Drawing.Size(30, 13);
     358      this.rhoLabel.Size = new System.Drawing.Size(45, 13);
    341359      this.rhoLabel.TabIndex = 6;
    342       this.rhoLabel.Text = "Rho:";
    343       //
    344       // useSuccessRuleCheckBox
    345       //
    346       this.useSuccessRuleCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    347       this.useSuccessRuleCheckBox.AutoSize = true;
    348       this.useSuccessRuleCheckBox.Checked = true;
    349       this.useSuccessRuleCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
    350       this.useSuccessRuleCheckBox.Location = new System.Drawing.Point(410, 248);
    351       this.useSuccessRuleCheckBox.Name = "useSuccessRuleCheckBox";
    352       this.useSuccessRuleCheckBox.Size = new System.Drawing.Size(51, 17);
    353       this.useSuccessRuleCheckBox.TabIndex = 16;
    354       this.useSuccessRuleCheckBox.Text = "Use?";
    355       this.useSuccessRuleCheckBox.UseVisualStyleBackColor = true;
    356       this.useSuccessRuleCheckBox.CheckedChanged += new System.EventHandler(this.useSuccessRuleCheckBox_CheckedChanged);
     360      this.rhoLabel.Text = "Rho (ρ):";
    357361      //
    358362      // setEvaluationButton
    359363      //
    360364      this.setEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    361       this.setEvaluationButton.Location = new System.Drawing.Point(469, 439);
     365      this.setEvaluationButton.Location = new System.Drawing.Point(419, 432);
    362366      this.setEvaluationButton.Name = "setEvaluationButton";
    363367      this.setEvaluationButton.Size = new System.Drawing.Size(43, 20);
     
    370374      //
    371375      this.setMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    372       this.setMutationButton.Location = new System.Drawing.Point(469, 413);
     376      this.setMutationButton.Location = new System.Drawing.Point(419, 406);
    373377      this.setMutationButton.Name = "setMutationButton";
    374378      this.setMutationButton.Size = new System.Drawing.Size(43, 20);
     
    381385      //
    382386      this.setSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    383       this.setSolutionGenerationButton.Location = new System.Drawing.Point(469, 387);
     387      this.setSolutionGenerationButton.Location = new System.Drawing.Point(419, 380);
    384388      this.setSolutionGenerationButton.Name = "setSolutionGenerationButton";
    385389      this.setSolutionGenerationButton.Size = new System.Drawing.Size(43, 20);
     
    392396      //
    393397      this.viewEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    394       this.viewEvaluationButton.Location = new System.Drawing.Point(410, 439);
     398      this.viewEvaluationButton.Location = new System.Drawing.Point(360, 432);
    395399      this.viewEvaluationButton.Name = "viewEvaluationButton";
    396400      this.viewEvaluationButton.Size = new System.Drawing.Size(53, 20);
     
    403407      //
    404408      this.viewMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    405       this.viewMutationButton.Location = new System.Drawing.Point(410, 413);
     409      this.viewMutationButton.Location = new System.Drawing.Point(360, 406);
    406410      this.viewMutationButton.Name = "viewMutationButton";
    407411      this.viewMutationButton.Size = new System.Drawing.Size(53, 20);
     
    414418      //
    415419      this.viewSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    416       this.viewSolutionGenerationButton.Location = new System.Drawing.Point(410, 387);
     420      this.viewSolutionGenerationButton.Location = new System.Drawing.Point(360, 380);
    417421      this.viewSolutionGenerationButton.Name = "viewSolutionGenerationButton";
    418422      this.viewSolutionGenerationButton.Size = new System.Drawing.Size(53, 20);
     
    425429      //
    426430      this.viewProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    427       this.viewProblemInitializationButton.Location = new System.Drawing.Point(410, 361);
     431      this.viewProblemInitializationButton.Location = new System.Drawing.Point(360, 354);
    428432      this.viewProblemInitializationButton.Name = "viewProblemInitializationButton";
    429433      this.viewProblemInitializationButton.Size = new System.Drawing.Size(53, 20);
     
    436440      //
    437441      this.setProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    438       this.setProblemInitializationButton.Location = new System.Drawing.Point(469, 361);
     442      this.setProblemInitializationButton.Location = new System.Drawing.Point(419, 354);
    439443      this.setProblemInitializationButton.Name = "setProblemInitializationButton";
    440444      this.setProblemInitializationButton.Size = new System.Drawing.Size(43, 20);
     
    447451      //
    448452      this.evaluationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    449       this.evaluationTextBox.Location = new System.Drawing.Point(218, 439);
     453      this.evaluationTextBox.Location = new System.Drawing.Point(168, 432);
    450454      this.evaluationTextBox.Name = "evaluationTextBox";
    451455      this.evaluationTextBox.ReadOnly = true;
     
    456460      //
    457461      this.mutationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    458       this.mutationTextBox.Location = new System.Drawing.Point(218, 413);
     462      this.mutationTextBox.Location = new System.Drawing.Point(168, 406);
    459463      this.mutationTextBox.Name = "mutationTextBox";
    460464      this.mutationTextBox.ReadOnly = true;
     
    465469      //
    466470      this.solutionGenerationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    467       this.solutionGenerationTextBox.Location = new System.Drawing.Point(218, 387);
     471      this.solutionGenerationTextBox.Location = new System.Drawing.Point(168, 380);
    468472      this.solutionGenerationTextBox.Name = "solutionGenerationTextBox";
    469473      this.solutionGenerationTextBox.ReadOnly = true;
     
    474478      //
    475479      this.problemInitializationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    476       this.problemInitializationTextBox.Location = new System.Drawing.Point(218, 361);
     480      this.problemInitializationTextBox.Location = new System.Drawing.Point(168, 354);
    477481      this.problemInitializationTextBox.Name = "problemInitializationTextBox";
    478482      this.problemInitializationTextBox.ReadOnly = true;
     
    484488      this.setRandomSeedRandomlyCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    485489      this.setRandomSeedRandomlyCheckBox.AutoSize = true;
    486       this.setRandomSeedRandomlyCheckBox.Location = new System.Drawing.Point(218, 12);
     490      this.setRandomSeedRandomlyCheckBox.Location = new System.Drawing.Point(168, 12);
    487491      this.setRandomSeedRandomlyCheckBox.Name = "setRandomSeedRandomlyCheckBox";
    488492      this.setRandomSeedRandomlyCheckBox.Size = new System.Drawing.Size(15, 14);
     
    490494      this.setRandomSeedRandomlyCheckBox.UseVisualStyleBackColor = true;
    491495      //
    492       // initialMutationStrengthTextBox
    493       //
    494       this.initialMutationStrengthTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    495       this.initialMutationStrengthTextBox.Location = new System.Drawing.Point(218, 172);
    496       this.initialMutationStrengthTextBox.Name = "initialMutationStrengthTextBox";
    497       this.initialMutationStrengthTextBox.Size = new System.Drawing.Size(186, 20);
    498       this.initialMutationStrengthTextBox.TabIndex = 13;
     496      // initialMutationStrengthVectorTextBox
     497      //
     498      this.initialMutationStrengthVectorTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
     499      this.initialMutationStrengthVectorTextBox.Location = new System.Drawing.Point(168, 198);
     500      this.initialMutationStrengthVectorTextBox.Name = "initialMutationStrengthVectorTextBox";
     501      this.initialMutationStrengthVectorTextBox.Size = new System.Drawing.Size(186, 20);
     502      this.initialMutationStrengthVectorTextBox.TabIndex = 13;
     503      this.toolTip.SetToolTip(this.initialMutationStrengthVectorTextBox, resources.GetString("initialMutationStrengthVectorTextBox.ToolTip"));
     504      this.initialMutationStrengthVectorTextBox.Validated += new System.EventHandler(this.initialMutationStrengthVectorTextBox_Validated);
    499505      //
    500506      // evaluationLabel
     
    502508      this.evaluationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    503509      this.evaluationLabel.AutoSize = true;
    504       this.evaluationLabel.Location = new System.Drawing.Point(65, 442);
     510      this.evaluationLabel.Location = new System.Drawing.Point(6, 435);
    505511      this.evaluationLabel.Name = "evaluationLabel";
    506512      this.evaluationLabel.Size = new System.Drawing.Size(60, 13);
     
    512518      this.mutationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    513519      this.mutationLabel.AutoSize = true;
    514       this.mutationLabel.Location = new System.Drawing.Point(65, 416);
     520      this.mutationLabel.Location = new System.Drawing.Point(6, 409);
    515521      this.mutationLabel.Name = "mutationLabel";
    516522      this.mutationLabel.Size = new System.Drawing.Size(51, 13);
     
    522528      this.solutionGenerationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    523529      this.solutionGenerationLabel.AutoSize = true;
    524       this.solutionGenerationLabel.Location = new System.Drawing.Point(65, 390);
     530      this.solutionGenerationLabel.Location = new System.Drawing.Point(6, 383);
    525531      this.solutionGenerationLabel.Name = "solutionGenerationLabel";
    526532      this.solutionGenerationLabel.Size = new System.Drawing.Size(103, 13);
     
    532538      this.problemInitializationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    533539      this.problemInitializationLabel.AutoSize = true;
    534       this.problemInitializationLabel.Location = new System.Drawing.Point(65, 364);
     540      this.problemInitializationLabel.Location = new System.Drawing.Point(6, 357);
    535541      this.problemInitializationLabel.Name = "problemInitializationLabel";
    536542      this.problemInitializationLabel.Size = new System.Drawing.Size(105, 13);
     
    542548      this.initialMutationStrengthLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    543549      this.initialMutationStrengthLabel.AutoSize = true;
    544       this.initialMutationStrengthLabel.Location = new System.Drawing.Point(65, 175);
     550      this.initialMutationStrengthLabel.Location = new System.Drawing.Point(6, 201);
    545551      this.initialMutationStrengthLabel.Name = "initialMutationStrengthLabel";
    546       this.initialMutationStrengthLabel.Size = new System.Drawing.Size(121, 13);
     552      this.initialMutationStrengthLabel.Size = new System.Drawing.Size(155, 13);
    547553      this.initialMutationStrengthLabel.TabIndex = 12;
    548       this.initialMutationStrengthLabel.Text = "Initial Mutation Strength:";
     554      this.initialMutationStrengthLabel.Text = "Initial Mutation Strength Vector:";
    549555      //
    550556      // mutationRateLabel
     
    552558      this.mutationRateLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    553559      this.mutationRateLabel.AutoSize = true;
    554       this.mutationRateLabel.Location = new System.Drawing.Point(65, 123);
     560      this.mutationRateLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
     561      this.mutationRateLabel.Location = new System.Drawing.Point(6, 123);
    555562      this.mutationRateLabel.Name = "mutationRateLabel";
    556       this.mutationRateLabel.Size = new System.Drawing.Size(48, 13);
     563      this.mutationRateLabel.Size = new System.Drawing.Size(62, 13);
    557564      this.mutationRateLabel.TabIndex = 8;
    558       this.mutationRateLabel.Text = "Lambda:";
     565      this.mutationRateLabel.Text = "Lambda (λ):";
    559566      //
    560567      // maximumGenerationsTextBox
    561568      //
    562569      this.maximumGenerationsTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    563       this.maximumGenerationsTextBox.Location = new System.Drawing.Point(218, 146);
     570      this.maximumGenerationsTextBox.Location = new System.Drawing.Point(168, 146);
    564571      this.maximumGenerationsTextBox.Name = "maximumGenerationsTextBox";
    565572      this.maximumGenerationsTextBox.Size = new System.Drawing.Size(186, 20);
     
    570577      this.maximumGenerationsLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    571578      this.maximumGenerationsLabel.AutoSize = true;
    572       this.maximumGenerationsLabel.Location = new System.Drawing.Point(65, 149);
     579      this.maximumGenerationsLabel.Location = new System.Drawing.Point(6, 149);
    573580      this.maximumGenerationsLabel.Name = "maximumGenerationsLabel";
    574581      this.maximumGenerationsLabel.Size = new System.Drawing.Size(114, 13);
     
    579586      //
    580587      this.randomSeedTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    581       this.randomSeedTextBox.Location = new System.Drawing.Point(218, 32);
     588      this.randomSeedTextBox.Location = new System.Drawing.Point(168, 32);
    582589      this.randomSeedTextBox.Name = "randomSeedTextBox";
    583590      this.randomSeedTextBox.Size = new System.Drawing.Size(186, 20);
     
    587594      //
    588595      this.muTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    589       this.muTextBox.Location = new System.Drawing.Point(218, 68);
     596      this.muTextBox.Location = new System.Drawing.Point(168, 68);
    590597      this.muTextBox.Name = "muTextBox";
    591598      this.muTextBox.Size = new System.Drawing.Size(186, 20);
     
    596603      this.setRandomSeedRandomlyLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    597604      this.setRandomSeedRandomlyLabel.AutoSize = true;
    598       this.setRandomSeedRandomlyLabel.Location = new System.Drawing.Point(65, 12);
     605      this.setRandomSeedRandomlyLabel.Location = new System.Drawing.Point(6, 12);
    599606      this.setRandomSeedRandomlyLabel.Name = "setRandomSeedRandomlyLabel";
    600607      this.setRandomSeedRandomlyLabel.Size = new System.Drawing.Size(147, 13);
     
    606613      this.randomSeedLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    607614      this.randomSeedLabel.AutoSize = true;
    608       this.randomSeedLabel.Location = new System.Drawing.Point(65, 35);
     615      this.randomSeedLabel.Location = new System.Drawing.Point(6, 35);
    609616      this.randomSeedLabel.Name = "randomSeedLabel";
    610617      this.randomSeedLabel.Size = new System.Drawing.Size(78, 13);
     
    612619      this.randomSeedLabel.Text = "&Random Seed:";
    613620      //
     621      // label6
     622      //
     623      this.label6.Anchor = System.Windows.Forms.AnchorStyles.None;
     624      this.label6.AutoSize = true;
     625      this.label6.Location = new System.Drawing.Point(357, 201);
     626      this.label6.Name = "label6";
     627      this.label6.Size = new System.Drawing.Size(87, 13);
     628      this.label6.TabIndex = 4;
     629      this.label6.Text = "(ShakingFactors)";
     630      //
     631      // label5
     632      //
     633      this.label5.Anchor = System.Windows.Forms.AnchorStyles.None;
     634      this.label5.AutoSize = true;
     635      this.label5.Location = new System.Drawing.Point(357, 149);
     636      this.label5.Name = "label5";
     637      this.label5.Size = new System.Drawing.Size(114, 13);
     638      this.label5.TabIndex = 4;
     639      this.label5.Text = "(MaximumGenerations)";
     640      //
     641      // label4
     642      //
     643      this.label4.Anchor = System.Windows.Forms.AnchorStyles.None;
     644      this.label4.AutoSize = true;
     645      this.label4.Location = new System.Drawing.Point(356, 123);
     646      this.label4.Name = "label4";
     647      this.label4.Size = new System.Drawing.Size(61, 13);
     648      this.label4.TabIndex = 4;
     649      this.label4.Text = "(ESlambda)";
     650      //
     651      // label3
     652      //
     653      this.label3.Anchor = System.Windows.Forms.AnchorStyles.None;
     654      this.label3.AutoSize = true;
     655      this.label3.Location = new System.Drawing.Point(357, 97);
     656      this.label3.Name = "label3";
     657      this.label3.Size = new System.Drawing.Size(42, 13);
     658      this.label3.TabIndex = 4;
     659      this.label3.Text = "(ESrho)";
     660      //
     661      // label2
     662      //
     663      this.label2.Anchor = System.Windows.Forms.AnchorStyles.None;
     664      this.label2.AutoSize = true;
     665      this.label2.Location = new System.Drawing.Point(357, 71);
     666      this.label2.Name = "label2";
     667      this.label2.Size = new System.Drawing.Size(41, 13);
     668      this.label2.TabIndex = 4;
     669      this.label2.Text = "(ESmu)";
     670      //
    614671      // populationSizeLabel
    615672      //
    616673      this.populationSizeLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    617674      this.populationSizeLabel.AutoSize = true;
    618       this.populationSizeLabel.Location = new System.Drawing.Point(65, 71);
     675      this.populationSizeLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
     676      this.populationSizeLabel.Location = new System.Drawing.Point(6, 71);
    619677      this.populationSizeLabel.Name = "populationSizeLabel";
    620       this.populationSizeLabel.Size = new System.Drawing.Size(25, 13);
     678      this.populationSizeLabel.Size = new System.Drawing.Size(40, 13);
    621679      this.populationSizeLabel.TabIndex = 4;
    622       this.populationSizeLabel.Text = "Mu:";
     680      this.populationSizeLabel.Text = "Mu (µ):";
    623681      //
    624682      // lambdaTextBox
    625683      //
    626684      this.lambdaTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    627       this.lambdaTextBox.Location = new System.Drawing.Point(218, 120);
     685      this.lambdaTextBox.Location = new System.Drawing.Point(168, 120);
    628686      this.lambdaTextBox.Name = "lambdaTextBox";
    629687      this.lambdaTextBox.Size = new System.Drawing.Size(186, 20);
     
    636694      this.scopesTabPage.Name = "scopesTabPage";
    637695      this.scopesTabPage.Padding = new System.Windows.Forms.Padding(3);
    638       this.scopesTabPage.Size = new System.Drawing.Size(518, 497);
     696      this.scopesTabPage.Size = new System.Drawing.Size(493, 461);
    639697      this.scopesTabPage.TabIndex = 2;
    640698      this.scopesTabPage.Text = "Scopes";
     
    648706      this.scopeView.Name = "scopeView";
    649707      this.scopeView.Scope = null;
    650       this.scopeView.Size = new System.Drawing.Size(512, 491);
     708      this.scopeView.Size = new System.Drawing.Size(487, 455);
    651709      this.scopeView.TabIndex = 0;
    652710      //
     
    655713      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    656714      this.abortButton.Enabled = false;
    657       this.abortButton.Location = new System.Drawing.Point(81, 529);
     715      this.abortButton.Location = new System.Drawing.Point(81, 527);
    658716      this.abortButton.Name = "abortButton";
    659717      this.abortButton.Size = new System.Drawing.Size(75, 23);
     
    666724      //
    667725      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    668       this.resetButton.Location = new System.Drawing.Point(162, 529);
     726      this.resetButton.Location = new System.Drawing.Point(162, 527);
    669727      this.resetButton.Name = "resetButton";
    670728      this.resetButton.Size = new System.Drawing.Size(75, 23);
     
    677735      //
    678736      this.cloneEngineButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    679       this.cloneEngineButton.Location = new System.Drawing.Point(420, 529);
     737      this.cloneEngineButton.Location = new System.Drawing.Point(395, 527);
    680738      this.cloneEngineButton.Name = "cloneEngineButton";
    681739      this.cloneEngineButton.Size = new System.Drawing.Size(106, 23);
     
    684742      this.cloneEngineButton.UseVisualStyleBackColor = true;
    685743      this.cloneEngineButton.Click += new System.EventHandler(this.cloneEngineButton_Click);
     744      //
     745      // toolTip
     746      //
     747      this.toolTip.AutomaticDelay = 200;
     748      this.toolTip.AutoPopDelay = 10000;
     749      this.toolTip.InitialDelay = 200;
     750      this.toolTip.ReshowDelay = 40;
     751      //
     752      // problemDimensionLabel
     753      //
     754      this.problemDimensionLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
     755      this.problemDimensionLabel.AutoSize = true;
     756      this.problemDimensionLabel.Location = new System.Drawing.Point(7, 175);
     757      this.problemDimensionLabel.Name = "problemDimensionLabel";
     758      this.problemDimensionLabel.Size = new System.Drawing.Size(100, 13);
     759      this.problemDimensionLabel.TabIndex = 12;
     760      this.problemDimensionLabel.Text = "Problem Dimension:";
     761      //
     762      // problemDimensionTextBox
     763      //
     764      this.problemDimensionTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
     765      this.problemDimensionTextBox.Location = new System.Drawing.Point(168, 172);
     766      this.problemDimensionTextBox.Name = "problemDimensionTextBox";
     767      this.problemDimensionTextBox.Size = new System.Drawing.Size(186, 20);
     768      this.problemDimensionTextBox.TabIndex = 13;
     769      this.problemDimensionTextBox.Validated += new System.EventHandler(this.problemDimensionTextBox_Validated);
    686770      //
    687771      // ESEditor
     
    695779      this.Controls.Add(this.executeButton);
    696780      this.Name = "ESEditor";
    697       this.Size = new System.Drawing.Size(526, 552);
     781      this.Size = new System.Drawing.Size(501, 550);
    698782      this.tabControl.ResumeLayout(false);
    699783      this.parametersTabPage.ResumeLayout(false);
     
    722806    private System.Windows.Forms.TextBox maximumGenerationsTextBox;
    723807    private System.Windows.Forms.Label maximumGenerationsLabel;
    724     private System.Windows.Forms.TextBox initialMutationStrengthTextBox;
     808    private System.Windows.Forms.TextBox initialMutationStrengthVectorTextBox;
    725809    private System.Windows.Forms.Label initialMutationStrengthLabel;
    726810    private System.Windows.Forms.TextBox randomSeedTextBox;
     
    746830    private System.Windows.Forms.Button viewSolutionGenerationButton;
    747831    private System.Windows.Forms.Button viewProblemInitializationButton;
    748     private System.Windows.Forms.TextBox targetSuccessRateTextBox;
     832    private System.Windows.Forms.TextBox generalLearningRateTextBox;
    749833    private System.Windows.Forms.Label targetSuccessRateLabel;
    750     private System.Windows.Forms.CheckBox useSuccessRuleCheckBox;
    751834    private System.Windows.Forms.Button setRecombinationButton;
    752835    private System.Windows.Forms.Button viewRecombinationButton;
     
    761844    private System.Windows.Forms.TextBox learningRateTextBox;
    762845    private System.Windows.Forms.Label label1;
    763     private System.Windows.Forms.TextBox dampeningFactorTextBox;
    764     private System.Windows.Forms.Label dampeningFactorLabel;
     846    private System.Windows.Forms.Label label5;
     847    private System.Windows.Forms.Label label4;
     848    private System.Windows.Forms.Label label3;
     849    private System.Windows.Forms.Label label2;
     850    private System.Windows.Forms.Label label6;
     851    private System.Windows.Forms.Label label8;
     852    private System.Windows.Forms.Label label7;
     853    private System.Windows.Forms.ToolTip toolTip;
     854    private System.Windows.Forms.TextBox problemDimensionTextBox;
     855    private System.Windows.Forms.Label problemDimensionLabel;
    765856  }
    766857}
  • trunk/sources/HeuristicLab.ES/ESEditor.cs

    r896 r1091  
    5252    public ESEditor() {
    5353      InitializeComponent();
     54      problemDimensionTextBox.Text = "1";
    5455    }
    5556    /// <summary>
     
    9394      lambdaTextBox.Text = ES.Lambda.ToString();
    9495      learningRateTextBox.Text = ES.LearningRate.ToString();
     96      generalLearningRateTextBox.Text = ES.GeneralLearningRate.ToString();
    9597    }
    9698
     
    110112        evaluationTextBox.Text = ES.Evaluator.GetType().Name;
    111113        recombinationTextBox.Text = ES.Recombinator.GetType().Name;
     114        initialMutationStrengthVectorTextBox.Text = ArrayToString<double>(ES.ShakingFactors);
    112115      }
    113116    }
     
    120123      lambdaTextBox.DataBindings.Add("Text", ES, "Lambda");
    121124      maximumGenerationsTextBox.DataBindings.Add("Text", ES, "MaximumGenerations");
    122       initialMutationStrengthTextBox.DataBindings.Add("Text", ES, "ShakingFactor");
    123       targetSuccessRateTextBox.DataBindings.Add("Text", ES, "SuccessProbability");
     125      generalLearningRateTextBox.DataBindings.Add("Text", ES, "GeneralLearningRate");
    124126      learningRateTextBox.DataBindings.Add("Text", ES, "LearningRate");
    125       dampeningFactorTextBox.DataBindings.Add("Text", ES, "DampeningFactor");
    126       useSuccessRuleCheckBox.DataBindings.Add("Checked", ES, "UseSuccessRule");
    127127    }
    128128
     
    229229    #endregion
    230230
    231     #region CheckBox Events
    232     private void useSuccessRuleCheckBox_CheckedChanged(object sender, EventArgs e) {
    233       targetSuccessRateTextBox.Enabled = useSuccessRuleCheckBox.Checked;
    234       learningRateTextBox.Enabled = useSuccessRuleCheckBox.Checked;
    235       dampeningFactorTextBox.Enabled = useSuccessRuleCheckBox.Checked;
    236     }
    237     #endregion
    238 
    239231    #region RadioButton Events
    240232    private void plusRadioButton_CheckedChanged(object sender, EventArgs e) {
     
    246238    }
    247239    #endregion
     240
     241    private string ArrayToString<T>(T[] array) {
     242      StringBuilder s = new StringBuilder();
     243      foreach (T element in array)
     244        s.Append(element + "; ");
     245      s.Remove(s.Length - 2, 2);
     246      return s.ToString();
     247    }
     248
     249    private double[] StringToDoubleArray(string str) {
     250     
     251      string[] s = str.Split(new char[] { ';' });
     252      double[] tmp = new double[s.Length];
     253      try {
     254        for (int i = 0; i < s.Length; i++) {
     255          tmp[i] = double.Parse(s[i]);
     256        }
     257      } catch (FormatException) {       
     258        return null;
     259      }
     260      return tmp;
     261    }
     262
     263    private void initialMutationStrengthVectorTextBox_Validated(object sender, EventArgs e) {
     264      double[] tmp = StringToDoubleArray(initialMutationStrengthVectorTextBox.Text);
     265      if (tmp != null) ES.ShakingFactors = tmp;
     266      else MessageBox.Show("Please use colons \";\" (without the quotes) to delimite the items like this: " + (1.2).ToString() + ";" + (1.1).ToString() + ";" + (3.453).ToString());
     267      int dim = int.Parse(problemDimensionTextBox.Text);
     268      if (ES.ShakingFactors.Length != dim) {
     269        problemDimensionTextBox.Text = ES.ShakingFactors.Length.ToString();
     270      }
     271      Refresh();
     272    }
     273
     274    private void problemDimensionTextBox_Validated(object sender, EventArgs e) {
     275      double[] tmp = StringToDoubleArray(initialMutationStrengthVectorTextBox.Text);
     276      if (tmp != null) {
     277        int dim = 0;
     278        try {
     279          dim = int.Parse(problemDimensionTextBox.Text);
     280          if (dim < 1) throw new FormatException();
     281        } catch (FormatException) {
     282          MessageBox.Show("Problem Dimension must contain an integer > 0");
     283        }
     284        double[] shakingFactors = new double[dim];
     285        for (int i = 0; i < dim; i++) {
     286          shakingFactors[i] = tmp[i % tmp.Length];
     287        }
     288        ES.ShakingFactors = shakingFactors;
     289        Refresh();
     290      }
     291    }
    248292  }
    249293}
  • trunk/sources/HeuristicLab.ES/ESEditor.resx

    r71 r1091  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    119119  </resheader>
     120  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     121    <value>7, 3</value>
     122  </metadata>
     123  <data name="initialMutationStrengthVectorTextBox.ToolTip" xml:space="preserve">
     124    <value>Enter a pattern that is used to generate the initial strategy vector.
     125This can be a single number, or a pattern of numbers which is used until the dimension is reached.
     126Use the colon ; to separate two numbers.</value>
     127  </data>
     128  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     129    <value>26</value>
     130  </metadata>
    120131</root>
Note: See TracChangeset for help on using the changeset viewer.