Changeset 11077


Ignore:
Timestamp:
07/02/14 18:28:44 (5 years ago)
Author:
gkronber
Message:

#2171: minor changes while reviewing the source code for the parameter optimization problem plugin

Location:
trunk/sources/HeuristicLab.Problems.ParameterOptimization/3.3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.ParameterOptimization/3.3/BestSolutionAnalyzer.cs

    r11019 r11077  
    9595      DoubleValue bestKnownQuality = BestKnownQualityParameter.ActualValue;
    9696
    97       int ind = -1;
    98       if (!max) ind = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
    99       else ind = qualities.Select((x, index) => new { index, x.Value }).OrderByDescending(x => x.Value).First().index;
     97      int indexOfBest = -1;
     98      if (!max) indexOfBest = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
     99      else indexOfBest = qualities.Select((x, index) => new { index, x.Value }).OrderByDescending(x => x.Value).First().index;
    100100
    101       var bestQuality = qualities[ind].Value;
    102       var bestParameterVector = (RealVector)parameterVectors[ind].Clone();
     101      var bestQuality = qualities[indexOfBest].Value;
     102      var bestParameterVector = (RealVector)parameterVectors[indexOfBest].Clone();
    103103      ResultCollection results = ResultsParameter.ActualValue;
    104104
     
    123123
    124124      //update best known quality
    125       if (bestKnownQuality == null || max && bestQuality > bestKnownQuality.Value
     125      if (bestKnownQuality == null
     126        || max && bestQuality > bestKnownQuality.Value
    126127        || !max && bestQuality < bestKnownQuality.Value) {
    127128        BestKnownQualityParameter.ActualValue = new DoubleValue(bestQuality);
  • trunk/sources/HeuristicLab.Problems.ParameterOptimization/3.3/BestSolutionsAnalyzer.cs

    r10594 r11077  
    156156    public int GetHashCode(DoubleArray obj) {
    157157      if (obj == null) return 0;
    158       return obj.Aggregate(23, (current, item) => current ^ (int)item);
     158      return (int)obj.Aggregate(23L, (current, item) => current ^ System.BitConverter.DoubleToInt64Bits(item));
    159159    }
    160160  }
  • trunk/sources/HeuristicLab.Problems.ParameterOptimization/3.3/ParameterOptimizationProblem.cs

    r10594 r11077  
    9494      : base(evaluator, new UniformRandomRealVectorCreator()) {
    9595      Parameters.Add(new FixedValueParameter<IntValue>(ProblemSizeParameterName, "The dimension of the parameter vector that is to be optimized.", new IntValue(1)));
    96       Parameters.Add(new ValueParameter<DoubleMatrix>(BoundsParameterName, "The bounds for each dimension of the parameter vector. If fewer bounds are", new DoubleMatrix(new double[,] { { 0, 100 } }, new string[] { "LowerBound", "UpperBound" })));
     96      Parameters.Add(new ValueParameter<DoubleMatrix>(BoundsParameterName, "The bounds for each dimension of the parameter vector. If the number of bounds is smaller than the problem size then the bounds are reused in a cyclic manner.", new DoubleMatrix(new double[,] { { 0, 100 } }, new string[] { "LowerBound", "UpperBound" })));
    9797      Parameters.Add(new ValueParameter<StringArray>(ParameterNamesParameterName, "The element names which are used to calculate the quality of a parameter vector.", new StringArray(new string[] { "Parameter0" })));
    9898
     
    121121    protected override void OnEvaluatorChanged() {
    122122      base.OnEvaluatorChanged();
    123       strategyVectorManipulator.GeneralLearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * ProblemSize));
    124       strategyVectorManipulator.LearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * Math.Sqrt(ProblemSize)));
    125123      UpdateParameters();
    126124    }
     
    136134      Evaluator.ParameterNamesParameter.ActualName = ParameterNamesParameter.Name;
    137135
    138       var bestSolutionAnalyzer = Operators.OfType<BestSolutionAnalyzer>().First();
    139       bestSolutionAnalyzer.ParameterVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
    140       bestSolutionAnalyzer.ParameterNamesParameter.ActualName = ParameterNamesParameter.Name;
    141 
     136      foreach (var bestSolutionAnalyzer in Operators.OfType<BestSolutionAnalyzer>()) {
     137        bestSolutionAnalyzer.ParameterVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
     138        bestSolutionAnalyzer.ParameterNamesParameter.ActualName = ParameterNamesParameter.Name;
     139      }
    142140      Bounds = new DoubleMatrix(ProblemSize, 2);
    143141      Bounds.RowNames = ParameterNames;
     
    171169        if (string.IsNullOrEmpty(ParameterNames[i])) ParameterNames[i] = "Parameter" + i;
    172170      }
     171
     172      strategyVectorManipulator.GeneralLearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * ProblemSize));
     173      strategyVectorManipulator.LearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * Math.Sqrt(ProblemSize)));
    173174    }
    174175
  • trunk/sources/HeuristicLab.Problems.ParameterOptimization/3.3/Plugin.cs.frame

    r10594 r11077  
    2020#endregion
    2121
    22 using System;
    2322using HeuristicLab.PluginInfrastructure;
    24 using Microsoft.Win32;
    2523
    2624namespace HeuristicLab.Problems.ParameterOptimization {
  • trunk/sources/HeuristicLab.Problems.ParameterOptimization/3.3/Properties/AssemblyInfo.cs.frame

    r10605 r11077  
    2727// associated with an assembly.
    2828[assembly: AssemblyTitle("HeuristicLab.Problems.ParameterOptimization")]
    29 [assembly: AssemblyDescription("HeuristicLab problems for parameter optimization.")]
     29[assembly: AssemblyDescription("HeuristicLab problem for parameter optimization.")]
    3030[assembly: AssemblyConfiguration("")]
    3131[assembly: AssemblyCompany("")]
Note: See TracChangeset for help on using the changeset viewer.