Changeset 10294
- Timestamp:
- 01/07/14 12:51:03 (11 years ago)
- Location:
- stable
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 10195-10196
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Operators/3.3/DataReducer.cs
r9456 r10294 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; -
stable/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj
r8600 r10294 126 126 <Compile Include="Plugin.cs" /> 127 127 <Compile Include="ReductionOperation.cs" /> 128 <Compile Include="ReductionOperations.cs" />129 128 <Compile Include="ScopeCleaner.cs" /> 130 129 <Compile Include="StochasticBranch.cs" /> -
stable/HeuristicLab.Operators/3.3/ReductionOperation.cs
r9456 r10294 27 27 28 28 namespace HeuristicLab.Operators { 29 public enum ReductionOperations { 30 Sum, 31 Product, 32 Count, 33 Min, 34 Max, 35 Avg, 36 Assign, 37 All, 38 Any 39 } 40 29 41 [Item("ReductionOperation", "Represents a certain type of reduction operation.")] 30 42 [StorableClass]
Note: See TracChangeset
for help on using the changeset viewer.