Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/24/16 10:03:52 (8 years ago)
Author:
abeham
Message:

#2457: worked on performance modeling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/SolverView.cs

    r13774 r13787  
    2828using HeuristicLab.OptimizationExpertSystem.Common;
    2929using System;
     30using System.Linq;
    3031using System.Windows.Forms;
    3132
     
    4445      algorithmCloneButton.Text = string.Empty;
    4546      algorithmCloneButton.Image = VSImageLibrary.Clone;
    46       recommendRefreshButton.Text = string.Empty;
    47       recommendRefreshButton.Image = VSImageLibrary.Refresh;
    4847      seedingStrategyView = new EnumValueView<SeedingStrategyTypes>() {
    4948        Dock = DockStyle.Fill
     
    6867          seedingStrategyView.Content = null;
    6968          seedingSolutionsView.Content = null;
    70           recommenderViewHost.Content = null;
    7169        } else {
    7270          maxEvaluationsView.Content = Content.MaximumEvaluations;
     
    7674          seedingStrategyView.Content = Content.SeedingStrategy;
    7775          seedingSolutionsView.Content = Content.SolutionSeedingPool;
    78           recommenderViewHost.Content = Content.AlgorithmInstanceRecommender;
    7976        }
    8077      } finally { SuppressEvents = false; }
    8178      UpdateSuggestedInstancesCombobox();
    82       UpdateRecommenderCombobox();
    8379    }
    8480
     
    9187    }
    9288
     89    #region Update Controls
     90    private void UpdateSuggestedInstancesCombobox() {
     91      var prevSelection = (AlgorithmInstanceItem)suggestedInstancesComboBox.SelectedItem;
     92      var prevNewIndex = -1;
     93      suggestedInstancesComboBox.Items.Clear();
     94      if (Content == null) return;
     95
     96      var ranking = Content.GetAlgorithmInstanceRanking().ToList();
     97
     98      for (var i = 0; i < ranking.Count; i++) {
     99        suggestedInstancesComboBox.Items.Add(new AlgorithmInstanceItem(ranking[i]));
     100        if (prevSelection == null || ranking[i].Item1.Name == prevSelection.Item.Item1.Name)
     101          prevNewIndex = prevSelection == null ? 0 : i;
     102      }
     103      suggestedInstancesComboBox.SelectedIndex = prevNewIndex;
     104    }
     105    #endregion
     106
     107    #region Content Event Handlers
    93108    protected override void OnAlgorithmInstanceStarted(IAlgorithm algorithm) {
    94109      base.OnAlgorithmInstanceStarted(algorithm);
     
    97112    }
    98113
    99     protected override void OnSuggestedInstancesChanged() {
    100       base.OnSuggestedInstancesChanged();
     114    protected override void OnRecommendationModelChanged() {
     115      base.OnRecommendationModelChanged();
    101116      UpdateSuggestedInstancesCombobox();
    102117    }
     118    #endregion
    103119
    104     private void UpdateSuggestedInstancesCombobox() {
    105       var prevSelection = (IAlgorithm)suggestedInstancesComboBox.SelectedItem;
    106       var prevNewIndex = -1;
    107       suggestedInstancesComboBox.Items.Clear();
    108       if (Content == null) return;
    109 
    110       for (var i = 0; i < Content.AlgorithmInstances.Count; i++) {
    111         suggestedInstancesComboBox.Items.Add(Content.AlgorithmInstances[i]);
    112         if (prevSelection == null || Content.AlgorithmInstances[i].Name == prevSelection.Name)
    113           prevNewIndex = prevSelection == null ? 0 : i;
    114       }
    115       if (prevNewIndex >= 0) suggestedInstancesComboBox.SelectedIndex = prevNewIndex;
    116     }
    117 
    118     private void UpdateRecommenderCombobox() {
    119       var prevSelection = Content.AlgorithmInstanceRecommender;
    120       var prevNewIndex = -1;
    121       recommenderComboBox.Items.Clear();
    122       if (Content == null) return;
    123 
    124       /*var i = 0;
    125       foreach (var type in ApplicationManager.Manager.GetTypes(typeof (IAlgorithmInstanceRecommender))) {
    126         var r = (IAlgorithmInstanceRecommender)Activator.CreateInstance(type, BindingFlags.CreateInstance, Content);
    127         recommenderComboBox.Items.Add(r);
    128         if (prevSelection == null || type == prevSelection.GetType())
    129           prevNewIndex = prevSelection == null ? 0 : i;
    130         i++;
    131       }
    132       if (prevNewIndex >= 0) recommenderComboBox.SelectedIndex = prevNewIndex;*/
    133       recommenderComboBox.Items.Add(new OverallBestRecommender(Content));
    134       if (prevSelection is OverallBestRecommender) recommenderComboBox.SelectedIndex = recommenderComboBox.Items.Count - 1;
    135       recommenderComboBox.Items.Add(new KNearestNeighborRecommender(Content));
    136       if (prevSelection is KNearestNeighborRecommender) recommenderComboBox.SelectedIndex = recommenderComboBox.Items.Count - 1;
    137       recommenderComboBox.Items.Add(new DistanceWeightedRecommender(Content));
    138       if (prevSelection is DistanceWeightedRecommender) recommenderComboBox.SelectedIndex = recommenderComboBox.Items.Count - 1;
    139     }
    140 
     120    #region Control Event Handlers
    141121    private void AlgorithmStartButtonOnClick(object sender, EventArgs e) {
    142122      if (suggestedInstancesComboBox.SelectedIndex >= 0)
    143         Content.StartAlgorithmAsync(suggestedInstancesComboBox.SelectedIndex);
     123        Content.StartAlgorithmAsync(Content.AlgorithmInstances.Select((a, i) => new { Alg = a, Index = i}).Single(x => x.Alg.Name == ((AlgorithmInstanceItem)suggestedInstancesComboBox.SelectedItem).Item.Item1.Name).Index);
    144124    }
    145125
    146126    private void AlgorithmCloneButtonOnClick(object sender, EventArgs e) {
    147127      if (suggestedInstancesComboBox.SelectedIndex >= 0)
    148         MainForm.ShowContent((IAlgorithm)Content.AlgorithmInstances[suggestedInstancesComboBox.SelectedIndex].Clone());
     128        MainForm.ShowContent((IAlgorithm)Content.AlgorithmInstances[Content.AlgorithmInstances.Select((a, i) => new { Alg = a, Index = i }).Single(x => x.Alg.Name == ((AlgorithmInstanceItem)suggestedInstancesComboBox.SelectedItem).Item.Item1.Name).Index].Clone());
    149129    }
    150130
     
    152132      if (InvokeRequired) { Invoke((Action<object, EventArgs>)SuggestedInstancesComboBoxOnSelectedIndexChanged, sender, e); return; }
    153133      if (suggestedInstancesComboBox.SelectedIndex >= 0) {
    154         var alg = Content.AlgorithmInstances[suggestedInstancesComboBox.SelectedIndex];
     134        var alg = Content.AlgorithmInstances[Content.AlgorithmInstances.Select((a, i) => new { Alg = a, Index = i }).Single(x => x.Alg.Name == ((AlgorithmInstanceItem)suggestedInstancesComboBox.SelectedItem).Item.Item1.Name).Index];
    155135        solverParametersView.Content = alg.Parameters;
    156136        var engineAlg = alg as EngineAlgorithm;
     
    163143      SetEnabledStateOfControls();
    164144    }
     145    #endregion
    165146
    166     private void RecommenderComboBoxOnSelectedIndexChanged(object sender, EventArgs e) {
    167       if (InvokeRequired) { Invoke((Action<object, EventArgs>)RecommenderComboBoxOnSelectedIndexChanged, sender, e); return; }
    168       if (recommenderComboBox.SelectedIndex < 0) return;
    169       Content.AlgorithmInstanceRecommender = (IAlgorithmInstanceRecommender)recommenderComboBox.SelectedItem;
    170       recommenderViewHost.Content = Content.AlgorithmInstanceRecommender;
    171       Content.UpdateSuggestions();
     147    #region Helper Classes and Methods
     148    private class AlgorithmInstanceItem {
     149      private readonly Tuple<IAlgorithm, double> item;
     150      public Tuple<IAlgorithm, double> Item { get { return item; } }
     151
     152      public AlgorithmInstanceItem(Tuple<IAlgorithm, double> item) {
     153        this.item = item;
     154      }
     155
     156      public override string ToString() {
     157        return item.Item2.ToString("F0") + ": " + item.Item1.Name;
     158      }
    172159    }
    173 
    174     private void button1_Click(object sender, EventArgs e) {
    175       Content.UpdateSuggestions();
    176     }
     160    #endregion
    177161  }
    178162}
Note: See TracChangeset for help on using the changeset viewer.