Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/30/10 22:31:40 (14 years ago)
Author:
abeham
Message:

#866

  • Updated ExternalEvaluationProblem
  • Removed the custom crossover, manipulator, and solution creator (they're replaced with the UserDefined ones)
  • Renamed all drivers to channels
  • Added a client that takes the role of the previous driver
  • Moved the BestScopeSolutionAnalyzer into Analysis (it's a generic operator after all)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluationProblem.cs

    r3864 r3872  
    3131using HeuristicLab.Parameters;
    3232using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     33using HeuristicLab.Optimization.Operators;
     34using HeuristicLab.Analysis;
    3335
    3436namespace HeuristicLab.Problems.ExternalEvaluation {
     
    4850
    4951    #region Parameters
    50     private IValueParameter<IExternalEvaluationDriver> DriverParameter {
    51       get { return (IValueParameter<IExternalEvaluationDriver>)Parameters["Driver"]; }
    52     }
    53     private IValueParameter<IExternalEvaluationProblemEvaluator> EvaluatorParameter {
     52    public IValueParameter<IEvaluationServiceClient> ClientParameter {
     53      get { return (IValueParameter<IEvaluationServiceClient>)Parameters["Client"]; }
     54    }
     55    public IValueParameter<IExternalEvaluationProblemEvaluator> EvaluatorParameter {
    5456      get { return (IValueParameter<IExternalEvaluationProblemEvaluator>)Parameters["Evaluator"]; }
    5557    }
     
    112114      get { return OperatorsParameter.Value; }
    113115    }
    114     private BestExternalEvaluationSolutionAnalyzer BestExternalEvaluationSolutionAnalyzer {
    115       get { return OperatorsParameter.Value.OfType<BestExternalEvaluationSolutionAnalyzer>().FirstOrDefault(); }
     116    private BestScopeSolutionAnalyzer BestScopeSolutionAnalyzer {
     117      get { return OperatorsParameter.Value.OfType<BestScopeSolutionAnalyzer>().FirstOrDefault(); }
    116118    }
    117119    #endregion
     
    122124      : base() {
    123125      ExternalEvaluator evaluator = new ExternalEvaluator();
    124       ExternalEvaluationSolutionCreator solutionCreator = new ExternalEvaluationSolutionCreator();
    125 
    126       Parameters.Add(new ValueParameter<IExternalEvaluationDriver>("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."));
    127129      Parameters.Add(new ValueParameter<IExternalEvaluationProblemEvaluator>("Evaluator", "The evaluator that collects the values to exchange.", evaluator));
    128130      Parameters.Add(new ValueParameter<ISolutionCreator>("SolutionCreator", "An operator to create the solution components.", solutionCreator));
     
    168170    }
    169171    private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {
     172      Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
     173      ParameterizeOperators();
    170174      OnEvaluatorChanged();
    171175    }
    172176    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
    174221      string qualityName = Evaluator.QualityParameter.ActualName;
    175222      foreach (IOperator op in OperatorsParameter.Value) {
     
    182229      }
    183230    }
    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     #endregion
    197 
    198     #region Helpers
    199     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     }
    224231    #endregion
    225232  }
Note: See TracChangeset for help on using the changeset viewer.