Changeset 17261
- Timestamp:
- 09/17/19 16:49:35 (5 years ago)
- Location:
- branches/2521_ProblemRefactoring
- Files:
-
- 4 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Algorithms.MOCMAEvolutionStrategy/3.3/MOCMAEvolutionStrategy.cs
r17226 r17261 33 33 using HeuristicLab.Optimization; 34 34 using HeuristicLab.Parameters; 35 using HeuristicLab.Problems.TestFunctions.MultiObjective;36 35 using HeuristicLab.Random; 37 36 … … 327 326 solutions = new Individual[PopulationSize]; 328 327 for (var i = 0; i < PopulationSize; i++) { 329 var x = new RealVector(Encoding.Length); // Uniform dist ibution in all dimensions assumed.328 var x = new RealVector(Encoding.Length); // Uniform distribution in all dimensions assumed. 330 329 var bounds = Encoding.Bounds; 331 330 for (var j = 0; j < Encoding.Length; j++) { … … 350 349 } 351 350 private void InitResults() { 352 Results.Add(new Result(IterationsResultName, "The number of ge rerations evaluated", new IntValue(0)));353 Results.Add(new Result(EvaluationsResultName, "The number of function eval tions performed", new IntValue(0)));354 Results.Add(new Result(HypervolumeResultName, "The hyper volume of the current front considering the Referencepoint defined in the Problem", new DoubleValue(0.0)));355 Results.Add(new Result(BestHypervolumeResultName, "The best hyper volume of the current run considering the Referencepoint defined in the Problem", new DoubleValue(0.0)));356 Results.Add(new Result(BestKnownHypervolumeResultName, "The best kn won hypervolume considering the Referencepoint defined in the Problem", new DoubleValue(double.NaN)));357 Results.Add(new Result(DifferenceToBestKnownHypervolumeResultName, "The difference between the current and the best known hyper volume", new DoubleValue(double.NaN)));358 Results.Add(new Result(GenerationalDistanceResultName, "The generational distance to an optimal pareto front defined in the Problem", new DoubleValue(double.NaN)));359 Results.Add(new Result(InvertedGenerationalDistanceResultName, "The inverted generational distance to an optimal pareto front defined in the Problem", new DoubleValue(double.NaN)));351 Results.Add(new Result(IterationsResultName, "The number of generations evaluated", new IntValue(0))); 352 Results.Add(new Result(EvaluationsResultName, "The number of function evaluations performed", new IntValue(0))); 353 Results.Add(new Result(HypervolumeResultName, "The hyper volume of the current front considering the reference point defined in the Problem", new DoubleValue(0.0))); 354 Results.Add(new Result(BestHypervolumeResultName, "The best hyper volume of the current run considering the reference point defined in the Problem", new DoubleValue(0.0))); 355 Results.Add(new Result(BestKnownHypervolumeResultName, "The best known hyper volume considering the reference point defined in the Problem", new DoubleValue(double.NaN))); 356 Results.Add(new Result(DifferenceToBestKnownHypervolumeResultName, "The difference between the current and the best known hyper volume", new DoubleValue(double.NaN))); 357 Results.Add(new Result(GenerationalDistanceResultName, "The generational distance to an optimal Pareto front defined in the Problem", new DoubleValue(double.NaN))); 358 Results.Add(new Result(InvertedGenerationalDistanceResultName, "The inverted generational distance to an optimal Pareto front defined in the Problem", new DoubleValue(double.NaN))); 360 359 Results.Add(new Result(CrowdingResultName, "The average crowding value for the current front (excluding infinities)", new DoubleValue(0.0))); 361 360 Results.Add(new Result(SpacingResultName, "The spacing for the current front (excluding infinities)", new DoubleValue(0.0))); … … 369 368 table.Rows.Add(new DataRow(DifferenceToBestKnownHypervolumeResultName)); 370 369 table.Rows.Add(new DataRow(SpacingResultName)); 371 Results.Add(new Result(TimetableResultName, "Different quality meas sures in a timeseries", table));370 Results.Add(new Result(TimetableResultName, "Different quality measures in a time series", table)); 372 371 Results.Add(new Result(CurrentFrontResultName, "The current front", new DoubleMatrix())); 373 Results.Add(new Result(ScatterPlotResultName, "A scatter plot displaying the evaluated solutions and (if available) the analytically optimal front", new ParetoFrontScatterPlot()));372 Results.Add(new Result(ScatterPlotResultName, "A scatter plot displaying the evaluated solutions and (if available) the analytically optimal front", new ParetoFrontScatterPlot())); 374 373 375 374 var problem = Problem; … … 455 454 456 455 private void SelectParents(IReadOnlyList<Individual> parents, int length) { 457 //perform a non dominated sort to assign the rank to every element456 //perform a non-dominated sort to assign the rank to every element 458 457 int[] ranks; 459 458 var fronts = DominationCalculator.CalculateAllParetoFronts(parents.ToArray(), parents.Select(i => i.PenalizedFitness).ToArray(), Problem.Maximization, out ranks); … … 469 468 } 470 469 471 //now use the indicator to deselect the approximat ingly worst elements of the last selected front470 //now use the indicator to deselect the approximately worst elements of the last selected front 472 471 var front1 = fronts[rank].OrderBy(x => x.Item1.PenalizedFitness[0]).ToList(); 473 472 for (; popSize > length; popSize--) { … … 501 500 if (qualities.Length == 0) return; 502 501 ResultsCrowding = CrowdingCalculator.CalculateCrowding(qualities); 503 ResultsSpacing = Spacing .Calculate(qualities);504 505 506 ResultsGenerationalDistance = problem.BestKnownFront != null ? GenerationalDistance .Calculate(qualities, problem.BestKnownFront, 1) : double.NaN;507 ResultsInvertedGenerationalDistance = problem.BestKnownFront != null ? InvertedGenerationalDistance.Calculate(qualities, problem.BestKnownFront, 1) : double.NaN;502 ResultsSpacing = SpacingAnalyzer.CalculateSpacing(qualities); 503 504 505 ResultsGenerationalDistance = problem.BestKnownFront != null ? GenerationalDistanceAnalyzer.CalculateGenerationalDistance(qualities, problem.BestKnownFront, 1) : double.NaN; 506 ResultsInvertedGenerationalDistance = problem.BestKnownFront != null ? GenerationalDistanceAnalyzer.CalculateInverseGenerationalDistance(qualities, problem.BestKnownFront, 1) : double.NaN; 508 507 ResultsHypervolume = problem.ReferencePoint != null ? HypervolumeCalculator.CalculateHypervolume(qualities, problem.ReferencePoint, Problem.Maximization) : double.NaN; 509 508 ResultsBestHypervolume = Math.Max(ResultsHypervolume, ResultsBestHypervolume); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/HeuristicLab.Problems.TestFunctions.MultiObjective-3.3.csproj
r17229 r17261 96 96 </ItemGroup> 97 97 <ItemGroup> 98 <Compile Include="Analyzers\ScatterPlotAnalyzer.cs" />99 <Compile Include="Analyzers\CrowdingAnalyzer.cs" />100 <Compile Include="Analyzers\InvertedGenerationalDistanceAnalyzer.cs" />101 <Compile Include="Analyzers\HypervolumeAnalyzer.cs" />102 <Compile Include="Analyzers\MOTFAnalyzer.cs" />103 <Compile Include="Analyzers\GenerationalDistanceAnalyzer.cs" />104 <Compile Include="Analyzers\SpacingAnalyzer.cs" />105 98 <Compile Include="Instances\IHRInstanceProvider.cs" /> 106 99 <Compile Include="Interfaces\IConstrainedTestFunction.cs" /> 107 <Compile Include="Interfaces\IMultiObjectiveTestFunctionAnalyzer.cs" />108 <Compile Include="Calculators\Crowding.cs" />109 <Compile Include="Calculators\Spacing.cs" />110 <Compile Include="Calculators\HyperVolume.cs" />111 <Compile Include="Calculators\InvertedGenerationalDistance.cs" />112 <Compile Include="Calculators\GenerationalDistance.cs" />113 100 <Compile Include="Utilities.cs" /> 114 101 <Compile Include="Instances\MISCInstanceProvider.cs" /> … … 125 112 <Compile Include="TestFunctions\IHR\IHR2.cs" /> 126 113 <Compile Include="TestFunctions\Misc\ELLI1.cs" /> 127 <Compile Include="NonDominatedSelect.cs" />128 114 <Compile Include="Interfaces\IMultiObjectiveTestFunction.cs" /> 129 115 <Compile Include="MultiObjectiveTestFunctionProblem.cs" /> -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/MultiObjectiveTestFunctionProblem.cs
r17226 r17261 20 20 #endregion 21 21 using System; 22 using System.Collections.Generic;23 22 using System.Linq; 24 23 using HEAL.Attic; … … 148 147 var front = TestFunction.OptimalParetoFront(Objectives); 149 148 var bkf = front != null ? (DoubleMatrix)Utilities.ToMatrix(front).AsReadOnly() : null; 150 Parameters.Add(new FixedValueParameter<DoubleMatrix>(BestKnownFrontParameterName, "A double matrix representing the best known qualit es for this problem (aka points on the Pareto front). Points are to be given in a row-wise fashion.", bkf));149 Parameters.Add(new FixedValueParameter<DoubleMatrix>(BestKnownFrontParameterName, "A double matrix representing the best known qualities for this problem (aka points on the Pareto front). Points are to be given in a row-wise fashion.", bkf)); 151 150 152 151 Parameters.Remove(ReferencePointParameterName); 153 Parameters.Add(new FixedValueParameter<DoubleArray>(ReferencePointParameterName, "The ref rence point for hypervolume calculations on this problem", new DoubleArray(TestFunction.ReferencePoint(Objectives))));152 Parameters.Add(new FixedValueParameter<DoubleArray>(ReferencePointParameterName, "The reference point for hypervolume calculations on this problem", new DoubleArray(TestFunction.ReferencePoint(Objectives)))); 154 153 155 154 BoundsParameter.Value = new DoubleMatrix(TestFunction.Bounds(Objectives)); … … 159 158 base.OnEncodingChanged(); 160 159 UpdateParameterValues(); 161 ParameterizeAnalyzers();162 160 } 163 161 … … 165 163 base.OnEvaluatorChanged(); 166 164 UpdateParameterValues(); 167 ParameterizeAnalyzers();168 165 } 169 166 … … 172 169 Objectives = Math.Max(TestFunction.MinimumObjectives, Math.Min(Objectives, TestFunction.MaximumObjectives)); 173 170 Parameters.Remove(ReferencePointParameterName); 174 Parameters.Add(new FixedValueParameter<DoubleArray>(ReferencePointParameterName, "The refrence point for hypervolume calculations on this problem", new DoubleArray(TestFunction.ReferencePoint(Objectives)))); 175 ParameterizeAnalyzers(); 171 Parameters.Add(new FixedValueParameter<DoubleArray>(ReferencePointParameterName, "The reference point for hypervolume calculations on this problem", new DoubleArray(TestFunction.ReferencePoint(Objectives)))); 176 172 UpdateParameterValues(); 177 173 OnReset(); … … 197 193 Operators.Add(new SpacingAnalyzer()); 198 194 Operators.Add(new TimelineAnalyzer()); 199 Operators.Add(new ScatterPlotAnalyzer());200 ParameterizeAnalyzers();201 }202 203 private IEnumerable<IMultiObjectiveTestFunctionAnalyzer> Analyzers {204 get { return Operators.OfType<IMultiObjectiveTestFunctionAnalyzer>(); }205 }206 207 private void ParameterizeAnalyzers() {208 foreach (var analyzer in Analyzers) {209 analyzer.ResultsParameter.ActualName = "Results";210 analyzer.QualitiesParameter.ActualName = Evaluator.QualitiesParameter.ActualName;211 analyzer.TestFunctionParameter.ActualName = TestFunctionParameter.Name;212 analyzer.BestKnownFrontParameter.ActualName = BestKnownFrontParameter.Name;213 var scatterPlotAnalyzer = analyzer as ScatterPlotAnalyzer;214 if (scatterPlotAnalyzer != null)215 scatterPlotAnalyzer.IndividualsParameter.ActualName = Encoding.Name;216 }217 195 } 218 196 #endregion
Note: See TracChangeset
for help on using the changeset viewer.