Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/04/20 18:16:58 (4 years ago)
Author:
abeham
Message:

#2521: refactoring in progress

Location:
branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Creators/RandomPermutationCreator.cs

    r17226 r17587  
    4848      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
    4949    }
    50     public IValueParameter<PermutationType> PermutationTypeParameter {
    51       get { return (IValueParameter<PermutationType>)Parameters["PermutationType"]; }
     50    public IValueParameter<EnumValue<PermutationTypes>> PermutationTypeParameter {
     51      get { return (IValueParameter<EnumValue<PermutationTypes>>)Parameters["PermutationType"]; }
    5252    }
    5353
     
    6565      Parameters.Add(new ValueLookupParameter<IntValue>("Length", "The length of the new random permutation."));
    6666      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The new random permutation."));
    67       Parameters.Add(new ValueParameter<PermutationType>("PermutationType", "The type of the permutation.", new PermutationType(PermutationTypes.RelativeUndirected)));
     67      Parameters.Add(new ValueParameter<EnumValue<PermutationTypes>>("PermutationType", "The type of the permutation.", new EnumValue<PermutationTypes>(PermutationTypes.RelativeUndirected)));
    6868    }
    6969
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/HeuristicLab.Encodings.PermutationEncoding-3.3.csproj

    r16948 r17587  
    207207    <Compile Include="PermutationCrossover.cs" />
    208208    <Compile Include="Permutation.cs" />
    209     <Compile Include="PermutationType.cs" />
    210209    <Compile Include="PermutationTypes.cs" />
    211210    <Compile Include="Plugin.cs" />
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationCreator.cs

    r17226 r17587  
    2020#endregion
    2121
     22using HEAL.Attic;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    2425using HeuristicLab.Optimization;
    25 using HEAL.Attic;
    2626
    2727namespace HeuristicLab.Encodings.PermutationEncoding {
     
    3232  public interface IPermutationCreator : IPermutationSolutionOperator, ISolutionCreator<Permutation> {
    3333    IValueLookupParameter<IntValue> LengthParameter { get; }
    34     IValueParameter<PermutationType> PermutationTypeParameter { get; }
     34    IValueParameter<EnumValue<PermutationTypes>> PermutationTypeParameter { get; }
    3535  }
    3636}
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationEncoding.cs

    r17567 r17587  
    3434  [Item("PermutationEncoding", "Describes a permutation encoding.")]
    3535  [StorableType("E30E7507-44BA-4021-8F56-C3FC5569A6FE")]
    36   public sealed class PermutationEncoding : Encoding<Permutation> {
     36  public sealed class PermutationEncoding : VectorEncoding<Permutation> {
    3737    #region encoding parameters
    38     [Storable]
    39     private IFixedValueParameter<IntValue> lengthParameter;
    40     public IFixedValueParameter<IntValue> LengthParameter {
    41       get { return lengthParameter; }
     38    [Storable] public IValueParameter<EnumValue<PermutationTypes>> PermutationTypeParameter { get; private set; }
     39    public PermutationTypes Type {
     40      get { return PermutationTypeParameter.Value.Value; }
    4241      set {
    43         if (value == null) throw new ArgumentNullException("Length parameter must not be null.");
    44         if (value.Value == null) throw new ArgumentNullException("Length parameter value must not be null.");
    45         if (lengthParameter == value) return;
    46 
    47         if (lengthParameter != null) Parameters.Remove(lengthParameter);
    48         lengthParameter = value;
    49         Parameters.Add(lengthParameter);
    50         OnLengthParameterChanged();
    51       }
    52     }
    53 
    54     [Storable]
    55     private IFixedValueParameter<PermutationType> permutationTypeParameter;
    56     public IFixedValueParameter<PermutationType> PermutationTypeParameter {
    57       get { return permutationTypeParameter; }
    58       set {
    59         if (value == null) throw new ArgumentNullException("Permutation type parameter must not be null.");
    60         if (value.Value == null) throw new ArgumentNullException("Permutation type parameter value must not be null.");
    61         if (permutationTypeParameter == value) return;
    62 
    63         if (permutationTypeParameter != null) Parameters.Remove(permutationTypeParameter);
    64         permutationTypeParameter = value;
    65         Parameters.Add(permutationTypeParameter);
    66         OnPermutationTypeParameterChanged();
     42        if (Type == value) return;
     43        PermutationTypeParameter.Value.Value = value;
    6744      }
    6845    }
    6946    #endregion
    70 
    71     public int Length {
    72       get { return LengthParameter.Value.Value; }
    73       set { LengthParameter.Value.Value = value; }
    74     }
    75 
    76     public PermutationTypes Type {
    77       get { return PermutationTypeParameter.Value.Value; }
    78       set { PermutationTypeParameter.Value.Value = value; }
    79     }
    8047
    8148    [StorableConstructor]
     
    8350    [StorableHook(HookType.AfterDeserialization)]
    8451    private void AfterDeserialization() {
     52      DiscoverOperators();
    8553      RegisterParameterEvents();
    86       DiscoverOperators();
    8754    }
    8855
     
    9057    private PermutationEncoding(PermutationEncoding original, Cloner cloner)
    9158      : base(original, cloner) {
    92       lengthParameter = cloner.Clone(original.lengthParameter);
    93       permutationTypeParameter = cloner.Clone(original.permutationTypeParameter);
     59      PermutationTypeParameter = cloner.Clone(original.PermutationTypeParameter);
    9460      RegisterParameterEvents();
    9561    }
     
    10066    public PermutationEncoding(int length) : this("Permutation", length, PermutationTypes.Absolute) { }
    10167    public PermutationEncoding(string name, int length, PermutationTypes type)
    102       : base(name) {
    103       lengthParameter = new FixedValueParameter<IntValue>(Name + ".Length", new IntValue(length));
    104       permutationTypeParameter = new FixedValueParameter<PermutationType>(Name + ".Type", new PermutationType(type));
    105       Parameters.Add(lengthParameter);
    106       Parameters.Add(permutationTypeParameter);
     68      : base(name, length) {
     69      PermutationTypeParameter = new ValueParameter<EnumValue<PermutationTypes>>(Name + ".Type", new EnumValue<PermutationTypes>(type));
     70      Parameters.Add(PermutationTypeParameter);
    10771
    10872      SolutionCreator = new RandomPermutationCreator();
     73      DiscoverOperators();
    10974      RegisterParameterEvents();
    110       DiscoverOperators();
    111     }
    112 
    113     private void OnLengthParameterChanged() {
    114       RegisterLengthParameterEvents();
    115       ConfigureOperators(Operators);
    116     }
    117 
    118     private void OnPermutationTypeParameterChanged() {
    119       RegisterPermutationTypeParameterEvents();
    120       ConfigureOperators(Operators);
    12175    }
    12276
    12377    private void RegisterParameterEvents() {
    124       RegisterLengthParameterEvents();
    125       RegisterPermutationTypeParameterEvents();
    126     }
    127     private void RegisterLengthParameterEvents() {
    128       LengthParameter.Value.ValueChanged += (o, s) => ConfigureOperators(Operators);
    129     }
    130     private void RegisterPermutationTypeParameterEvents() {
    131       PermutationTypeParameter.Value.ValueChanged += (o, s) => ConfigureOperators(Operators);
     78      EnumValueParameterChangeHandler<PermutationTypes>.Create(PermutationTypeParameter, () => {
     79        ConfigureOperators(Operators);
     80        OnTypeChanged();
     81      });
    13282    }
    13383
     
    239189    }
    240190    #endregion
     191
     192    public event EventHandler TypeChanged;
     193    private void OnTypeChanged() {
     194      TypeChanged?.Invoke(this, EventArgs.Empty);
     195    }
    241196  }
    242197}
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationMultiObjectiveProblem.cs

    r17544 r17587  
    2222#endregion
    2323
    24 using System;
    2524using System.Linq;
    2625using HEAL.Attic;
     
    3635  public abstract class PermutationMultiObjectiveProblem : MultiObjectiveProblem<PermutationEncoding, Permutation> {
    3736    [Storable] protected ReferenceParameter<IntValue> DimensionRefParameter { get; private set; }
    38     public IValueParameter<IntValue> DimensionParameter => DimensionRefParameter;
     37    [Storable] protected ReferenceParameter<EnumValue<PermutationTypes>> PermutationTypeRefParameter { get; private set; }
    3938
    4039    public int Dimension {
    4140      get { return DimensionRefParameter.Value.Value; }
    4241      set { DimensionRefParameter.Value.Value = value; }
     42    }
     43
     44    public PermutationTypes Type {
     45      get { return PermutationTypeRefParameter.Value.Value; }
     46      set { PermutationTypeRefParameter.Value.Value = value; }
    4347    }
    4448
     
    5357      : base(original, cloner) {
    5458      DimensionRefParameter = cloner.Clone(original.DimensionRefParameter);
     59      PermutationTypeRefParameter = cloner.Clone(original.PermutationTypeRefParameter);
    5560      RegisterEventHandlers();
    5661    }
     
    6065      EncodingParameter.ReadOnly = true;
    6166      Parameters.Add(DimensionRefParameter = new ReferenceParameter<IntValue>("Dimension", "The dimension of the permutation problem.", Encoding.LengthParameter));
     67      Parameters.Add(PermutationTypeRefParameter = new ReferenceParameter<EnumValue<PermutationTypes>>("Type", "The type of the permutation.", Encoding.PermutationTypeParameter));
    6268
    6369      Operators.Add(new HammingSimilarityCalculator());
     
    8995
    9096    private void RegisterEventHandlers() {
    91       DimensionRefParameter.Value.ValueChanged += DimensionParameter_Value_ValueChanged;
    92     }
    93 
    94     private void DimensionParameter_Value_ValueChanged(object sender, EventArgs e) {
    95       DimensionOnChanged();
     97      IntValueParameterChangeHandler.Create(DimensionRefParameter, DimensionOnChanged);
     98      EnumValueParameterChangeHandler<PermutationTypes>.Create(PermutationTypeRefParameter, TypeOnChanged);
    9699    }
    97100
    98101    protected virtual void DimensionOnChanged() { }
     102
     103    protected virtual void TypeOnChanged() { }
    99104  }
    100105}
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationProblem.cs

    r17544 r17587  
    2222#endregion
    2323
    24 using System;
    2524using System.Linq;
    2625using HEAL.Attic;
     
    3736  public abstract class PermutationProblem : SingleObjectiveProblem<PermutationEncoding, Permutation> {
    3837    [Storable] protected ReferenceParameter<IntValue> DimensionRefParameter { get; private set; }
    39     public IValueParameter<IntValue> DimensionParameter => DimensionRefParameter;
     38    [Storable] protected ReferenceParameter<EnumValue<PermutationTypes>> PermutationTypeRefParameter { get; private set; }
    4039
    4140    public int Dimension {
    4241      get { return DimensionRefParameter.Value.Value; }
    4342      set { DimensionRefParameter.Value.Value = value; }
     43    }
     44
     45    public PermutationTypes Type {
     46      get { return PermutationTypeRefParameter.Value.Value; }
     47      set { PermutationTypeRefParameter.Value.Value = value; }
    4448    }
    4549
     
    5458      : base(original, cloner) {
    5559      DimensionRefParameter = cloner.Clone(original.DimensionRefParameter);
     60      PermutationTypeRefParameter = cloner.Clone(original.PermutationTypeRefParameter);
    5661      RegisterEventHandlers();
    5762    }
     
    6166      EncodingParameter.ReadOnly = true;
    6267      Parameters.Add(DimensionRefParameter = new ReferenceParameter<IntValue>("Dimension", "The dimension of the permutation problem.", Encoding.LengthParameter));
    63 
     68      Parameters.Add(PermutationTypeRefParameter = new ReferenceParameter<EnumValue<PermutationTypes>>("Type", "The type of the permutation.", Encoding.PermutationTypeParameter));
    6469      Operators.Add(new HammingSimilarityCalculator());
    6570      Operators.Add(new QualitySimilarityCalculator());
     
    8994
    9095    private void RegisterEventHandlers() {
    91       DimensionRefParameter.Value.ValueChanged += DimensionParameter_Value_ValueChanged;
    92     }
    93 
    94     private void DimensionParameter_Value_ValueChanged(object sender, EventArgs e) {
    95       DimensionOnChanged();
     96      IntValueParameterChangeHandler.Create(DimensionRefParameter, DimensionOnChanged);
     97      EnumValueParameterChangeHandler<PermutationTypes>.Create(PermutationTypeRefParameter, TypeOnChanged);
    9698    }
    9799
    98100    protected virtual void DimensionOnChanged() { }
     101
     102    protected virtual void TypeOnChanged() { }
    99103  }
    100104}
Note: See TracChangeset for help on using the changeset viewer.