Free cookie consent management tool by TermsFeed Policy Generator

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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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}
Note: See TracChangeset for help on using the changeset viewer.