Changeset 17792 for branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionConstraintAnalyzer.cs
- Timestamp:
- 12/15/20 14:52:22 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionConstraintAnalyzer.cs
r17769 r17792 25 25 private const string MaximumStepsParameterName = "Maximum Steps"; 26 26 private const string StartPenalityParameterName = "Start Penality"; 27 private const string ConstraintUnsatisfiedSolutionsParameterName = "Constraint Unsatisfied Solutions"; 27 28 28 29 #region parameter properties … … 49 50 (IValueParameter<DoubleValue>) Parameters[StartPenalityParameterName]; 50 51 52 public IResultParameter<DataTable> ConstraintUnsatisfiedSolutionsParameter => 53 (IResultParameter<DataTable>)Parameters[ConstraintUnsatisfiedSolutionsParameterName]; 54 51 55 #endregion 52 56 53 57 public override bool EnabledByDefault => false; 54 58 public static int Iterations { get; set; } = 0; 59 60 public IBoundsEstimator BoundsEstimator { get; set; } = new IABoundsEstimator(); 55 61 56 62 [StorableConstructor] … … 79 85 Parameters.Add(new ValueParameter<DoubleValue>(StartPenalityParameterName, 80 86 "The start value for the penality multiplier.", new DoubleValue(0.5))); 87 Parameters.Add(new ResultParameter<DataTable>(ConstraintUnsatisfiedSolutionsParameterName, 88 "Shows the number of solutions with unsatisfied constraints.")); 81 89 82 90 … … 92 100 XAxisTitle = "Generations", 93 101 YAxisTitle = "Penality Multiplier" 102 } 103 }; 104 105 ConstraintUnsatisfiedSolutionsParameter.DefaultValue = new DataTable(ConstraintUnsatisfiedSolutionsParameterName) { 106 VisualProperties = { 107 XAxisTitle = "Generations", 108 YAxisTitle = "Constraint Unsatisfied Solutions" 94 109 } 95 110 }; … … 137 152 Parameters.Add(new ValueParameter<DoubleValue>(StartPenalityParameterName, 138 153 "The start value for the penality multiplier.", new DoubleValue(0.5))); 154 155 156 if(!Parameters.ContainsKey(ConstraintUnsatisfiedSolutionsParameterName)) { 157 Parameters.Add(new ResultParameter<DataTable>(ConstraintUnsatisfiedSolutionsParameterName, 158 "Shows the number of solutions with unsatisfied constraints.")); 159 160 ConstraintUnsatisfiedSolutionsParameter.DefaultValue = new DataTable(ConstraintUnsatisfiedSolutionsParameterName) { 161 VisualProperties = { 162 XAxisTitle = "Generations", 163 YAxisTitle = "Constraint Unsatisfied Solutions" 164 } 165 }; 166 } 139 167 } 140 168 … … 158 186 var constraints = problemData.IntervalConstraints.EnabledConstraints; 159 187 var variableRanges = problemData.VariableRanges.GetReadonlyDictionary(); 188 var intervalCollection = problemData.VariableRanges; 160 189 var newDataTable = ConstraintViolationParameter.ActualValue; 190 var solutions = this.SymbolicExpressionTree.ToArray(); 161 191 162 192 if (newDataTable.Rows.Count == 0) … … 176 206 penalityDataTable.Rows.Add(new DataRow(rowName)); 177 207 penalityDataTable.Rows[rowName].Values.Add(penalityMultiplier.Value); 208 209 var constraintUnsatisfiedSolutionsDataTable = ConstraintUnsatisfiedSolutionsParameter.ActualValue; 210 if (constraintUnsatisfiedSolutionsDataTable.Rows.Count == 0) 211 constraintUnsatisfiedSolutionsDataTable.Rows.Add(new DataRow(ConstraintUnsatisfiedSolutionsParameterName)); 212 213 constraintUnsatisfiedSolutionsDataTable.Rows[ConstraintUnsatisfiedSolutionsParameterName] 214 .Values 215 .Add( 216 solutions 217 .Where(s => IntervalUtil.IntervalConstraintsViolation(constraints, BoundsEstimator, intervalCollection, s).Any(x => x != 0.0)) 218 .Count()); 178 219 179 220 return base.Apply();
Note: See TracChangeset
for help on using the changeset viewer.