- Timestamp:
- 04/08/13 18:57:53 (12 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.TestFunctions/3.3
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/AckleyEvaluator.cs
r7259 r9345 109 109 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 110 110 /// <returns>The result value of the Ackley function at the given point.</returns> 111 p rotectedoverride double EvaluateFunction(RealVector point) {111 public override double EvaluateFunction(RealVector point) { 112 112 return Apply(point); 113 113 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/BealeEvaluator.cs
r7259 r9345 98 98 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 99 99 /// <returns>The result value of the Beale function at the given point.</returns> 100 p rotectedoverride double EvaluateFunction(RealVector point) {100 public override double EvaluateFunction(RealVector point) { 101 101 return Apply(point); 102 102 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/BoothEvaluator.cs
r7259 r9345 94 94 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 95 95 /// <returns>The result value of the Booth function at the given point.</returns> 96 p rotectedoverride double EvaluateFunction(RealVector point) {96 public override double EvaluateFunction(RealVector point) { 97 97 return Apply(point); 98 98 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/GriewankEvaluator.cs
r7259 r9345 133 133 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 134 134 /// <returns>The result value of the Griewank function at the given point.</returns> 135 p rotectedoverride double EvaluateFunction(RealVector point) {135 public override double EvaluateFunction(RealVector point) { 136 136 if (point.Length > 100) 137 137 return Apply(point); -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/LevyEvaluator.cs
r7259 r9345 111 111 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 112 112 /// <returns>The result value of the Levy function at the given point.</returns> 113 p rotectedoverride double EvaluateFunction(RealVector point) {113 public override double EvaluateFunction(RealVector point) { 114 114 return Apply(point); 115 115 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/MatyasEvaluator.cs
r7259 r9345 93 93 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 94 94 /// <returns>The result value of the Matyas function at the given point.</returns> 95 p rotectedoverride double EvaluateFunction(RealVector point) {95 public override double EvaluateFunction(RealVector point) { 96 96 return Apply(point); 97 97 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/MultinormalEvaluator.cs
r8587 r9345 161 161 } 162 162 163 public double Evaluate(RealVector point) { 164 return EvaluateFunction(point); 165 } 166 167 protected override double EvaluateFunction(RealVector point) { 163 public override double EvaluateFunction(RealVector point) { 168 164 double value = 0; 169 165 if (centers.Count == 0) { -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/RandomEvaluator.cs
r9294 r9345 86 86 } 87 87 88 public override double Evaluate2D(double x, double y) { 89 var random = new System.Random(); 90 return random.NextDouble(); 91 } 92 93 protected override double EvaluateFunction(RealVector point) { 94 return RandomParameter.ActualValue.NextDouble(); 88 public override double EvaluateFunction(RealVector point) { 89 return ExecutionContext == null ? new System.Random().NextDouble() : RandomParameter.ActualValue.NextDouble(); 95 90 } 96 91 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/RastriginEvaluator.cs
r7259 r9345 119 119 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 120 120 /// <returns>The result value of the Rastrigin function at the given point.</returns> 121 p rotectedoverride double EvaluateFunction(RealVector point) {121 public override double EvaluateFunction(RealVector point) { 122 122 return Apply(point, A.Value); 123 123 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/RosenbrockEvaluator.cs
r7259 r9345 105 105 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 106 106 /// <returns>The result value of the Rosenbrock function at the given point.</returns> 107 p rotectedoverride double EvaluateFunction(RealVector point) {107 public override double EvaluateFunction(RealVector point) { 108 108 return Apply(point); 109 109 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/SchwefelEvaluator.cs
r7259 r9345 96 96 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 97 97 /// <returns>The result value of the Schwefel function at the given point.</returns> 98 p rotectedoverride double EvaluateFunction(RealVector point) {98 public override double EvaluateFunction(RealVector point) { 99 99 return Apply(point); 100 100 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/SingleObjectiveTestFunctionProblemEvaluator.cs
r7259 r9345 92 92 return EvaluateFunction(new RealVector(new double[] { x, y })); 93 93 } 94 /// <summary>95 /// Gets the best known solution for this function.96 /// </summary>97 public abstract RealVector GetBestKnownSolution(int dimension);98 94 99 95 /// <summary> … … 102 98 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 103 99 /// <returns>The result value of the function at the given point.</returns> 104 protected abstract double EvaluateFunction(RealVector point); 100 public abstract double EvaluateFunction(RealVector point); 101 102 /// <summary> 103 /// Gets the best known solution for this function. 104 /// </summary> 105 public abstract RealVector GetBestKnownSolution(int dimension); 105 106 } 106 107 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/SphereEvaluator.cs
r7259 r9345 132 132 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 133 133 /// <returns>The result value of the Sphere function at the given point.</returns> 134 p rotectedoverride double EvaluateFunction(RealVector point) {134 public override double EvaluateFunction(RealVector point) { 135 135 return Apply(point, C.Value, Alpha.Value); 136 136 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/SumSquaresEvaluator.cs
r7259 r9345 96 96 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 97 97 /// <returns>The result value of the Sum Squares function at the given point.</returns> 98 p rotectedoverride double EvaluateFunction(RealVector point) {98 public override double EvaluateFunction(RealVector point) { 99 99 return Apply(point); 100 100 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Evaluators/ZakharovEvaluator.cs
r7259 r9345 100 100 /// <param name="point">N-dimensional point for which the test function should be evaluated.</param> 101 101 /// <returns>The result value of the Zakharov function at the given point.</returns> 102 p rotectedoverride double EvaluateFunction(RealVector point) {102 public override double EvaluateFunction(RealVector point) { 103 103 return Apply(point); 104 104 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Improvers/SingleObjectiveTestFunctionImprovementOperator.cs
r8987 r9345 21 21 22 22 using System; 23 using System.Reflection;24 23 using HeuristicLab.Common; 25 24 using HeuristicLab.Core; … … 126 125 throw new ArgumentException("Cannot improve solution because it has the wrong type."); 127 126 128 MethodInfo evaluationMethod = Evaluator.GetType().GetMethod("EvaluateFunction", 129 BindingFlags.Instance | BindingFlags.NonPublic, 130 null, 131 new[] { typeof(RealVector) }, 132 null); 133 Func<RealVector, double> functionEvaluator = x => (double)evaluationMethod.Invoke(Evaluator, new object[] { x }); 134 double bestSolQuality = functionEvaluator(bestSol); 127 double bestSolQuality = Evaluator.EvaluateFunction(bestSol); 135 128 136 129 // create perturbed solutions … … 146 139 for (int i = 0; i < ImprovementAttempts.Value; i++) { 147 140 // order according to their objective function value 148 Array.Sort(simplex, (x, y) => functionEvaluator(x).CompareTo(functionEvaluator(y)));141 Array.Sort(simplex, (x, y) => Evaluator.EvaluateFunction(x).CompareTo(Evaluator.EvaluateFunction(y))); 149 142 150 143 // calculate centroid … … 160 153 for (int j = 0; j < reflectionPoint.Length; j++) 161 154 reflectionPoint[j] = centroid[j] + Alpha.Value * (centroid[j] - simplex[simplex.Length - 1][j]); 162 double reflectionPointQuality = functionEvaluator(reflectionPoint);163 if ( functionEvaluator(simplex[0]) <= reflectionPointQuality164 && reflectionPointQuality < functionEvaluator(simplex[simplex.Length - 2]))155 double reflectionPointQuality = Evaluator.EvaluateFunction(reflectionPoint); 156 if (Evaluator.EvaluateFunction(simplex[0]) <= reflectionPointQuality 157 && reflectionPointQuality < Evaluator.EvaluateFunction(simplex[simplex.Length - 2])) 165 158 simplex[simplex.Length - 1] = reflectionPoint; 166 159 167 160 // expansion 168 if (reflectionPointQuality < functionEvaluator(simplex[0])) {161 if (reflectionPointQuality < Evaluator.EvaluateFunction(simplex[0])) { 169 162 RealVector expansionPoint = new RealVector(bestSol.Length); 170 163 for (int j = 0; j < expansionPoint.Length; j++) 171 164 expansionPoint[j] = centroid[j] + Beta.Value * (reflectionPoint[j] - centroid[j]); 172 simplex[simplex.Length - 1] = functionEvaluator(expansionPoint) < reflectionPointQuality ? expansionPoint : reflectionPoint;165 simplex[simplex.Length - 1] = Evaluator.EvaluateFunction(expansionPoint) < reflectionPointQuality ? expansionPoint : reflectionPoint; 173 166 } 174 167 175 168 // contraction 176 if ( functionEvaluator(simplex[simplex.Length - 2]) <= reflectionPointQuality177 && reflectionPointQuality < functionEvaluator(simplex[simplex.Length - 1])) {169 if (Evaluator.EvaluateFunction(simplex[simplex.Length - 2]) <= reflectionPointQuality 170 && reflectionPointQuality < Evaluator.EvaluateFunction(simplex[simplex.Length - 1])) { 178 171 RealVector outsideContractionPoint = new RealVector(bestSol.Length); 179 172 for (int j = 0; j < outsideContractionPoint.Length; j++) 180 173 outsideContractionPoint[j] = centroid[j] + Gamma.Value * (reflectionPoint[j] - centroid[j]); 181 if ( functionEvaluator(outsideContractionPoint) <= reflectionPointQuality) {174 if (Evaluator.EvaluateFunction(outsideContractionPoint) <= reflectionPointQuality) { 182 175 simplex[simplex.Length - 1] = outsideContractionPoint; 183 if ( functionEvaluator(reflectionPoint) >= functionEvaluator(simplex[simplex.Length - 1])) {176 if (Evaluator.EvaluateFunction(reflectionPoint) >= Evaluator.EvaluateFunction(simplex[simplex.Length - 1])) { 184 177 RealVector insideContractionPoint = new RealVector(bestSol.Length); 185 178 for (int j = 0; j < insideContractionPoint.Length; j++) 186 179 insideContractionPoint[j] = centroid[j] - Gamma.Value * (reflectionPoint[j] - centroid[j]); 187 if ( functionEvaluator(insideContractionPoint) < functionEvaluator(simplex[simplex.Length - 1])) simplex[simplex.Length - 1] = insideContractionPoint;180 if (Evaluator.EvaluateFunction(insideContractionPoint) < Evaluator.EvaluateFunction(simplex[simplex.Length - 1])) simplex[simplex.Length - 1] = insideContractionPoint; 188 181 } 189 182 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Interfaces/ISingleObjectiveTestFunctionProblemEvaluator.cs
r7259 r9345 39 39 40 40 double Evaluate2D(double x, double y); 41 double EvaluateFunction(RealVector point); 41 42 RealVector GetBestKnownSolution(int dimension); 42 43 } -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/MoveEvaluators/MultinormalAdditiveMoveEvaluator.cs
r7259 r9345 55 55 var eval = EvaluatorParameter.ActualValue as MultinormalEvaluator; 56 56 if (eval != null) 57 return eval.Evaluate (wrapper);57 return eval.EvaluateFunction(wrapper); 58 58 throw new InvalidOperationException("evaluator is not a multinormal evaluator"); 59 59 }
Note: See TracChangeset
for help on using the changeset viewer.