Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/12/21 16:42:21 (3 years ago)
Author:
gkronber
Message:

#3076: refactoring to prepare for trunk reintegration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3076_IA_evaluators_analyzers_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator.cs

    r17882 r17892  
    2222#endregion
    2323
    24 using System;
    2524using System.Collections.Generic;
    2625using System.Linq;
     
    3736  [StorableType("8E9D76B7-ED9C-43E7-9898-01FBD3633880")]
    3837  public class
    39     SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator : SymbolicRegressionMultiObjectiveEvaluator
    40   {
     38    SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator : SymbolicRegressionMultiObjectiveEvaluator {
    4139    public const string DimensionsParameterName = "Dimensions";
    4240    private const string BoundsEstimatorParameterName = "Bounds estimator";
    4341
    4442    public IFixedValueParameter<IntValue> DimensionsParameter =>
    45       (IFixedValueParameter<IntValue>) Parameters[DimensionsParameterName];
     43      (IFixedValueParameter<IntValue>)Parameters[DimensionsParameterName];
    4644
    4745    public IValueParameter<IBoundsEstimator> BoundsEstimatorParameter =>
    48       (IValueParameter<IBoundsEstimator>) Parameters[BoundsEstimatorParameterName];
     46      (IValueParameter<IBoundsEstimator>)Parameters[BoundsEstimatorParameterName];
     47
     48    public int Dimensions {
     49      get => DimensionsParameter.Value.Value;
     50      set => DimensionsParameter.Value.Value = value;
     51    }
    4952
    5053    public IBoundsEstimator BoundsEstimator {
     
    5760    public SymbolicRegressionMultiObjectiveMultiSoftConstraintEvaluator() {
    5861      Parameters.Add(new FixedValueParameter<IntValue>(DimensionsParameterName, new IntValue(2)));
    59       Parameters.Add(new ValueParameter<IBoundsEstimator>(BoundsEstimatorParameterName, new IABoundsEstimator()));
     62      Parameters.Add(new ValueParameter<IBoundsEstimator>(BoundsEstimatorParameterName, new IntervalArithBoundsEstimator()));
    6063    }
    6164
     
    7477
    7578      if (!Parameters.ContainsKey(BoundsEstimatorParameterName))
    76         Parameters.Add(new ValueParameter<IBoundsEstimator>(BoundsEstimatorParameterName, new IABoundsEstimator()));
     79        Parameters.Add(new ValueParameter<IBoundsEstimator>(BoundsEstimatorParameterName, new IntervalArithBoundsEstimator()));
    7780    }
    7881
     
    121124            if (node.Symbol.Name == "Offset") {
    122125              node.RemoveSubtree(1);
    123               var alphaNode = new ConstantTreeNode(new Constant()) {Value = alpha};
     126              var alphaNode = new ConstantTreeNode(new Constant()) { Value = alpha };
    124127              node.AddSubtree(alphaNode);
    125128            } else if (node.Symbol.Name == "Scaling") {
    126129              node.RemoveSubtree(1);
    127               var betaNode = new ConstantTreeNode(new Constant()) {Value = beta};
     130              var betaNode = new ConstantTreeNode(new Constant()) { Value = beta };
    128131              node.AddSubtree(betaNode);
    129132            }
     
    165168      var estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows);
    166169      var targetValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
    167       var constraints = problemData.IntervalConstraints.Constraints.Where(c => c.Enabled);
     170      var constraints = problemData.ShapeConstraints.Where(c => c.Enabled);
    168171      var intervalCollection = problemData.VariableRanges;
    169172
     
    177180        nmse = 1.0;
    178181
    179       var objectives = new List<double> {nmse};
    180       var results = IntervalUtil.IntervalConstraintsViolation(constraints, estimator, intervalCollection, solution);
    181       foreach (var result in results) {
    182         if (double.IsNaN(result) || double.IsInfinity(result)) {
     182      var objectives = new List<double> { nmse };
     183      var violations = IntervalUtil.GetConstraintViolations(constraints, estimator, intervalCollection, solution);
     184      foreach (var violation in violations) {
     185        if (double.IsNaN(violation) || double.IsInfinity(violation)) {
    183186          objectives.Add(double.MaxValue);
    184187        } else {
    185           objectives.Add(result);
     188          objectives.Add(violation);
    186189        }
    187190      }
    188      
     191
    189192      return objectives.ToArray();
    190193    }
     
    197200    public override IEnumerable<bool> Maximization {
    198201      get {
    199         var objectives = new List<bool> {false}; //First NMSE ==> min
    200         objectives.AddRange(Enumerable.Repeat(false, DimensionsParameter.Value.Value)); //Constraints ==> min
     202        var objectives = new List<bool> { false }; // NMSE ==> min
     203        var dim = Dimensions;
     204        objectives.AddRange(Enumerable.Repeat(false, dim)); // Constraints ==> min
    201205
    202206        return objectives;
Note: See TracChangeset for help on using the changeset viewer.