Changeset 13791 for branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem.Common/3.3/Recommenders/OverallBestRecommender.cs
- Timestamp:
- 04/25/16 12:56:17 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem.Common/3.3/Recommenders/OverallBestRecommender.cs
r13787 r13791 25 25 using HeuristicLab.Data; 26 26 using HeuristicLab.Optimization; 27 using HeuristicLab.Parameters;28 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 28 using System; … … 39 38 get { return (IFixedValueParameter<DoubleValue>)Parameters["NeighborhoodFactor"]; } 40 39 } 41 42 public double NeighborhoodFactor {43 get { return NeighborhoodFactorParameter.Value.Value; }44 set { NeighborhoodFactorParameter.Value.Value = value; }45 }46 40 47 41 [StorableConstructor] 48 42 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() { } 54 45 55 46 public override IDeepCloneable Clone(Cloner cloner) { … … 57 48 } 58 49 59 public IRecommendationModel TrainModel( KnowledgeCenter kc, string[] characteristics) {50 public IRecommendationModel TrainModel(IRun[] problemInstances, KnowledgeCenter kc, string[] characteristics) { 60 51 var instances = new List<Tuple<IAlgorithm, double>>(); 61 52 foreach (var relevantRuns in kc.GetKnowledgeBaseByAlgorithm()) { 62 53 var algorithm = relevantRuns.Key; 63 54 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))) 65 56 .Where(x => x.Item2 != null) 66 57 .Select(x => Tuple.Create(x.Item1, ((DoubleValue)x.Item2.Parameters["BestKnownQuality"]).Value)) … … 70 61 foreach (var problemRuns in relevantRuns.Value.GroupBy(x => ((StringValue)x.Parameters["Problem Name"]).Value)) { 71 62 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; 73 64 if (double.IsNaN(ert)) ert = int.MaxValue; 74 65 avgERT += ert;
Note: See TracChangeset
for help on using the changeset viewer.