Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/25/16 12:56:17 (8 years ago)
Author:
abeham
Message:

#2457: working on recommendation algorithms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem.Common/3.3/Recommenders/OverallBestRecommender.cs

    r13787 r13791  
    2525using HeuristicLab.Data;
    2626using HeuristicLab.Optimization;
    27 using HeuristicLab.Parameters;
    2827using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2928using System;
     
    3938      get { return (IFixedValueParameter<DoubleValue>)Parameters["NeighborhoodFactor"]; }
    4039    }
    41 
    42     public double NeighborhoodFactor {
    43       get { return NeighborhoodFactorParameter.Value.Value; }
    44       set { NeighborhoodFactorParameter.Value.Value = value; }
    45     }
    4640   
    4741    [StorableConstructor]
    4842    private OverallBestRecommender(bool deserializing) : base(deserializing) { }
    49     private OverallBestRecommender(OverallBestRecommender original, Cloner cloner)
    50       : base(original, cloner) { }
    51     public OverallBestRecommender() {
    52       Parameters.Add(new FixedValueParameter<DoubleValue>("NeighborhoodFactor", "Penalize neighbors that are far away.", new DoubleValue(5)));
    53     }
     43    private OverallBestRecommender(OverallBestRecommender original, Cloner cloner) : base(original, cloner) { }
     44    public OverallBestRecommender() { }
    5445
    5546    public override IDeepCloneable Clone(Cloner cloner) {
     
    5748    }
    5849
    59     public IRecommendationModel TrainModel(KnowledgeCenter kc, string[] characteristics) {
     50    public IRecommendationModel TrainModel(IRun[] problemInstances, KnowledgeCenter kc, string[] characteristics) {
    6051      var instances = new List<Tuple<IAlgorithm, double>>();
    6152      foreach (var relevantRuns in kc.GetKnowledgeBaseByAlgorithm()) {
    6253        var algorithm = relevantRuns.Key;
    6354        var pis = relevantRuns.Value.Select(x => ((StringValue)x.Parameters["Problem Name"]).Value).Distinct()
    64                               .Select(x => Tuple.Create(x, kc.ProblemInstances.SingleOrDefault(y => ((StringValue)y.Parameters["Problem Name"]).Value == x)))
     55                              .Select(x => Tuple.Create(x, problemInstances.SingleOrDefault(y => ((StringValue)y.Parameters["Problem Name"]).Value == x)))
    6556                              .Where(x => x.Item2 != null)
    6657                              .Select(x => Tuple.Create(x.Item1, ((DoubleValue)x.Item2.Parameters["BestKnownQuality"]).Value))
     
    7061        foreach (var problemRuns in relevantRuns.Value.GroupBy(x => ((StringValue)x.Parameters["Problem Name"]).Value)) {
    7162          var bkq = pis[problemRuns.Key];
    72           var ert = ExpectedRuntimeHelper.CalculateErt(problemRuns.ToList(), "QualityPerEvaluations", (kc.Maximization ? (1 - kc.MinimumTarget.Value) : (1 + kc.MinimumTarget.Value)) * bkq, kc.Maximization).ExpectedRuntime;
     63          var ert = ExpectedRuntimeHelper.CalculateErt(problemRuns.ToList(), "QualityPerEvaluations", kc.GetTarget(bkq, kc.Maximization), kc.Maximization).ExpectedRuntime;
    7364          if (double.IsNaN(ert)) ert = int.MaxValue;
    7465          avgERT += ert;
Note: See TracChangeset for help on using the changeset viewer.