Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/22/10 22:58:43 (14 years ago)
Author:
abeham
Message:

Added move operators for real encoding and test functions #890

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs

    r3182 r3187  
    123123      set { BestKnownQualityParameter.Value = value; }
    124124    }
    125     private List<IRealVectorOperator> operators;
     125    private List<IOperator> operators;
    126126    public IEnumerable<IOperator> Operators {
    127       get { return operators.Cast<IOperator>(); }
     127      get { return operators; }
    128128    }
    129129    #endregion
     
    197197    private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {
    198198      ParameterizeEvaluator();
     199      UpdateMoveEvaluators();
    199200      Maximization.Value = Evaluator.Maximization;
    200201      BoundsParameter.Value = Evaluator.Bounds;
     
    226227        Bounds[e.Value, 0] = Bounds[e.Value, 1] - 0.1;
    227228    }
    228     private void BoundsParameter_NameChanged(object sender, EventArgs e) {
    229       ParameterizeOperators();
     229    private void MoveGenerator_AdditiveMoveParameter_ActualNameChanged(object sender, EventArgs e) {
     230      string name = ((ILookupParameter<AdditiveMove>)sender).ActualName;
     231      foreach (IAdditiveRealVectorMoveOperator op in Operators.OfType<IAdditiveRealVectorMoveOperator>()) {
     232        op.AdditiveMoveParameter.ActualName = name;
     233      }
    230234    }
    231235    #endregion
     
    237241      ProblemSizeParameter.ValueChanged += new EventHandler(ProblemSizeParameter_ValueChanged);
    238242      ProblemSize.ValueChanged += new EventHandler(ProblemSize_ValueChanged);
    239       BoundsParameter.NameChanged += new EventHandler(BoundsParameter_NameChanged);
    240243      BoundsParameter.ValueChanged += new EventHandler(BoundsParameter_ValueChanged);
    241244      Bounds.ToStringChanged += new EventHandler(Bounds_ToStringChanged);
     
    248251    }
    249252    private void InitializeOperators() {
    250       operators = new List<IRealVectorOperator>();
     253      operators = new List<IOperator>();
    251254      if (ApplicationManager.Manager != null) {
    252         operators.AddRange(ApplicationManager.Manager.GetInstances<IRealVectorOperator>());
     255        foreach (IRealVectorOperator op in ApplicationManager.Manager.GetInstances<IRealVectorOperator>())
     256          operators.Add(op);
     257        UpdateMoveEvaluators();
    253258        ParameterizeOperators();
    254259      }
    255       //InitializeMoveGenerators();
    256     }
    257     /*private void InitializeMoveGenerators() {
    258       foreach (ITwoOptPermutationMoveOperator op in Operators.OfType<ITwoOptPermutationMoveOperator>()) {
     260      InitializeMoveGenerators();
     261    }
     262    private void InitializeMoveGenerators() {
     263      foreach (IAdditiveRealVectorMoveOperator op in Operators.OfType<IAdditiveRealVectorMoveOperator>()) {
    259264        if (op is IMoveGenerator) {
    260           op.TwoOptMoveParameter.ActualNameChanged += new EventHandler(MoveGenerator_TwoOptMoveParameter_ActualNameChanged);
     265          op.AdditiveMoveParameter.ActualNameChanged += new EventHandler(MoveGenerator_AdditiveMoveParameter_ActualNameChanged);
    261266        }
    262267      }
    263       foreach (IThreeOptPermutationMoveOperator op in Operators.OfType<IThreeOptPermutationMoveOperator>()) {
    264         if (op is IMoveGenerator) {
    265           op.ThreeOptMoveParameter.ActualNameChanged += new EventHandler(MoveGenerator_ThreeOptMoveParameter_ActualNameChanged);
    266         }
    267       }
    268     }*/
     268    }
     269    private void UpdateMoveEvaluators() {
     270      if (ApplicationManager.Manager != null) {
     271        foreach (ISingleObjectiveTestFunctionMoveEvaluator op in Operators.OfType<ISingleObjectiveTestFunctionMoveEvaluator>().ToList())
     272          operators.Remove(op);
     273        foreach (ISingleObjectiveTestFunctionMoveEvaluator op in ApplicationManager.Manager.GetInstances<ISingleObjectiveTestFunctionMoveEvaluator>())
     274          if (op.EvaluatorType == Evaluator.GetType()) {
     275            operators.Add(op);
     276          }
     277        ParameterizeOperators();
     278        OnOperatorsChanged();
     279      }
     280    }
    269281    private void ParameterizeSolutionCreator() {
    270282      SolutionCreator.LengthParameter.Value = new IntValue(ProblemSize.Value);
     
    289301        op.BoundsParameter.ActualName = BoundsParameter.Name;
    290302      }
    291       /*foreach (IPermutationMoveOperator op in Operators.OfType<IPermutationMoveOperator>()) {
    292         op.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
    293       }
    294       foreach (ITSPPathMoveEvaluator op in Operators.OfType<ITSPPathMoveEvaluator>()) {
    295         op.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
    296         op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name;
    297         op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name;
    298       }*/
     303      foreach (IRealVectorMoveOperator op in Operators.OfType<IRealVectorMoveOperator>()) {
     304        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
     305      }
     306      foreach (IRealVectorMoveGenerator op in Operators.OfType<IRealVectorMoveGenerator>()) {
     307        op.BoundsParameter.ActualName = BoundsParameter.Name;
     308      }
     309      foreach (ISingleObjectiveTestFunctionAdditiveMoveEvaluator op in Operators.OfType<ISingleObjectiveTestFunctionAdditiveMoveEvaluator>()) {
     310        op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
     311        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
     312      }
    299313    }
    300314    #endregion
Note: See TracChangeset for help on using the changeset viewer.