- Timestamp:
- 12/05/13 11:27:14 (11 years ago)
- Location:
- trunk/sources/HeuristicLab.Operators/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Operators/3.3/DataReducer.cs
r9456 r10196 69 69 public override IOperation Apply() { 70 70 var values = ParameterToReduce.ActualValue; 71 if (values.Count() > 0) { 72 if (values.All(x => typeof(IntValue).IsAssignableFrom(x.GetType()))) { 73 CalculateResult(values.OfType<IntValue>().Select(x => x.Value), values.First().GetType()); 74 } else if (values.All(x => typeof(DoubleValue).IsAssignableFrom(x.GetType()))) { 75 CalculateResult(values.OfType<DoubleValue>().Select(x => x.Value), values.First().GetType()); 76 } else if (values.All(x => typeof(TimeSpanValue).IsAssignableFrom(x.GetType()))) { 77 CalculateResult(values.OfType<TimeSpanValue>().Select(x => x.Value), values.First().GetType()); 78 } else { 79 throw new ArgumentException(string.Format("Type {0} is not supported by the DataReducer.", values.First().GetType())); 80 } 81 } 71 if (!values.Any()) return base.Apply(); 72 73 if (values.All(x => x is IntValue)) { 74 CalculateResult(values.OfType<IntValue>().Select(x => x.Value), values.First().GetType()); 75 } else if (values.All(x => x is DoubleValue)) { 76 CalculateResult(values.OfType<DoubleValue>().Select(x => x.Value), values.First().GetType()); 77 } else if (values.All(x => x is TimeSpanValue)) { 78 CalculateResult(values.OfType<TimeSpanValue>().Select(x => x.Value), values.First().GetType()); 79 } else if (values.All(x => x is BoolValue)) { 80 CalculateResult(values.OfType<BoolValue>().Select(x => x.Value), values.First().GetType()); 81 } else { 82 throw new ArgumentException(string.Format("Type {0} is not supported by the DataReducer.", values.First().GetType())); 83 } 84 82 85 return base.Apply(); 83 86 } … … 246 249 case ReductionOperations.Assign: 247 250 target = InitializeTarget<TimeSpanValue, TimeSpan>(targetType, new TimeSpan()); 251 target.Value = result; 252 break; 253 default: 254 throw new InvalidOperationException(string.Format("Operation {0} is not supported as TargetOperation for type: {1}.", TargetOperation.Value.Value, targetType)); 255 } 256 } 257 #endregion 258 #region bool reduction 259 private void CalculateResult(IEnumerable<bool> values, Type targetType) { 260 bool result; 261 switch (ReductionOperation.Value.Value) { 262 case ReductionOperations.All: 263 result = values.All(x => x); 264 break; 265 case ReductionOperations.Any: 266 result = values.Any(x => x); 267 break; 268 default: 269 throw new InvalidOperationException(string.Format("Operation {0} is not supported as ReductionOperation for type: {1}.", ReductionOperation.Value.Value, targetType)); 270 } 271 272 BoolValue target; 273 switch (TargetOperation.Value.Value) { 274 case ReductionOperations.Assign: 275 target = InitializeTarget<BoolValue, bool>(targetType, true); 248 276 target.Value = result; 249 277 break; -
trunk/sources/HeuristicLab.Operators/3.3/ReductionOperation.cs
r10195 r10196 34 34 Max, 35 35 Avg, 36 Assign 36 Assign, 37 All, 38 Any 37 39 } 38 40
Note: See TracChangeset
for help on using the changeset viewer.