Changeset 18055 for branches/3026_IntegrationIntoSymSpace/HeuristicLab.Optimization/3.3/RunCollectionModification
- Timestamp:
- 09/16/21 15:27:07 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Optimization/3.3/RunCollectionModification/RunCollectionValueRemover.cs
r17180 r18055 27 27 using HeuristicLab.Parameters; 28 28 using HEAL.Attic; 29 using HeuristicLab.Collections; 29 30 30 31 namespace HeuristicLab.Optimization { … … 38 39 } 39 40 41 public IFixedValueParameter<BoolValue> InvertParameter { 42 get { return (IFixedValueParameter<BoolValue>)Parameters["Invert"]; } 43 } 44 40 45 public IEnumerable<string> Values { 41 46 get { return ValuesParameter.Value.CheckedItems.Select(v => v.Value); } 42 47 } 48 49 public bool Invert => InvertParameter.Value.Value; 43 50 44 51 #region Construction & Cloning … … 49 56 } 50 57 public RunCollectionValueRemover() { 51 Parameters.Add(new ValueParameter<CheckedItemCollection<StringValue>>("Values", "The result or parameter values to be removed from each run.")); 58 Parameters.Add(new ValueParameter<CheckedItemCollection<StringValue>>("Values", "The result or parameter values to be removed from each run.")); 59 Parameters.Add(new FixedValueParameter<BoolValue>("Invert", "Inverts the filter strategy: Blackbox <-> Whitebox (Default: Blackbox)", new BoolValue(false))); 52 60 } 53 61 public override IDeepCloneable Clone(Cloner cloner) { … … 56 64 #endregion 57 65 58 public void Modify(List<IRun> runs) { 66 public void Modify(List<IRun> runs) { 59 67 foreach (var run in runs) { 60 foreach (var value in Values) { 61 run.Parameters.Remove(value); 62 run.Results.Remove(value); 63 } 64 } 68 if (Invert) { //Whitebox 69 var parametersCopy = new ObservableDictionary<string, IItem>(run.Parameters); 70 var resultsCopy = new ObservableDictionary<string, IItem>(run.Results); 71 foreach(var param in parametersCopy) 72 if (!Values.Any(x => x == param.Key)) 73 run.Parameters.Remove(param.Key); 74 foreach (var result in resultsCopy) 75 if (!Values.Any(x => x == result.Key)) 76 run.Results.Remove(result.Key); 77 } else { //Blackbox 78 foreach (var value in Values) { 79 run.Parameters.Remove(value); 80 run.Results.Remove(value); 81 } 82 } 83 } 65 84 } 66 85
Note: See TracChangeset
for help on using the changeset viewer.