Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/15/10 09:41:51 (14 years ago)
Author:
abeham
Message:

#1258

  • Added detection if a certain link in the chain implements INotifyPropertyChanged (still missing -> fire only on a change to the "right" property)
  • Added optional parameter LambdaExpression in the binding
  • Changed cloning behavior of binding -> bindings have to be cloned only after the clone is fully constructed
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ParameterBinding/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs

    r4787 r4790  
    3333using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3434using HeuristicLab.PluginInfrastructure;
     35using System.Linq.Expressions;
    3536
    3637namespace HeuristicLab.Problems.TravelingSalesman {
     
    148149    }
    149150    public override IDeepCloneable Clone(Cloner cloner) {
    150       return new TravelingSalesmanProblem(this, cloner);
     151      TravelingSalesmanProblem clone = new TravelingSalesmanProblem(this, cloner);
     152      clone.parameterBindingList = this.parameterBindingList.Select(x => cloner.Clone(x)).ToList();
     153      return clone;
    151154    }
    152155    public TravelingSalesmanProblem()
     
    178181      InitializeOperators();
    179182      AttachEventHandlers();
    180 
     183      CreateBindings();
     184    }
     185
     186    private void CreateBindings() {
     187      #region Analyzers
    181188      AddBinding("BestTSPSolutionAnalyzer.QualityParameter.ActualName", "Evaluator.QualityParameter.ActualName");
    182189      AddBinding("BestTSPSolutionAnalyzer.CoordinatesParameter.ActualName", "CoordinatesParameter.Name");
     
    185192      AddBinding("BestTSPSolutionAnalyzer.BestKnownSolutionParameter.ActualName", "BestKnownSolutionParameter.Name");
    186193      AddBinding("BestTSPSolutionAnalyzer.MaximizationParameter.ActualName", "MaximizationParameter.Name");
    187       BestTSPSolutionAnalyzer.ResultsParameter.ActualName = "Results";
     194      AddBinding("TSPAlleleFrequencyAnalyzer.MaximizationParameter.ActualName", "MaximizationParameter.Name");
     195      AddBinding("TSPAlleleFrequencyAnalyzer.CoordinatesParameter.ActualName", "CoordinatesParameter.Name");
     196      AddBinding("TSPAlleleFrequencyAnalyzer.SolutionParameter.ActualName", "SolutionCreator.PermutationParameter.ActualName");
     197      AddBinding("TSPAlleleFrequencyAnalyzer.QualityParameter.ActualName", "Evaluator.QualityParameter.ActualName");
     198      AddBinding("TSPAlleleFrequencyAnalyzer.BestKnownSolutionParameter.ActualName", "BestKnownSolutionParameter.Name");
     199      AddBinding("TSPPopulationDiversityAnalyzer.MaximizationParameter.ActualName", "MaximizationParameter.Name");
     200      AddBinding("TSPPopulationDiversityAnalyzer.SolutionParameter.ActualName", "SolutionCreator.PermutationParameter.ActualName");
     201      AddBinding("TSPPopulationDiversityAnalyzer.QualityParameter.ActualName", "Evaluator.QualityParameter.ActualName");
     202      #endregion
     203      Expression<Func<IEnumerable<string>,IntValue>> tmp = (x) => new IntValue(x.Count());
     204      AddBinding("SolutionCreator.LengthParameter.Value", "Coordinates.RowNames", tmp);
     205      Expression<Func<IPermutationCreator, PermutationType>> tmp2 = (x) => new PermutationType(PermutationTypes.RelativeUndirected);
     206      AddBinding("SolutionCreator.PermutationTypeParameter.Value", "SolutionCreator", tmp2);
    188207    }
    189208
     
    227246      ParameterizeSolutionCreator();
    228247      ParameterizeEvaluator();
    229       ParameterizeAnalyzers();
    230248      ParameterizeOperators();
    231249      OnSolutionCreatorChanged();
     
    233251    private void SolutionCreator_PermutationParameter_ActualNameChanged(object sender, EventArgs e) {
    234252      ParameterizeEvaluator();
    235       ParameterizeAnalyzers();
    236253      ParameterizeOperators();
    237254    }
    238255    private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {
    239       Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    240256      ParameterizeEvaluator();
    241257      UpdateMoveEvaluators();
    242       ParameterizeAnalyzers();
    243258      ClearDistanceMatrix();
    244259      OnEvaluatorChanged();
    245     }
    246     private void Evaluator_QualityParameter_ActualNameChanged(object sender, EventArgs e) {
    247       ParameterizeAnalyzers();
    248260    }
    249261    private void MoveGenerator_InversionMoveParameter_ActualNameChanged(object sender, EventArgs e) {
     
    278290      SolutionCreator.PermutationParameter.ActualNameChanged += new EventHandler(SolutionCreator_PermutationParameter_ActualNameChanged);
    279291      EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
    280       Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    281292    }
    282293
     
    286297      operators.Add(new TSPAlleleFrequencyAnalyzer());
    287298      operators.Add(new TSPPopulationDiversityAnalyzer());
    288       ParameterizeAnalyzers();
     299      BestTSPSolutionAnalyzer.ResultsParameter.ActualName = "Results";
     300      TSPAlleleFrequencyAnalyzer.ResultsParameter.ActualName = "Results";
     301      TSPPopulationDiversityAnalyzer.ResultsParameter.ActualName = "Results";
    289302      operators.AddRange(ApplicationManager.Manager.GetInstances<IPermutationOperator>().Cast<IOperator>());
    290303      ParameterizeOperators();
     
    314327    }
    315328    private void ParameterizeSolutionCreator() {
    316       SolutionCreator.LengthParameter.Value = new IntValue(Coordinates.Rows);
    317       SolutionCreator.PermutationTypeParameter.Value = new PermutationType(PermutationTypes.RelativeUndirected);
     329      //SolutionCreator.LengthParameter.Value = new IntValue(Coordinates.Rows);
     330      //SolutionCreator.PermutationTypeParameter.Value = new PermutationType(PermutationTypes.RelativeUndirected);
    318331    }
    319332    private void ParameterizeEvaluator() {
     
    325338        evaluator.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name;
    326339        evaluator.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name;
    327       }
    328     }
    329     private void ParameterizeAnalyzers() {
    330       /*if (BestTSPSolutionAnalyzer != null) {
    331         BestTSPSolutionAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
    332         BestTSPSolutionAnalyzer.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
    333         BestTSPSolutionAnalyzer.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
    334         BestTSPSolutionAnalyzer.ResultsParameter.ActualName = "Results";
    335         BestTSPSolutionAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;
    336         BestTSPSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;
    337         BestTSPSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
    338       }*/
    339 
    340       if (TSPAlleleFrequencyAnalyzer != null) {
    341         TSPAlleleFrequencyAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
    342         TSPAlleleFrequencyAnalyzer.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
    343         TSPAlleleFrequencyAnalyzer.SolutionParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
    344         TSPAlleleFrequencyAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
    345         TSPAlleleFrequencyAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;
    346         TSPAlleleFrequencyAnalyzer.ResultsParameter.ActualName = "Results";
    347       }
    348 
    349       if (TSPPopulationDiversityAnalyzer != null) {
    350         TSPPopulationDiversityAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
    351         TSPPopulationDiversityAnalyzer.SolutionParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
    352         TSPPopulationDiversityAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
    353         TSPPopulationDiversityAnalyzer.ResultsParameter.ActualName = "Results";
    354340      }
    355341    }
Note: See TracChangeset for help on using the changeset viewer.