Changeset 3872 for trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluationProblem.cs
- Timestamp:
- 05/30/10 22:31:40 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluationProblem.cs
r3864 r3872 31 31 using HeuristicLab.Parameters; 32 32 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 using HeuristicLab.Optimization.Operators; 34 using HeuristicLab.Analysis; 33 35 34 36 namespace HeuristicLab.Problems.ExternalEvaluation { … … 48 50 49 51 #region Parameters 50 p rivate IValueParameter<IExternalEvaluationDriver> DriverParameter {51 get { return (IValueParameter<IE xternalEvaluationDriver>)Parameters["Driver"]; }52 } 53 p rivateIValueParameter<IExternalEvaluationProblemEvaluator> EvaluatorParameter {52 public IValueParameter<IEvaluationServiceClient> ClientParameter { 53 get { return (IValueParameter<IEvaluationServiceClient>)Parameters["Client"]; } 54 } 55 public IValueParameter<IExternalEvaluationProblemEvaluator> EvaluatorParameter { 54 56 get { return (IValueParameter<IExternalEvaluationProblemEvaluator>)Parameters["Evaluator"]; } 55 57 } … … 112 114 get { return OperatorsParameter.Value; } 113 115 } 114 private Best ExternalEvaluationSolutionAnalyzer BestExternalEvaluationSolutionAnalyzer {115 get { return OperatorsParameter.Value.OfType<Best ExternalEvaluationSolutionAnalyzer>().FirstOrDefault(); }116 private BestScopeSolutionAnalyzer BestScopeSolutionAnalyzer { 117 get { return OperatorsParameter.Value.OfType<BestScopeSolutionAnalyzer>().FirstOrDefault(); } 116 118 } 117 119 #endregion … … 122 124 : base() { 123 125 ExternalEvaluator evaluator = new ExternalEvaluator(); 124 ExternalEvaluationSolutionCreator solutionCreator = new ExternalEvaluationSolutionCreator();125 126 Parameters.Add(new ValueParameter<IE xternalEvaluationDriver>("Driver", "The communication driver that is used to exchange data with the external process."));126 UserDefinedSolutionCreator solutionCreator = new UserDefinedSolutionCreator(); 127 128 Parameters.Add(new ValueParameter<IEvaluationServiceClient>("Client", "The client that is used to communicate with the external application.")); 127 129 Parameters.Add(new ValueParameter<IExternalEvaluationProblemEvaluator>("Evaluator", "The evaluator that collects the values to exchange.", evaluator)); 128 130 Parameters.Add(new ValueParameter<ISolutionCreator>("SolutionCreator", "An operator to create the solution components.", solutionCreator)); … … 168 170 } 169 171 private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) { 172 Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 173 ParameterizeOperators(); 170 174 OnEvaluatorChanged(); 171 175 } 172 176 private void Evaluator_QualityParameter_ActualNameChanged(object sender, EventArgs e) { 173 // TODO: Following code is not yet approved behavior, but it's the best effort I can make here regarding wiring 177 ParameterizeOperators(); 178 } 179 private void OperatorsParameter_ValueChanged(object sender, EventArgs e) { 180 OnOperatorsChanged(); 181 } 182 private void OperatorsParameter_Value_ItemsAdded(object sender, EventArgs e) { 183 OnOperatorsChanged(); 184 } 185 private void OperatorsParameter_Value_ItemsRemoved(object sender, EventArgs e) { 186 OnOperatorsChanged(); 187 } 188 private void OperatorsParameter_Value_CollectionReset(object sender, EventArgs e) { 189 OnOperatorsChanged(); 190 } 191 #endregion 192 193 #region Helpers 194 private void InitializeOperators() { 195 ItemList<IOperator> operators = OperatorsParameter.Value; 196 operators.Add(new BestScopeSolutionAnalyzer()); 197 ParameterizeAnalyzers(); 198 } 199 [StorableHook(HookType.AfterDeserialization)] 200 private void AttachEventHandlers() { 201 SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged); 202 EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged); 203 Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 204 OperatorsParameter.ValueChanged += new EventHandler(OperatorsParameter_ValueChanged); 205 OperatorsParameter.Value.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<IOperator>>(OperatorsParameter_Value_ItemsAdded); 206 OperatorsParameter.Value.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<IOperator>>(OperatorsParameter_Value_ItemsRemoved); 207 OperatorsParameter.Value.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<IOperator>>(OperatorsParameter_Value_CollectionReset); 208 } 209 private void ParameterizeAnalyzers() { 210 BestScopeSolutionAnalyzer.ResultsParameter.ActualName = "Results"; 211 BestScopeSolutionAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 212 BestScopeSolutionAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name; 213 BestScopeSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name; 214 BestScopeSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name; 215 } 216 private void ParameterizeEvaluator() { 217 Evaluator.ClientParameter.ActualName = ClientParameter.Name; 218 } 219 private void ParameterizeOperators() { 220 // This is a best effort approach to wiring 174 221 string qualityName = Evaluator.QualityParameter.ActualName; 175 222 foreach (IOperator op in OperatorsParameter.Value) { … … 182 229 } 183 230 } 184 private void OperatorsParameter_ValueChanged(object sender, EventArgs e) {185 OnOperatorsChanged();186 }187 private void OperatorsParameter_Value_ItemsAdded(object sender, EventArgs e) {188 OnOperatorsChanged();189 }190 private void OperatorsParameter_Value_ItemsRemoved(object sender, EventArgs e) {191 OnOperatorsChanged();192 }193 private void OperatorsParameter_Value_CollectionReset(object sender, EventArgs e) {194 OnOperatorsChanged();195 }196 #endregion197 198 #region Helpers199 private void InitializeOperators() {200 ItemList<IOperator> operators = OperatorsParameter.Value;201 operators.Add(new BestExternalEvaluationSolutionAnalyzer());202 ParameterizeAnalyzers();203 }204 [StorableHook(HookType.AfterDeserialization)]205 private void AttachEventHandlers() {206 SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged);207 EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);208 Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);209 OperatorsParameter.ValueChanged += new EventHandler(OperatorsParameter_ValueChanged);210 OperatorsParameter.Value.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<IOperator>>(OperatorsParameter_Value_ItemsAdded);211 OperatorsParameter.Value.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<IOperator>>(OperatorsParameter_Value_ItemsRemoved);212 OperatorsParameter.Value.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<IOperator>>(OperatorsParameter_Value_CollectionReset);213 }214 private void ParameterizeAnalyzers() {215 BestExternalEvaluationSolutionAnalyzer.ResultsParameter.ActualName = "Results";216 BestExternalEvaluationSolutionAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;217 BestExternalEvaluationSolutionAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;218 BestExternalEvaluationSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;219 BestExternalEvaluationSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;220 }221 private void ParameterizeEvaluator() {222 Evaluator.DriverParameter.ActualName = DriverParameter.Name;223 }224 231 #endregion 225 232 }
Note: See TracChangeset
for help on using the changeset viewer.