Changeset 13787 for branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/SolverView.cs
- Timestamp:
- 04/24/16 10:03:52 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/SolverView.cs
r13774 r13787 28 28 using HeuristicLab.OptimizationExpertSystem.Common; 29 29 using System; 30 using System.Linq; 30 31 using System.Windows.Forms; 31 32 … … 44 45 algorithmCloneButton.Text = string.Empty; 45 46 algorithmCloneButton.Image = VSImageLibrary.Clone; 46 recommendRefreshButton.Text = string.Empty;47 recommendRefreshButton.Image = VSImageLibrary.Refresh;48 47 seedingStrategyView = new EnumValueView<SeedingStrategyTypes>() { 49 48 Dock = DockStyle.Fill … … 68 67 seedingStrategyView.Content = null; 69 68 seedingSolutionsView.Content = null; 70 recommenderViewHost.Content = null;71 69 } else { 72 70 maxEvaluationsView.Content = Content.MaximumEvaluations; … … 76 74 seedingStrategyView.Content = Content.SeedingStrategy; 77 75 seedingSolutionsView.Content = Content.SolutionSeedingPool; 78 recommenderViewHost.Content = Content.AlgorithmInstanceRecommender;79 76 } 80 77 } finally { SuppressEvents = false; } 81 78 UpdateSuggestedInstancesCombobox(); 82 UpdateRecommenderCombobox();83 79 } 84 80 … … 91 87 } 92 88 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 93 108 protected override void OnAlgorithmInstanceStarted(IAlgorithm algorithm) { 94 109 base.OnAlgorithmInstanceStarted(algorithm); … … 97 112 } 98 113 99 protected override void On SuggestedInstancesChanged() {100 base.On SuggestedInstancesChanged();114 protected override void OnRecommendationModelChanged() { 115 base.OnRecommendationModelChanged(); 101 116 UpdateSuggestedInstancesCombobox(); 102 117 } 118 #endregion 103 119 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 141 121 private void AlgorithmStartButtonOnClick(object sender, EventArgs e) { 142 122 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); 144 124 } 145 125 146 126 private void AlgorithmCloneButtonOnClick(object sender, EventArgs e) { 147 127 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()); 149 129 } 150 130 … … 152 132 if (InvokeRequired) { Invoke((Action<object, EventArgs>)SuggestedInstancesComboBoxOnSelectedIndexChanged, sender, e); return; } 153 133 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]; 155 135 solverParametersView.Content = alg.Parameters; 156 136 var engineAlg = alg as EngineAlgorithm; … … 163 143 SetEnabledStateOfControls(); 164 144 } 145 #endregion 165 146 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 } 172 159 } 173 174 private void button1_Click(object sender, EventArgs e) { 175 Content.UpdateSuggestions(); 176 } 160 #endregion 177 161 } 178 162 }
Note: See TracChangeset
for help on using the changeset viewer.