Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/23/20 16:21:55 (4 years ago)
Author:
abeham
Message:

#2521:

  • Moving solution creator parameter from problems to algorithms (breaking wiring in some HeuristicOptimizationProblems)
  • Disallowing evaluator or encoding changes in encoding-specific base problems (to avoid confusion in derived problems whether this needs to be handled or not)
  • Added private set to ReferenceParameter property (serialization)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs

    r17513 r17695  
    7070      get { return (OptionalValueParameter<VRPSolution>)Parameters["BestKnownSolution"]; }
    7171    }
    72     public IConstrainedValueParameter<IVRPCreator> SolutionCreatorParameter {
    73       get { return (IConstrainedValueParameter<IVRPCreator>)Parameters["SolutionCreator"]; }
    74     }
    75     IParameter IHeuristicOptimizationProblem.SolutionCreatorParameter {
    76       get { return SolutionCreatorParameter; }
    77     }
    7872    public IValueParameter<IVRPEvaluator> EvaluatorParameter {
    7973      get { return (IValueParameter<IVRPEvaluator>)Parameters["Evaluator"]; }
     
    106100    IEvaluator IHeuristicOptimizationProblem.Evaluator {
    107101      get { return this.Evaluator; }
    108     }
    109 
    110     ISolutionCreator IHeuristicOptimizationProblem.SolutionCreator {
    111       get { return SolutionCreatorParameter.Value; }
    112     }
    113     public IVRPCreator SolutionCreator {
    114       get { return SolutionCreatorParameter.Value; }
    115       set { SolutionCreatorParameter.Value = value; }
    116102    }
    117103    #endregion
     
    126112      Parameters.Add(new OptionalValueParameter<VRPSolution>("BestKnownSolution", "The best known solution of this VRP instance."));
    127113
    128       Parameters.Add(new ConstrainedValueParameter<IVRPCreator>("SolutionCreator", "The operator which should be used to create new VRP solutions."));
    129114      Parameters.Add(new ValueParameter<IVRPEvaluator>("Evaluator", "The operator which should be used to evaluate VRP solutions."));
    130115
     
    154139
    155140    #region Events
    156     public event EventHandler SolutionCreatorChanged;
    157     private void OnSolutionCreatorChanged() {
    158       EventHandler handler = SolutionCreatorChanged;
    159       if (handler != null) handler(this, EventArgs.Empty);
    160     }
    161141    public event EventHandler EvaluatorChanged;
    162142    private void OnEvaluatorChanged() {
     
    184164      BestKnownSolutionParameter.ValueChanged += new EventHandler(BestKnownSolutionParameter_ValueChanged);
    185165      EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
    186       SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged);
    187166    }
    188167
     
    225204      EvaluatorParameter.Value = ProblemInstance.SolutionEvaluator;
    226205
    227       OnSolutionCreatorChanged();
    228206      OnEvaluatorChanged();
    229207      OnOperatorsChanged();
     
    236214      AttachProblemInstanceEventHandlers();
    237215
    238       OnSolutionCreatorChanged();
    239216      OnEvaluatorChanged();
    240217
     
    242219    }
    243220
    244     private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) {
    245       OnSolutionCreatorChanged();
    246     }
    247221    private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {
    248222      if (ProblemInstance != null)
     
    252226
    253227    private void InitializeOperators() {
    254       var solutionCreatorParameter = SolutionCreatorParameter as ConstrainedValueParameter<IVRPCreator>;
    255       solutionCreatorParameter.ValidValues.Clear();
    256 
    257228      Operators.Clear();
    258229
     
    266237
    267238        IVRPCreator defaultCreator = null;
    268         foreach (IVRPCreator creator in Operators.Where(o => o is IVRPCreator)) {
     239        /*foreach (IVRPCreator creator in Operators.Where(o => o is IVRPCreator)) {
    269240          solutionCreatorParameter.ValidValues.Add(creator);
    270241          if (creator is Encodings.Alba.RandomCreator)
    271242            defaultCreator = creator;
    272         }
     243        }*/
    273244        Operators.Add(new AlbaLambdaInterchangeLocalImprovementOperator());
    274         if (defaultCreator != null)
    275           solutionCreatorParameter.Value = defaultCreator;
     245        /*if (defaultCreator != null)
     246          solutionCreatorParameter.Value = defaultCreator;*/
    276247      }
    277248
     
    287258      if (ProblemInstance != null) {
    288259        foreach (ISingleObjectiveImprovementOperator op in Operators.OfType<ISingleObjectiveImprovementOperator>()) {
    289           op.SolutionParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
     260          //op.SolutionParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
    290261          op.SolutionParameter.Hidden = true;
    291262        }
    292263        foreach (ISingleObjectivePathRelinker op in Operators.OfType<ISingleObjectivePathRelinker>()) {
    293           op.ParentsParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
     264          //op.ParentsParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
    294265          op.ParentsParameter.Hidden = true;
    295266        }
    296267        foreach (ISolutionSimilarityCalculator op in Operators.OfType<ISolutionSimilarityCalculator>()) {
    297           op.SolutionVariableName = SolutionCreator.VRPToursParameter.ActualName;
     268          //op.SolutionVariableName = SolutionCreator.VRPToursParameter.ActualName;
    298269          op.QualityVariableName = ProblemInstance.SolutionEvaluator.QualityParameter.ActualName;
    299270          var calc = op as VRPSimilarityCalculator;
Note: See TracChangeset for help on using the changeset viewer.