Changeset 5742 for branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer.cs
- Timestamp:
- 03/17/11 21:40:31 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer.cs
r5722 r5742 30 30 using HeuristicLab.Parameters; 31 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 32 using System; 32 33 33 34 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { … … 120 121 if (IsNonDominated(qualities[i], trainingBestQualities, maximization) && 121 122 IsNonDominated(qualities[i], qualities, maximization)) { 122 newNonDominatedQualities.Add(qualities[i]); 123 nonDominatedIndexes.Add(i); 123 if (!newNonDominatedQualities.Contains(qualities[i], new DoubleArrayComparer())) { 124 newNonDominatedQualities.Add(qualities[i]); 125 nonDominatedIndexes.Add(i); 126 } 124 127 } 125 128 } … … 138 141 for (int i = 0; i < trainingBestQualities.Count; i++) { 139 142 if (IsNonDominated(trainingBestQualities[i], newNonDominatedQualities, maximization)) { 140 nonDominatedSolutions.Add(ValidationBestSolutions[i]); 141 nonDominatedQualities.Add(ValidationBestSolutionQualities[i]); 143 if (!newNonDominatedQualities.Contains(trainingBestQualities[i], new DoubleArrayComparer())) { 144 nonDominatedSolutions.Add(ValidationBestSolutions[i]); 145 nonDominatedQualities.Add(ValidationBestSolutionQualities[i]); 146 } 142 147 } 143 148 } … … 166 171 else return lhs < rhs; 167 172 } 173 174 private class DoubleArrayComparer : IEqualityComparer<double[]> { 175 public bool Equals(double[] x, double[] y) { 176 if (y.Length != x.Length) throw new ArgumentException(); 177 for (int i = 0; i < x.Length; i++) { 178 if (!x[i].IsAlmost(y[i])) return false; 179 } 180 return true; 181 } 182 183 public int GetHashCode(double[] obj) { 184 int c = obj.Length; 185 for (int i = 0; i < obj.Length; i++) 186 c ^= obj[i].GetHashCode(); 187 return c; 188 } 189 } 190 168 191 } 169 192 }
Note: See TracChangeset
for help on using the changeset viewer.