Changeset 17627


Ignore:
Timestamp:
06/23/20 13:22:04 (3 months ago)
Author:
chaider
Message:

#3076

  • Added abstract class for splitting parameters
  • Fixed formatting
Location:
branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.csproj

    r17623 r17627  
    172172    <Compile Include="MultiObjective\SymbolicRegressionMultiObjectiveMultiHardConstraintEvaluator.cs" />
    173173    <Compile Include="MultiObjective\SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator.cs" />
     174    <Compile Include="MultiObjective\SymbolicRegressionMultiObjectiveSplittingEvaluator.cs" />
    174175    <Compile Include="MultiObjective\SymbolicRegressionMultiObjectiveValidationBestSolutionAnalyzer.cs" />
    175176    <Compile Include="Plugin.cs" />
  • branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator.cs

    r17623 r17627  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    32 using HeuristicLab.Parameters;
    3332
    3433namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.MultiObjective {
     
    3736  [StorableType("8E9D76B7-ED9C-43E7-9898-01FBD3633880")]
    3837  public class
    39     SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator : SymbolicRegressionMultiObjectiveEvaluator {
    40     private const string MinIntervalWidthParameterName      = "MinIntervalWidth";
    41     private const string MaxIntervalSplitDepthParameterName = "MaxIntervalSplitDepth";
    42 
    43     public IFixedValueParameter<DoubleValue> MinIntervalWidthParameter =>
    44       (IFixedValueParameter<DoubleValue>) Parameters[MinIntervalWidthParameterName];
    45 
    46     public IFixedValueParameter<IntValue> MaxIntervalSplitDepthParameter =>
    47       (IFixedValueParameter<IntValue>) Parameters[MaxIntervalSplitDepthParameterName];
    48 
    49     public double MinIntervalWidth => MinIntervalWidthParameter.Value.Value;
    50 
    51     public int MaxIntervalSplitDepth => MaxIntervalSplitDepthParameter.Value.Value;
    52 
     38    SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator : SymbolicRegressionMultiObjectiveSplittingEvaluator {
    5339    #region Constructors
    5440
    55     public SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator() {
    56       Parameters.Add(new FixedValueParameter<DoubleValue>(MinIntervalWidthParameterName, new DoubleValue(1.0)));
    57       Parameters.Add(new FixedValueParameter<IntValue>(MaxIntervalSplitDepthParameterName, new IntValue(5)));
    58     }
     41    public SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator() { }
    5942
    6043    [StorableConstructor]
     
    7255
    7356    public override IOperation InstrumentedApply() {
    74       var rows             = GenerateRowsToEvaluate();
    75       var solution         = SymbolicExpressionTreeParameter.ActualValue;
    76       var problemData      = ProblemDataParameter.ActualValue;
    77       var interpreter      = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue;
    78       var estimationLimits = EstimationLimitsParameter.ActualValue;
    79       //var applyLinearScaling = ApplyLinearScalingParameter.ActualValue.Value;
     57      var rows                  = GenerateRowsToEvaluate();
     58      var solution              = SymbolicExpressionTreeParameter.ActualValue;
     59      var problemData           = ProblemDataParameter.ActualValue;
     60      var interpreter           = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue;
     61      var estimationLimits      = EstimationLimitsParameter.ActualValue;
     62      var minIntervalWidth      = MinSplittingWidth;
     63      var maxIntervalSplitDepth = MaxSplittingDepth;
     64      //var applyLinearScaling  = ApplyLinearScalingParameter.ActualValue.Value;
    8065      var applyLinearScaling = false;
    8166
    8267      if (UseConstantOptimization)
    8368        SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(interpreter, solution, problemData, rows,
    84                                                                           applyLinearScaling,
    85                                                                           ConstantOptimizationIterations,
    86                                                                           ConstantOptimizationUpdateVariableWeights,
    87                                                                           estimationLimits.Lower,
    88                                                                           estimationLimits.Upper);
     69          applyLinearScaling,
     70          ConstantOptimizationIterations,
     71          ConstantOptimizationUpdateVariableWeights,
     72          estimationLimits.Lower,
     73          estimationLimits.Upper);
    8974
    9075      var qualities = Calculate(interpreter, solution, estimationLimits.Lower, estimationLimits.Upper, problemData,
    91                                 rows, applyLinearScaling, DecimalPlaces, MinIntervalWidth, MaxIntervalSplitDepth);
     76        rows, applyLinearScaling, DecimalPlaces, minIntervalWidth, maxIntervalSplitDepth);
    9277      QualitiesParameter.ActualValue = new DoubleArray(qualities);
    9378      return base.InstrumentedApply();
     
    10287
    10388      var quality = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, tree,
    104                               EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper,
    105                               problemData, rows,
    106                               ApplyLinearScalingParameter.ActualValue.Value, DecimalPlaces, MinIntervalWidth,
    107                               MaxIntervalSplitDepth);
     89        EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper,
     90        problemData, rows,
     91        ApplyLinearScalingParameter.ActualValue.Value, DecimalPlaces, MinSplittingWidth,
     92        MaxSplittingDepth);
    10893
    10994      SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = null;
     
    119104                                     double upperEstimationLimit,
    120105                                     IRegressionProblemData problemData, IEnumerable<int> rows, bool applyLinearScaling,
    121                                      int decimalPlaces, double minIntervalSplitWidth, int maxIntervalSplitDetph) {
     106                                     int decimalPlaces, double minIntervalSplitWidth, int maxIntervalSplitDepth) {
    122107      OnlineCalculatorError errorState;
    123108      var estimatedValues =
     
    144129      foreach (var c in constraints) {
    145130        var penalty = ConstraintExceeded(c, intervalInterpreter, variableRanges,
    146                                          solution /*, problemData.IntervalSplitting*/);
     131          solution /*, problemData.IntervalSplitting*/);
    147132        var maxP = 0.1;
    148133
     
    163148      if (constraint.Variable != null && !variableRanges.ContainsKey(constraint.Variable))
    164149        throw new ArgumentException(
    165                                     $"The given variable {constraint.Variable} in the constraint does not exists in the model.",
    166                                     nameof(IntervalConstraintsParser));
     150          $"The given variable {constraint.Variable} in the constraint does not exists in the model.",
     151          nameof(IntervalConstraintsParser));
    167152      Interval resultInterval;
    168153      if (!constraint.IsDerivative) {
     
    207192    public override IEnumerable<bool> Maximization {
    208193      get {
    209         var objectives = new List<bool> {false}; //First NMSE ==> min
     194        var objectives = new List<bool> {false};          //First NMSE ==> min
    210195        objectives.AddRange(Enumerable.Repeat(false, 3)); //Constraints ==> min
    211196
Note: See TracChangeset for help on using the changeset viewer.