Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/16/16 17:10:05 (8 years ago)
Author:
abeham
Message:

#2701:

  • Reusing similiarty calculator in BinaryMemPR
  • Fixing distance calculation for linear linkage and LinearLinkageMemPR
  • Small changes to base algorithm
  • Added biased model trainer for permutation (rank and fitness)
  • Fixing best known quality calculation for GCP
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Permutation/SolutionModel/Univariate/StaticAPI/Trainer.cs

    r14450 r14496  
    2727
    2828namespace HeuristicLab.Algorithms.MemPR.Permutation.SolutionModel.Univariate {
     29  public enum ModelBiasOptions { Rank, Fitness }
     30
    2931  public static class Trainer {
    30     public static ISolutionModel<Encodings.PermutationEncoding.Permutation> Train(IRandom random, IList<Encodings.PermutationEncoding.Permutation> pop, int N) {
     32    public static ISolutionModel<Encodings.PermutationEncoding.Permutation> TrainUnbiased(IRandom random, IList<Encodings.PermutationEncoding.Permutation> pop, int N) {
    3133      ISolutionModel<Encodings.PermutationEncoding.Permutation> model;
    3234      switch (pop[0].PermutationType) {
    3335        case PermutationTypes.Absolute:
    34           model = UnivariateAbsoluteModel.Create(random, pop, N);
     36          model = UnivariateAbsoluteModel.CreateUnbiased(random, pop, N);
    3537          break;
    3638        case PermutationTypes.RelativeDirected:
     
    4446      return model;
    4547    }
     48
     49    public static ISolutionModel<Encodings.PermutationEncoding.Permutation> TrainBiased(ModelBiasOptions modelBias, IRandom random, bool maximization, IList<Encodings.PermutationEncoding.Permutation> pop, IList<double> qualities, int N) {
     50      if (pop.Count != qualities.Count) throw new ArgumentException("Unequal length of population and qualities list.");
     51      ISolutionModel<Encodings.PermutationEncoding.Permutation> model;
     52      switch (pop[0].PermutationType) {
     53        case PermutationTypes.Absolute:
     54          if (modelBias == ModelBiasOptions.Rank)
     55            model = UnivariateAbsoluteModel.CreateWithRankBias(random, maximization, pop, qualities, N);
     56          else if (modelBias == ModelBiasOptions.Fitness)
     57            model = UnivariateAbsoluteModel.CreateWithFitnessBias(random, maximization, pop, qualities, N);
     58          else throw new ArgumentException(string.Format("Bias type {0} is not supported.", modelBias));
     59          break;
     60        case PermutationTypes.RelativeDirected:
     61          if (modelBias == ModelBiasOptions.Rank)
     62            model = UnivariateRelativeModel.CreateDirectedWithRankBias(random, maximization, pop, qualities, N);
     63          else if (modelBias == ModelBiasOptions.Fitness)
     64            model = UnivariateRelativeModel.CreateDirectedWithFitnessBias(random, maximization, pop, qualities, N);
     65          else throw new ArgumentException(string.Format("Bias type {0} is not supported.", modelBias));
     66          break;
     67        case PermutationTypes.RelativeUndirected:
     68          if (modelBias == ModelBiasOptions.Rank)
     69            model = UnivariateRelativeModel.CreateUndirectedWithRankBias(random, maximization, pop, qualities, N);
     70          else if (modelBias == ModelBiasOptions.Fitness)
     71            model = UnivariateRelativeModel.CreateUndirectedWithFitnessBias(random, maximization, pop, qualities, N);
     72          else throw new ArgumentException(string.Format("Bias type {0} is not supported.", modelBias));
     73          break;
     74        default: throw new ArgumentException(string.Format("unknown permutation type {0}", pop[0].PermutationType));
     75      }
     76      return model;
     77    }
    4678  }
    4779}
Note: See TracChangeset for help on using the changeset viewer.