Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/30/13 10:54:12 (11 years ago)
Author:
jkarder
Message:

#2029: applied the changes suggested by gkronber in comment:5:ticket:2029

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/Improvers/SingleObjectiveTestFunctionImprovementOperator.cs

    r9345 r9407  
    125125        throw new ArgumentException("Cannot improve solution because it has the wrong type.");
    126126
    127       double bestSolQuality = Evaluator.EvaluateFunction(bestSol);
     127      var evaluator = Evaluator;
     128
     129      double bestSolQuality = evaluator.Evaluate(bestSol);
    128130
    129131      // create perturbed solutions
     
    139141      for (int i = 0; i < ImprovementAttempts.Value; i++) {
    140142        // order according to their objective function value
    141         Array.Sort(simplex, (x, y) => Evaluator.EvaluateFunction(x).CompareTo(Evaluator.EvaluateFunction(y)));
     143        Array.Sort(simplex, (x, y) => evaluator.Evaluate(x).CompareTo(evaluator.Evaluate(y)));
    142144
    143145        // calculate centroid
     
    153155        for (int j = 0; j < reflectionPoint.Length; j++)
    154156          reflectionPoint[j] = centroid[j] + Alpha.Value * (centroid[j] - simplex[simplex.Length - 1][j]);
    155         double reflectionPointQuality = Evaluator.EvaluateFunction(reflectionPoint);
    156         if (Evaluator.EvaluateFunction(simplex[0]) <= reflectionPointQuality
    157             && reflectionPointQuality < Evaluator.EvaluateFunction(simplex[simplex.Length - 2]))
     157        double reflectionPointQuality = evaluator.Evaluate(reflectionPoint);
     158        if (evaluator.Evaluate(simplex[0]) <= reflectionPointQuality
     159            && reflectionPointQuality < evaluator.Evaluate(simplex[simplex.Length - 2]))
    158160          simplex[simplex.Length - 1] = reflectionPoint;
    159161
    160162        // expansion
    161         if (reflectionPointQuality < Evaluator.EvaluateFunction(simplex[0])) {
     163        if (reflectionPointQuality < evaluator.Evaluate(simplex[0])) {
    162164          RealVector expansionPoint = new RealVector(bestSol.Length);
    163165          for (int j = 0; j < expansionPoint.Length; j++)
    164166            expansionPoint[j] = centroid[j] + Beta.Value * (reflectionPoint[j] - centroid[j]);
    165           simplex[simplex.Length - 1] = Evaluator.EvaluateFunction(expansionPoint) < reflectionPointQuality ? expansionPoint : reflectionPoint;
     167          simplex[simplex.Length - 1] = evaluator.Evaluate(expansionPoint) < reflectionPointQuality ? expansionPoint : reflectionPoint;
    166168        }
    167169
    168170        // contraction
    169         if (Evaluator.EvaluateFunction(simplex[simplex.Length - 2]) <= reflectionPointQuality
    170             && reflectionPointQuality < Evaluator.EvaluateFunction(simplex[simplex.Length - 1])) {
     171        if (evaluator.Evaluate(simplex[simplex.Length - 2]) <= reflectionPointQuality
     172            && reflectionPointQuality < evaluator.Evaluate(simplex[simplex.Length - 1])) {
    171173          RealVector outsideContractionPoint = new RealVector(bestSol.Length);
    172174          for (int j = 0; j < outsideContractionPoint.Length; j++)
    173175            outsideContractionPoint[j] = centroid[j] + Gamma.Value * (reflectionPoint[j] - centroid[j]);
    174           if (Evaluator.EvaluateFunction(outsideContractionPoint) <= reflectionPointQuality) {
     176          if (evaluator.Evaluate(outsideContractionPoint) <= reflectionPointQuality) {
    175177            simplex[simplex.Length - 1] = outsideContractionPoint;
    176             if (Evaluator.EvaluateFunction(reflectionPoint) >= Evaluator.EvaluateFunction(simplex[simplex.Length - 1])) {
     178            if (evaluator.Evaluate(reflectionPoint) >= evaluator.Evaluate(simplex[simplex.Length - 1])) {
    177179              RealVector insideContractionPoint = new RealVector(bestSol.Length);
    178180              for (int j = 0; j < insideContractionPoint.Length; j++)
    179181                insideContractionPoint[j] = centroid[j] - Gamma.Value * (reflectionPoint[j] - centroid[j]);
    180               if (Evaluator.EvaluateFunction(insideContractionPoint) < Evaluator.EvaluateFunction(simplex[simplex.Length - 1])) simplex[simplex.Length - 1] = insideContractionPoint;
     182              if (evaluator.Evaluate(insideContractionPoint) < evaluator.Evaluate(simplex[simplex.Length - 1])) simplex[simplex.Length - 1] = insideContractionPoint;
    181183            }
    182184          }
Note: See TracChangeset for help on using the changeset viewer.