Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/21/15 17:42:18 (9 years ago)
Author:
pfleck
Message:

#2269

  • Changed the age type from int to double.
  • Changed EldersSelector to make use of a ScopeTreeLookupParameter.
  • Removed unused operators in LayerUpdator.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersSelector.cs

    r12018 r13046  
    3333  [Item("EldersSelector", "Select all individuals which are to old for their current layer.")]
    3434  [StorableClass]
    35   public sealed class EldersSelector : SingleObjectiveSelector {
    36 
     35  public sealed class EldersSelector : Selector {
     36    private IScopeTreeLookupParameter<DoubleValue> AgeParameter {
     37      get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters["Age"]; }
     38    }
    3739    private ILookupParameter<IntArray> AgeLimitsParameter {
    3840      get { return (ILookupParameter<IntArray>)Parameters["AgeLimits"]; }
     
    5557    public EldersSelector()
    5658      : base() {
     59      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Age"));
    5760      Parameters.Add(new LookupParameter<IntArray>("AgeLimits"));
    5861      Parameters.Add(new LookupParameter<IntValue>("NumberOfLayers"));
     
    6164
    6265    protected override IScope[] Select(List<IScope> scopes) {
     66      var ages = AgeParameter.ActualValue;
    6367      var ageLimits = AgeLimitsParameter.ActualValue;
    6468      int numberOfLayers = NumberOfLayersParameter.ActualValue.Value;
     
    6973
    7074      int limit = ageLimits[layer];
    71       var eldersQuery =
    72         from scope in scopes
    73         let age = ((IntValue)scope.Variables["Age"].Value).Value
    74         where age > limit
    75         select scope;
     75      var elders = ages
     76        .Select((x, index) => new { index, age = x.Value })
     77        .Where(x => x.age > limit)
     78        .ToList();
    7679
    77       var elders = eldersQuery.ToArray();
    78 
    79       if (!CopySelected.Value)
    80         foreach (var elder in elders)
    81           scopes.Remove(elder);
    82 
    83       return elders;
     80      IScope[] selected = new IScope[elders.Count];
     81      for (int i = 0; i < elders.Count; i++) {
     82        selected[i] = scopes[elders[i].index];
     83        scopes[elders[i].index] = null;
     84      }
     85      scopes.RemoveAll(x => x == null);
     86      return selected;
    8487    }
    8588  }
Note: See TracChangeset for help on using the changeset viewer.