Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/18/15 10:54:32 (9 years ago)
Author:
bburlacu
Message:

#2276: Merged trunk changes.

Location:
branches/HeuristicLab.DatasetRefactor/sources
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.DatasetRefactor/sources

  • branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Encodings.RealVectorEncoding

    • Property svn:mergeinfo set to (toggle deleted branches)
      /branches/HLScript/HeuristicLab.Encodings.RealVectorEncodingmergedeligible
      /stable/HeuristicLab.Encodings.RealVectorEncodingmergedeligible
      /trunk/sources/HeuristicLab.Encodings.RealVectorEncodingmergedeligible
      /branches/1721-RandomForestPersistence/HeuristicLab.Encodings.RealVectorEncoding10321-10322
      /branches/Algorithms.GradientDescent/HeuristicLab.Encodings.RealVectorEncoding5516-5520
      /branches/Benchmarking/sources/HeuristicLab.Encodings.RealVectorEncoding6917-7005
      /branches/CloningRefactoring/HeuristicLab.Encodings.RealVectorEncoding4656-4721
      /branches/CodeEditor/HeuristicLab.Encodings.RealVectorEncoding11700-11806
      /branches/DataAnalysis Refactoring/HeuristicLab.Encodings.RealVectorEncoding5471-5808
      /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Encodings.RealVectorEncoding5815-6180
      /branches/DataAnalysis/HeuristicLab.Encodings.RealVectorEncoding4458-4459,​4462,​4464
      /branches/DataPreprocessing/HeuristicLab.Encodings.RealVectorEncoding10085-11101
      /branches/GP.Grammar.Editor/HeuristicLab.Encodings.RealVectorEncoding6284-6795
      /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Encodings.RealVectorEncoding5060
      /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Encodings.RealVectorEncoding6123-9799
      /branches/LogResidualEvaluator/HeuristicLab.Encodings.RealVectorEncoding10202-10483
      /branches/NET40/sources/HeuristicLab.Encodings.RealVectorEncoding5138-5162
      /branches/ParallelEngine/HeuristicLab.Encodings.RealVectorEncoding5175-5192
      /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Encodings.RealVectorEncoding7568-7810
      /branches/ProgrammableProblem/HeuristicLab.Encodings.RealVectorEncoding11777-11959
      /branches/QAPAlgorithms/HeuristicLab.Encodings.RealVectorEncoding6350-6627
      /branches/Restructure trunk solution/HeuristicLab.Encodings.RealVectorEncoding6828
      /branches/RuntimeOptimizer/HeuristicLab.Encodings.RealVectorEncoding8943-9078
      /branches/ScatterSearch (trunk integration)/HeuristicLab.Encodings.RealVectorEncoding7787-8333
      /branches/SlaveShutdown/HeuristicLab.Encodings.RealVectorEncoding8944-8956
      /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Encodings.RealVectorEncoding10204-10479
      /branches/SuccessProgressAnalysis/HeuristicLab.Encodings.RealVectorEncoding5370-5682
      /branches/Trunk/HeuristicLab.Encodings.RealVectorEncoding6829-6865
      /branches/UnloadJobs/HeuristicLab.Encodings.RealVectorEncoding9168-9215
      /branches/VNS/HeuristicLab.Encodings.RealVectorEncoding5594-5752
      /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding5959-6341
  • branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Creators/NormalDistributedRealVectorCreator.cs

    r11171 r12031  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    8888    /// </remarks>
    8989    /// <param name="random">The random number generator.</param>
    90     /// <param name="mean">The mean vector around which the resulting vector is sampled.</param>
    91     /// <param name="sigma">The vector of standard deviations, must have at least one row.</param>
     90    /// <param name="means">The mean vector around which the resulting vector is sampled.</param>
     91    /// <param name="sigmas">The vector of standard deviations, must have at least one row.</param>
    9292    /// <param name="bounds">The lower and upper bound (1st and 2nd column) of the positions in the vector. If there are less rows than dimensions, the rows are cycled.</param>
    9393    /// <param name="maximumTries">The maximum number of tries to sample a value inside the bounds for each dimension. If a valid value cannot be obtained, the mean will be used.</param>
    9494    /// <returns>The newly created real vector.</returns>
    95     public static RealVector Apply(IRandom random, RealVector mean, DoubleArray sigma, DoubleMatrix bounds, int maximumTries = 1000) {
     95    public static RealVector Apply(IntValue lengthValue, IRandom random, RealVector means, DoubleArray sigmas, DoubleMatrix bounds, int maximumTries = 1000) {
     96      if (lengthValue == null || lengthValue.Value == 0) throw new ArgumentException("Length is not defined or zero");
    9697      if (random == null) throw new ArgumentNullException("Random is not defined", "random");
    97       if (mean == null || mean.Length == 0) throw new ArgumentNullException("Mean is not defined", "mean");
    98       if (sigma == null || sigma.Length == 0) throw new ArgumentNullException("Sigma is not defined.", "sigma");
     98      if (means == null || means.Length == 0) throw new ArgumentNullException("Mean is not defined", "mean");
     99      if (sigmas == null || sigmas.Length == 0) throw new ArgumentNullException("Sigma is not defined.", "sigma");
    99100      if (bounds == null || bounds.Rows == 0) bounds = new DoubleMatrix(new[,] { { double.MinValue, double.MaxValue } });
     101      var length = lengthValue.Value;
    100102      var nd = new NormalDistributedRandom(random, 0, 1);
    101       var result = (RealVector)mean.Clone();
     103      var result = new RealVector(length);
    102104      for (int i = 0; i < result.Length; i++) {
    103105        var min = bounds[i % bounds.Rows, 0];
    104106        var max = bounds[i % bounds.Rows, 1];
    105         if (min.IsAlmost(max) || mean[i] < min) result[i] = min;
    106         else if (mean[i] > max) result[i] = max;
     107        var mean = means[i % means.Length];
     108        var sigma = sigmas[i % sigmas.Length];
     109        if (min.IsAlmost(max) || mean < min) result[i] = min;
     110        else if (mean > max) result[i] = max;
    107111        else {
    108112          int count = 0;
    109113          bool inRange;
    110114          do {
    111             result[i] = mean[i] + sigma[i % sigma.Length] * nd.NextDouble();
    112             inRange = result[i] >= bounds[i % bounds.Rows, 0] && result[i] < bounds[i % bounds.Rows, 1];
     115            result[i] = mean + sigma * nd.NextDouble();
     116            inRange = result[i] >= min && result[i] < max;
    113117            count++;
    114118          } while (count < maximumTries && !inRange);
    115119          if (count == maximumTries && !inRange)
    116             result[i] = mean[i];
     120            result[i] = mean;
    117121        }
    118122      }
     
    128132    /// <returns>The newly created real vector.</returns>
    129133    protected override RealVector Create(IRandom random, IntValue length, DoubleMatrix bounds) {
    130       return Apply(random, MeanParameter.ActualValue, SigmaParameter.ActualValue, bounds, MaximumTriesParameter.Value.Value);
     134      return Apply(length, random, MeanParameter.ActualValue, SigmaParameter.ActualValue, bounds, MaximumTriesParameter.Value.Value);
    131135    }
    132136  }
Note: See TracChangeset for help on using the changeset viewer.