- Timestamp:
- 10/21/15 17:42:18 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersSelector.cs
r12018 r13046 33 33 [Item("EldersSelector", "Select all individuals which are to old for their current layer.")] 34 34 [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 } 37 39 private ILookupParameter<IntArray> AgeLimitsParameter { 38 40 get { return (ILookupParameter<IntArray>)Parameters["AgeLimits"]; } … … 55 57 public EldersSelector() 56 58 : base() { 59 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Age")); 57 60 Parameters.Add(new LookupParameter<IntArray>("AgeLimits")); 58 61 Parameters.Add(new LookupParameter<IntValue>("NumberOfLayers")); … … 61 64 62 65 protected override IScope[] Select(List<IScope> scopes) { 66 var ages = AgeParameter.ActualValue; 63 67 var ageLimits = AgeLimitsParameter.ActualValue; 64 68 int numberOfLayers = NumberOfLayersParameter.ActualValue.Value; … … 69 73 70 74 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(); 76 79 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; 84 87 } 85 88 }
Note: See TracChangeset
for help on using the changeset viewer.