Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/05/11 02:03:20 (13 years ago)
Author:
cneumuel
Message:

#1215

  • added normalization for quality values of individuals
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Analyzers/BestParameterConfigurationAnalyzer.cs

    r5087 r5212  
    4040    }
    4141
     42    // stores the medians of the qualities of each problem
     43    public LookupParameter<DoubleArray> ProblemQualityMediansParameter {
     44      get { return (LookupParameter<DoubleArray>)Parameters["ProblemQualityMedians"]; }
     45    }
     46    public LookupParameter<ConstrainedItemList<ISingleObjectiveProblem>> ProblemsParameter {
     47      get { return (LookupParameter<ConstrainedItemList<ISingleObjectiveProblem>>)Parameters[MetaOptimizationProblem.ProblemsParameterName]; }
     48    }
     49
    4250    public BestParameterConfigurationAnalyzer()
    4351      : base() {
     
    4957      Parameters.Add(new LookupParameter<IRun>("BestKnownSolution", "TODO The best known solution of this TSP instance."));
    5058      Parameters.Add(new LookupParameter<RunCollection>("Population", "TODO The best known solution of this TSP instance."));
     59      Parameters.Add(new LookupParameter<DoubleArray>("ProblemQualityMedians", ""));
     60      Parameters.Add(new LookupParameter<ConstrainedItemList<ISingleObjectiveProblem>>(MetaOptimizationProblem.ProblemsParameterName));
    5161    }
    5262
     
    6575
    6676      int idxBest = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
    67 
    6877
    6978      ParameterConfigurationTree best = (ParameterConfigurationTree)parameterTrees[idxBest];
     
    8796
    8897      // population
    89 
    9098      int i = 0;
    9199      RunCollection rc = new RunCollection();
    92       foreach (ParameterConfigurationTree pt in parameterTrees.OrderByDescending(x => x.BestQuality.Value)) { // todo: respect Maximization:true/false
     100      foreach (ParameterConfigurationTree pt in parameterTrees.OrderBy(x => x.AverageQualityNormalized)) { // todo: respect Maximization:true/false
    93101        IRun run = new Run();
    94102        run.Name = string.Format("Individuum ({0})", i);
     
    106114      }
    107115
     116      // medians for the problems
     117      DoubleArray medians = new DoubleArray(ProblemsParameter.ActualValue.Count);
     118      for (int pi = 0; pi < ProblemsParameter.ActualValue.Count; pi++) {
     119        double[] values = new double[rc.Count];
     120        for (int ri = 0; ri < rc.Count; ri++) {
     121          values[ri] = ((DoubleArray)rc.ElementAt(ri).Results["RunsAverageQualities"])[pi];
     122        }
     123        medians[pi] = values.Median();
     124      }
     125      ProblemQualityMediansParameter.ActualValue = medians;
     126
     127      if (results.ContainsKey("ProblemsAverageQualityMedians")) {
     128        results["ProblemsAverageQualityMedians"].Value = medians;
     129      } else {
     130        results.Add(new Result("ProblemsAverageQualityMedians", medians));
     131      }
     132
    108133      return base.Apply();
    109134    }
Note: See TracChangeset for help on using the changeset viewer.