Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/13/12 17:14:53 (12 years ago)
Author:
ascheibe
Message:

#1864

  • switched IOperators collection to IItems
  • adapted algorithms and problems
  • added AfterDeserialization hooks for problem, external evaluation problem and user-defined problem
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Optimization/3.3/Problems/Problem.cs

    r7706 r7999  
    3535  public abstract class Problem : ParameterizedNamedItem, IProblem {
    3636    private static readonly string OperatorsParameterName = "Operators";
    37 
    38     public IFixedValueParameter<OperatorCollection> OperatorsParameter {
    39       get { return (IFixedValueParameter<OperatorCollection>)Parameters[OperatorsParameterName]; }
     37    public IFixedValueParameter<ItemCollection<IItem>> OperatorsParameter {
     38      get { return (IFixedValueParameter<ItemCollection<IItem>>)Parameters[OperatorsParameterName]; }
    4039    }
    4140
     
    5352    protected Problem()
    5453      : base() {
    55       Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(), false));
     54      Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(), false));
    5655      OperatorsParameter.Hidden = true;
    5756      RegisterEventHandlers();
     
    6059    [StorableHook(HookType.AfterDeserialization)]
    6160    private void AfterDeserialization() {
     61      // BackwardsCompatibility3.3
     62      #region Backwards compatible code, remove with 3.4
     63      if (Parameters.ContainsKey(OperatorsParameterName) && Parameters[OperatorsParameterName] is FixedValueParameter<OperatorCollection>) {
     64        OperatorCollection tmp = ((IFixedValueParameter<OperatorCollection>)Parameters[OperatorsParameterName]).Value;
     65        Parameters.Remove(OperatorsParameterName);
     66        Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(tmp), false));       
     67        OperatorsParameter.Hidden = true;
     68      }
     69      #endregion
     70
    6271      RegisterEventHandlers();
    6372    }
    6473
    6574    private void RegisterEventHandlers() {
    66       Operators.ItemsAdded += new CollectionItemsChangedEventHandler<IOperator>(Operators_Changed);
    67       Operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IOperator>(Operators_Changed);
    68       Operators.CollectionReset += new CollectionItemsChangedEventHandler<IOperator>(Operators_Changed);
     75      Operators.ItemsAdded += new CollectionItemsChangedEventHandler<IItem>(Operators_Changed);
     76      Operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IItem>(Operators_Changed);
     77      Operators.CollectionReset += new CollectionItemsChangedEventHandler<IItem>(Operators_Changed);
    6978    }
    7079
     
    7281    // BackwardsCompatibility3.3
    7382    #region Backwards compatible code, remove with 3.4
    74     [Storable(Name = "Operators")]
     83    [Storable(Name = "Operators", AllowOneWay = true)]
    7584    private IEnumerable<IOperator> StorableOperators {
    76       get { return null; }
    7785      set {
    7886        if (!Parameters.ContainsKey(OperatorsParameterName)) {
    79           Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(value), false));
     87          Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(value), false));
    8088          OperatorsParameter.Hidden = true;
    8189        }
     
    8391    }
    8492    #endregion
    85     protected OperatorCollection Operators {
     93    protected ItemCollection<IItem> Operators {
    8694      get {
    8795        // BackwardsCompatibility3.3
    8896        #region Backwards compatible code, remove with 3.4
    8997        if (!Parameters.ContainsKey(OperatorsParameterName)) {
    90           Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(), false));
     98          Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(), false));
    9199          OperatorsParameter.Hidden = true;
    92100        }
     
    95103      }
    96104    }
    97     IEnumerable<IOperator> IProblem.Operators { get { return Operators; } }
     105    IEnumerable<IItem> IProblem.Operators { get { return Operators; } }
    98106    #endregion
    99107
Note: See TracChangeset for help on using the changeset viewer.