Changeset 10294


Ignore:
Timestamp:
01/07/14 12:51:03 (6 years ago)
Author:
mkommend
Message:

#2123: Merged r10195 & r10196 into the stable branch.

Location:
stable
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Operators/3.3/DataReducer.cs

    r9456 r10294  
    6969    public override IOperation Apply() {
    7070      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
    8285      return base.Apply();
    8386    }
     
    246249        case ReductionOperations.Assign:
    247250          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);
    248276          target.Value = result;
    249277          break;
  • stable/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj

    r8600 r10294  
    126126    <Compile Include="Plugin.cs" />
    127127    <Compile Include="ReductionOperation.cs" />
    128     <Compile Include="ReductionOperations.cs" />
    129128    <Compile Include="ScopeCleaner.cs" />
    130129    <Compile Include="StochasticBranch.cs" />
  • stable/HeuristicLab.Operators/3.3/ReductionOperation.cs

    r9456 r10294  
    2727
    2828namespace 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
    2941  [Item("ReductionOperation", "Represents a certain type of reduction operation.")]
    3042  [StorableClass]
Note: See TracChangeset for help on using the changeset viewer.