Changeset 16692 for branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/BasicProblems/SingleObjectiveProblem.cs
- Timestamp:
- 03/18/19 17:24:30 (5 years ago)
- Location:
- branches/2521_ProblemRefactoring
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring
- Property svn:ignore
-
old new 24 24 protoc.exe 25 25 obj 26 .vs
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/2521_ProblemRefactoring/HeuristicLab.Optimization
- Property svn:mergeinfo changed
-
branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/BasicProblems/SingleObjectiveProblem.cs
r13437 r16692 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 5Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.Linq; … … 114 115 } 115 116 117 protected Tuple<TSolution, double> GetBestSolution(TSolution[] solutions, double[] qualities) { 118 return GetBestSolution(solutions, qualities, Maximization); 119 } 120 public static Tuple<TSolution, double> GetBestSolution(TSolution[] solutions, double[] qualities, bool maximization) { 121 var zipped = solutions.Zip(qualities, (s, q) => new { Solution = s, Quality = q }); 122 var best = (maximization ? zipped.OrderByDescending(z => z.Quality) : zipped.OrderBy(z => z.Quality)).First(); 123 return Tuple.Create(best.Solution, best.Quality); 124 } 125 126 protected override void OnOperatorsChanged() { 127 base.OnOperatorsChanged(); 128 if (Encoding != null) { 129 PruneMultiObjectiveOperators(Encoding); 130 var combinedEncoding = Encoding as CombinedEncoding; 131 if (combinedEncoding != null) { 132 foreach (var encoding in combinedEncoding.Encodings.ToList()) { 133 PruneMultiObjectiveOperators(encoding); 134 } 135 } 136 } 137 } 138 139 private void PruneMultiObjectiveOperators(IEncoding encoding) { 140 if (encoding.Operators.Any(x => x is IMultiObjectiveOperator && !(x is ISingleObjectiveOperator))) 141 encoding.Operators = encoding.Operators.Where(x => !(x is IMultiObjectiveOperator) || x is ISingleObjectiveOperator).ToList(); 142 143 foreach (var multiOp in Encoding.Operators.OfType<IMultiOperator>()) { 144 foreach (var moOp in multiOp.Operators.Where(x => x is IMultiObjectiveOperator).ToList()) { 145 multiOp.RemoveOperator(moOp); 146 } 147 } 148 } 149 116 150 protected override void OnEvaluatorChanged() { 117 151 base.OnEvaluatorChanged();
Note: See TracChangeset
for help on using the changeset viewer.