- Timestamp:
- 12/03/16 00:32:09 (8 years ago)
- Location:
- branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary
- Files:
-
- 2 added
- 3 deleted
- 8 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/BinaryMemPR.cs ¶
r14420 r14450 24 24 using System.Linq; 25 25 using System.Threading; 26 using HeuristicLab.Algorithms.MemPR.Interfaces; 26 27 using HeuristicLab.Common; 27 28 using HeuristicLab.Core; 28 29 using HeuristicLab.Encodings.BinaryVectorEncoding; 29 30 using HeuristicLab.Optimization; 30 using HeuristicLab.Optimization.LocalSearch;31 using HeuristicLab.Optimization.SolutionModel;32 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 32 using HeuristicLab.PluginInfrastructure; … … 38 37 [StorableClass] 39 38 [Creatable(CreatableAttribute.Categories.PopulationBasedAlgorithms, Priority = 999)] 40 public class BinaryMemPR : MemPRAlgorithm< BinaryVector, BinaryMemPRContext, BinarySingleSolutionMemPRContext> {39 public class BinaryMemPR : MemPRAlgorithm<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector, BinaryMemPRPopulationContext, BinaryMemPRSolutionContext> { 41 40 private const double UncommonBitSubsetMutationProbabilityMagicConst = 0.05; 42 41 … … 45 44 protected BinaryMemPR(BinaryMemPR original, Cloner cloner) : base(original, cloner) { } 46 45 public BinaryMemPR() { 47 foreach (var trainer in ApplicationManager.Manager.GetInstances<I BinarySolutionModelTrainer<BinaryMemPRContext>>())46 foreach (var trainer in ApplicationManager.Manager.GetInstances<ISolutionModelTrainer<BinaryMemPRPopulationContext>>()) 48 47 SolutionModelTrainerParameter.ValidValues.Add(trainer); 49 48 50 foreach (var localSearch in ApplicationManager.Manager.GetInstances<IBinaryLocalSearch<BinarySingleSolutionMemPRContext>>()) { 51 // only use local search operators that can deal with a restricted solution space 52 var lsType = localSearch.GetType(); 53 var genTypeDef = lsType.GetGenericTypeDefinition(); 54 // TODO: By convention, context type must be put last 55 // TODO: Fails with non-generic types 56 if (genTypeDef.GetGenericArguments().Last().GetGenericParameterConstraints().Any(x => typeof(IBinarySolutionSubspaceContext).IsAssignableFrom(x))) { 57 localSearch.EvaluateFunc = EvaluateFunc; 58 LocalSearchParameter.ValidValues.Add(localSearch); 59 } 49 foreach (var localSearch in ApplicationManager.Manager.GetInstances<ILocalSearch<BinaryMemPRSolutionContext>>()) { 50 LocalSearchParameter.ValidValues.Add(localSearch); 60 51 } 61 52 } … … 63 54 public override IDeepCloneable Clone(Cloner cloner) { 64 55 return new BinaryMemPR(this, cloner); 65 }66 67 protected double EvaluateFunc(BinaryVector solution) {68 var scope = ToScope(solution);69 Evaluate(scope, CancellationToken.None);70 return scope.Fitness;71 56 } 72 57 … … 98 83 } 99 84 100 protected override ISolutionSubspace CalculateSubspace(IEnumerable<BinaryVector> solutions, bool inverse = false) {85 protected override ISolutionSubspace<BinaryVector> CalculateSubspace(IEnumerable<BinaryVector> solutions, bool inverse = false) { 101 86 var pop = solutions.ToList(); 102 87 var N = pop[0].Length; … … 112 97 } 113 98 114 protected override ISingleObjectiveSolutionScope<BinaryVector> Create(CancellationToken token) { 115 var child = ToScope(null); 116 RunOperator(Problem.SolutionCreator, child, token); 117 return child; 118 } 119 120 protected override void TabuWalk(ISingleObjectiveSolutionScope<BinaryVector> scope, int steps, CancellationToken token, ISolutionSubspace subspace = null) { 99 protected override void TabuWalk(ISingleObjectiveSolutionScope<BinaryVector> scope, int steps, CancellationToken token, ISolutionSubspace<BinaryVector> subspace = null) { 121 100 var subset = subspace != null ? ((BinarySolutionSubspace)subspace).Subspace : null; 122 101 if (double.IsNaN(scope.Fitness)) Evaluate(scope, token); … … 183 162 var lastbp = 0; 184 163 for (var i = 0; i < code.Length; i++) { 185 if (code[i] == p2Code[i]) continue; // common bit186 164 if (bp % 2 == 1) { 187 165 code[i] = p2Code[i]; 188 166 } 189 if (Context.Random.Next(code.Length) < i - lastbp ) {167 if (Context.Random.Next(code.Length) < i - lastbp + 1) { 190 168 bp = (bp + 1) % 2; 191 169 lastbp = i; … … 195 173 } 196 174 197 protected override void Mutate(ISingleObjectiveSolutionScope<BinaryVector> offspring, CancellationToken token, ISolutionSubspace subspace = null) {175 protected override void Mutate(ISingleObjectiveSolutionScope<BinaryVector> offspring, CancellationToken token, ISolutionSubspace<BinaryVector> subspace = null) { 198 176 var subset = subspace != null ? ((BinarySolutionSubspace)subspace).Subspace : null; 199 177 offspring.Fitness = double.NaN; -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/BinaryMemPRContext.cs ¶
r14420 r14450 20 20 #endregion 21 21 22 using HeuristicLab.Algorithms.MemPR.Interfaces; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 28 29 29 30 namespace HeuristicLab.Algorithms.MemPR.Binary { 30 [Item(" BinaryMemPRContext", "MemPRcontext for binary encoded problems.")]31 [Item("MemPR Population Context (binary)", "MemPR population context for binary encoded problems.")] 31 32 [StorableClass] 32 public sealed class BinaryMemPR Context : MemPRContext<BinaryVector, BinaryMemPRContext, BinarySingleSolutionMemPRContext> {33 public sealed class BinaryMemPRPopulationContext : MemPRPopulationContext<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector, BinaryMemPRPopulationContext, BinaryMemPRSolutionContext> { 33 34 34 35 [StorableConstructor] 35 private BinaryMemPR Context(bool deserializing) : base(deserializing) { }36 private BinaryMemPR Context(BinaryMemPRContext original, Cloner cloner)36 private BinaryMemPRPopulationContext(bool deserializing) : base(deserializing) { } 37 private BinaryMemPRPopulationContext(BinaryMemPRPopulationContext original, Cloner cloner) 37 38 : base(original, cloner) { } 38 public BinaryMemPR Context() : base("BinaryMemPRContext") { }39 public BinaryMemPR Context(string name) : base(name) { }39 public BinaryMemPRPopulationContext() : base("BinaryMemPRPopulationContext") { } 40 public BinaryMemPRPopulationContext(string name) : base(name) { } 40 41 41 42 public override IDeepCloneable Clone(Cloner cloner) { 42 return new BinaryMemPR Context(this, cloner);43 return new BinaryMemPRPopulationContext(this, cloner); 43 44 } 44 45 45 public override Binary SingleSolutionMemPRContext CreateSingleSolutionContext(ISingleObjectiveSolutionScope<BinaryVector> solution) {46 return new Binary SingleSolutionMemPRContext(this, solution);46 public override BinaryMemPRSolutionContext CreateSingleSolutionContext(ISingleObjectiveSolutionScope<BinaryVector> solution) { 47 return new BinaryMemPRSolutionContext(this, solution); 47 48 } 48 49 } 49 50 50 [Item(" BinarySingleSolutionMemPRContext", "Single solution MemPRcontext for binary encoded problems.")]51 [Item("MemPR Solution Context (binary)", "MemPR solution context for binary encoded problems.")] 51 52 [StorableClass] 52 public sealed class Binary SingleSolutionMemPRContext : SingleSolutionMemPRContext<BinaryVector, BinaryMemPRContext, BinarySingleSolutionMemPRContext>, IBinarySolutionSubspaceContext {53 public sealed class BinaryMemPRSolutionContext : MemPRSolutionContext<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector, BinaryMemPRPopulationContext, BinaryMemPRSolutionContext>, IBinaryVectorSubspaceContext { 53 54 54 55 [Storable] … … 57 58 get { return subspace.Value; } 58 59 } 59 ISolutionSubspace ISolutionSubspaceContext.Subspace {60 ISolutionSubspace<BinaryVector> ISolutionSubspaceContext<BinaryVector>.Subspace { 60 61 get { return Subspace; } 61 62 } 62 63 63 64 [StorableConstructor] 64 private Binary SingleSolutionMemPRContext(bool deserializing) : base(deserializing) { }65 private Binary SingleSolutionMemPRContext(BinarySingleSolutionMemPRContext original, Cloner cloner)65 private BinaryMemPRSolutionContext(bool deserializing) : base(deserializing) { } 66 private BinaryMemPRSolutionContext(BinaryMemPRSolutionContext original, Cloner cloner) 66 67 : base(original, cloner) { 67 68 68 69 } 69 public Binary SingleSolutionMemPRContext(BinaryMemPRContext baseContext, ISingleObjectiveSolutionScope<BinaryVector> solution)70 public BinaryMemPRSolutionContext(BinaryMemPRPopulationContext baseContext, ISingleObjectiveSolutionScope<BinaryVector> solution) 70 71 : base(baseContext, solution) { 71 72 … … 74 75 75 76 public override IDeepCloneable Clone(Cloner cloner) { 76 return new Binary SingleSolutionMemPRContext(this, cloner);77 return new BinaryMemPRSolutionContext(this, cloner); 77 78 } 78 79 } -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/BinarySolutionSubspace.cs ¶
r14420 r14450 20 20 #endregion 21 21 22 using HeuristicLab.Algorithms.MemPR.Interfaces; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 using HeuristicLab. Optimization;25 using HeuristicLab.Encodings.BinaryVectorEncoding; 25 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 27 … … 28 29 [Item("Solution subspace (binary)", "")] 29 30 [StorableClass] 30 public sealed class BinarySolutionSubspace : Item, ISolutionSubspace {31 public sealed class BinarySolutionSubspace : Item, ISolutionSubspace<BinaryVector> { 31 32 32 33 [Storable] -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/LocalSearch/ExhaustiveBitflip.cs ¶
r14420 r14450 20 20 #endregion 21 21 22 using System.Threading; 23 using HeuristicLab.Algorithms.MemPR.Interfaces; 24 using HeuristicLab.Algorithms.MemPR.Util; 22 25 using HeuristicLab.Common; 23 26 using HeuristicLab.Core; 27 using HeuristicLab.Encodings.Binary.LocalSearch; 24 28 using HeuristicLab.Encodings.BinaryVectorEncoding; 25 29 using HeuristicLab.Optimization; 26 using HeuristicLab.Optimization.LocalSearch;27 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 31 29 namespace HeuristicLab. Encodings.Binary.LocalSearch {30 [Item("Exhaustive Bitflip Local Search (binary)", "" )]32 namespace HeuristicLab.Algorithms.MemPR.Binary.LocalSearch { 33 [Item("Exhaustive Bitflip Local Search (binary)", "", ExcludeGenericTypeInfo = true)] 31 34 [StorableClass] 32 public class ExhaustiveBitflip<TContext> : ExhaustiveBitflipOperator, IBinaryLocalSearch<TContext> 33 where TContext : ISingleObjectiveSolutionContext<BinaryVector>, IStochasticContext, IMaximizationContext, 34 IEvaluatedSolutionsContext, IIterationsManipulationContext { 35 public class ExhaustiveBitflip<TContext> : NamedItem, ILocalSearch<TContext> where TContext : ISingleSolutionHeuristicAlgorithmContext<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector> { 35 36 36 37 [StorableConstructor] 37 38 protected ExhaustiveBitflip(bool deserializing) : base(deserializing) { } 38 39 protected ExhaustiveBitflip(ExhaustiveBitflip<TContext> original, Cloner cloner) : base(original, cloner) { } 39 public ExhaustiveBitflip() { } 40 public ExhaustiveBitflip() { 41 Name = ItemName; 42 Description = ItemDescription; 43 } 40 44 41 45 public override IDeepCloneable Clone(Cloner cloner) { … … 44 48 45 49 public void Optimize(TContext context) { 50 var evalWrapper = new EvaluationWrapper<BinaryVector>(context.Problem, context.Solution); 46 51 var quality = context.Solution.Fitness; 47 52 try { 48 var result = Heuristic.ExhaustiveBitFlipSearch(context.Random, context.Solution.Solution, ref quality,49 context. Maximization, EvaluateFunc, CancellationToken);50 context. EvaluatedSolutions = result.Item1;53 var result = ExhaustiveBitflip.Optimize(context.Random, context.Solution.Solution, ref quality, 54 context.Problem.Maximization, evalWrapper.Evaluate, CancellationToken.None); 55 context.IncrementEvaluatedSolutions(result.Item1); 51 56 context.Iterations = result.Item2; 52 57 } finally { -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/LocalSearch/ExhaustiveBitflipSubspace.cs ¶
r14420 r14450 20 20 #endregion 21 21 22 using System.Threading; 23 using HeuristicLab.Algorithms.MemPR.Interfaces; 22 24 using HeuristicLab.Common; 23 25 using HeuristicLab.Core; 26 using HeuristicLab.Encodings.Binary.LocalSearch; 24 27 using HeuristicLab.Encodings.BinaryVectorEncoding; 25 28 using HeuristicLab.Optimization; 26 using HeuristicLab.Optimization.LocalSearch;27 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 30 29 namespace HeuristicLab. Encodings.Binary.LocalSearch {30 [Item("Exhaustive Bitflip Local (Subspace) Search (binary)", "" )]31 namespace HeuristicLab.Algorithms.MemPR.Binary.LocalSearch { 32 [Item("Exhaustive Bitflip Local (Subspace) Search (binary)", "", ExcludeGenericTypeInfo = true)] 31 33 [StorableClass] 32 public class ExhaustiveBitflipSubspace<TContext> : ExhaustiveBitflipOperator, IBinaryLocalSearch<TContext> 33 where TContext : ISingleObjectiveSolutionContext<BinaryVector>, IStochasticContext, IMaximizationContext, 34 IEvaluatedSolutionsContext, IIterationsManipulationContext, IBinarySolutionSubspaceContext { 34 public class ExhaustiveBitflipSubspace<TContext> : NamedItem, ILocalSearch<TContext> 35 where TContext : ISingleSolutionHeuristicAlgorithmContext<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector>, IBinaryVectorSubspaceContext { 35 36 36 37 [StorableConstructor] 37 38 protected ExhaustiveBitflipSubspace(bool deserializing) : base(deserializing) { } 38 39 protected ExhaustiveBitflipSubspace(ExhaustiveBitflipSubspace<TContext> original, Cloner cloner) : base(original, cloner) { } 39 public ExhaustiveBitflipSubspace() { } 40 public ExhaustiveBitflipSubspace() { 41 Name = ItemName; 42 Description = ItemDescription; 43 } 40 44 41 45 public override IDeepCloneable Clone(Cloner cloner) { … … 44 48 45 49 public void Optimize(TContext context) { 50 var evalWrapper = new EvaluationWrapper(context); 46 51 var quality = context.Solution.Fitness; 47 52 try { 48 var result = Heuristic.ExhaustiveBitFlipSearch(context.Random, context.Solution.Solution, ref quality,49 context. Maximization, EvaluateFunc, CancellationToken, context.Subspace != null ? context.Subspace.Subspace : null);50 context. EvaluatedSolutions = result.Item1;53 var result = ExhaustiveBitflip.Optimize(context.Random, context.Solution.Solution, ref quality, 54 context.Problem.Maximization, evalWrapper.Evaluate, CancellationToken.None, context.Subspace.Subspace); 55 context.IncrementEvaluatedSolutions(result.Item1); 51 56 context.Iterations = result.Item2; 52 57 } finally { … … 54 59 } 55 60 } 61 62 public sealed class EvaluationWrapper { 63 private readonly TContext context; 64 private readonly ISingleObjectiveSolutionScope<BinaryVector> scope; 65 private readonly SingleEncodingIndividual individual; 66 67 public EvaluationWrapper(TContext context) { 68 this.context = context; 69 // don't clone the solution, which is thrown away again 70 var cloner = new Cloner(); 71 cloner.RegisterClonedObject(context.Solution.Solution, null); 72 this.scope = (ISingleObjectiveSolutionScope<BinaryVector>)context.Solution.Clone(cloner); 73 this.individual = new SingleEncodingIndividual(context.Problem.Encoding, this.scope); 74 } 75 76 public double Evaluate(BinaryVector b) { 77 scope.Solution = b; 78 return context.Problem.Evaluate(individual, null); 79 } 80 } 56 81 } 57 82 } -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/LocalSearch/StaticAPI/ExhaustiveBitflip.cs ¶
r14449 r14450 23 23 using System.Linq; 24 24 using System.Threading; 25 using HeuristicLab.Algorithms.MemPR.Util; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Encodings.BinaryVectorEncoding; … … 28 29 29 30 namespace HeuristicLab.Encodings.Binary.LocalSearch { 30 public static class Heuristic { 31 private static bool IsBetter(bool maximization, double a, double b) { 32 return maximization && a > b 33 || !maximization && a < b; 34 } 35 36 public static Tuple<int, int> ExhaustiveBitFlipSearch(IRandom random, BinaryVector solution, ref double quality, bool maximization, Func<BinaryVector, double> evalFunc, CancellationToken token, bool[] subspace = null) { 31 public static class ExhaustiveBitflip { 32 public static Tuple<int, int> Optimize(IRandom random, BinaryVector solution, ref double quality, bool maximization, Func<BinaryVector, double> evalFunc, CancellationToken token, bool[] subspace = null) { 37 33 if (double.IsNaN(quality)) quality = evalFunc(solution); 38 34 var improved = false; … … 53 49 var after = evalFunc(solution); 54 50 evaluations++; 55 if ( IsBetter(maximization, after, quality)) {51 if (FitnessComparer.IsBetter(maximization, after, quality)) { 56 52 steps++; 57 53 quality = after; … … 65 61 } 66 62 } while (improved); 67 63 68 64 return Tuple.Create(evaluations, steps); 69 65 } -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/SolutionModel/Univariate/BiasedModelTrainer.cs ¶
r14420 r14450 21 21 22 22 using System.Linq; 23 using HeuristicLab.Algorithms.MemPR.Interfaces; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 26 using HeuristicLab.Data; 25 27 using HeuristicLab.Encodings.BinaryVectorEncoding; 26 28 using HeuristicLab.Optimization; 27 using HeuristicLab. Optimization.SolutionModel;29 using HeuristicLab.Parameters; 28 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 31 30 namespace HeuristicLab. Encodings.Binary.SolutionModel.Univariate {31 [Item("Biased Univariate Model Trainer (binary)", "" )]32 namespace HeuristicLab.Algorithms.MemPR.Binary.SolutionModel.Univariate { 33 [Item("Biased Univariate Model Trainer (binary)", "", ExcludeGenericTypeInfo = true)] 32 34 [StorableClass] 33 public class BiasedModelTrainer<TContext> : BiasedModelTrainerOperator, IBinarySolutionModelTrainer<TContext>, IBinaryVectorOperator34 where TContext : I SingleObjectivePopulationContext<BinaryVector>, ISolutionModelContext<BinaryVector>, IStochasticContext, IMaximizationContext{35 public class BiasedModelTrainer<TContext> : ParameterizedNamedItem, ISolutionModelTrainer<TContext> 36 where TContext : IPopulationBasedHeuristicAlgorithmContext<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector>, ISolutionModelContext<BinaryVector> { 35 37 38 [Storable] 39 private IValueParameter<EnumValue<ModelBiasOptions>> modelBiasParameter; 40 public ModelBiasOptions ModelBias { 41 get { return modelBiasParameter.Value.Value; } 42 set { modelBiasParameter.Value.Value = value; } 43 } 44 36 45 [StorableConstructor] 37 46 protected BiasedModelTrainer(bool deserializing) : base(deserializing) { } 38 protected BiasedModelTrainer(BiasedModelTrainer<TContext> original, Cloner cloner) : base(original, cloner) { } 39 public BiasedModelTrainer() { } 47 protected BiasedModelTrainer(BiasedModelTrainer<TContext> original, Cloner cloner) 48 : base(original, cloner) { 49 modelBiasParameter = cloner.Clone(original.modelBiasParameter); 50 } 51 public BiasedModelTrainer() { 52 Parameters.Add(modelBiasParameter = new ValueParameter<EnumValue<ModelBiasOptions>>("Model Bias", "What kind of bias towards better individuals is chosen.")); 53 } 40 54 41 55 public override IDeepCloneable Clone(Cloner cloner) { … … 44 58 45 59 public void TrainModel(TContext context) { 46 context.Model = Trainer.TrainBiased(ModelBias, context.Random, context. Maximization, context.Population.Select(x => x.Solution), context.Population.Select(x => x.Fitness));60 context.Model = Trainer.TrainBiased(ModelBias, context.Random, context.Problem.Maximization, context.Population.Select(x => x.Solution), context.Population.Select(x => x.Fitness)); 47 61 } 48 62 } -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/SolutionModel/Univariate/StaticAPI/Trainer.cs ¶
r14449 r14450 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Algorithms.MemPR.Interfaces; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Encodings.BinaryVectorEncoding; 26 using HeuristicLab.Optimization.SolutionModel;27 27 28 namespace HeuristicLab. Encodings.Binary.SolutionModel.Univariate {28 namespace HeuristicLab.Algorithms.MemPR.Binary.SolutionModel.Univariate { 29 29 public enum ModelBiasOptions { Rank, Fitness } 30 30 -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/SolutionModel/Univariate/UnbiasedModelTrainer.cs ¶
r14420 r14450 21 21 22 22 using System.Linq; 23 using HeuristicLab.Algorithms.MemPR.Interfaces; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Encodings.BinaryVectorEncoding; 26 27 using HeuristicLab.Optimization; 27 using HeuristicLab.Optimization.SolutionModel;28 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 29 30 namespace HeuristicLab. Encodings.Binary.SolutionModel.Univariate {31 [Item("Un iased Univariate Model Trainer (binary)", "")]30 namespace HeuristicLab.Algorithms.MemPR.Binary.SolutionModel.Univariate { 31 [Item("Unbiased Univariate Model Trainer (binary)", "", ExcludeGenericTypeInfo = true)] 32 32 [StorableClass] 33 public class Un biasedModelTrainer<TContext> : UnbiasedModelTrainerOperator, IBinarySolutionModelTrainer<TContext>34 where TContext : I SolutionModelContext<BinaryVector>, IPopulationContext<BinaryVector>, IStochasticContext{33 public class UniasedModelTrainer<TContext> : NamedItem, ISolutionModelTrainer<TContext> 34 where TContext : IPopulationBasedHeuristicAlgorithmContext<SingleObjectiveBasicProblem<BinaryVectorEncoding>, BinaryVector>, ISolutionModelContext<BinaryVector> { 35 35 36 36 [StorableConstructor] 37 protected UnbiasedModelTrainer(bool deserializing) : base(deserializing) { } 38 protected UnbiasedModelTrainer(UnbiasedModelTrainer<TContext> original, Cloner cloner) : base(original, cloner) { } 39 public UnbiasedModelTrainer() { } 37 protected UniasedModelTrainer(bool deserializing) : base(deserializing) { } 38 protected UniasedModelTrainer(UniasedModelTrainer<TContext> original, Cloner cloner) : base(original, cloner) { } 39 public UniasedModelTrainer() { 40 Name = ItemName; 41 Description = ItemDescription; 42 } 40 43 41 44 public override IDeepCloneable Clone(Cloner cloner) { 42 return new Un biasedModelTrainer<TContext>(this, cloner);45 return new UniasedModelTrainer<TContext>(this, cloner); 43 46 } 44 47 45 48 public void TrainModel(TContext context) { 46 context.Model = UnivariateModel.CreateWithoutBias(context.Random, context.Population.Select(x => x.Solution));49 context.Model = Trainer.TrainUnbiased(context.Random, context.Population.Select(x => x.Solution)); 47 50 } 48 51 } -
TabularUnified branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/Binary/SolutionModel/Univariate/UnivariateSolutionModel.cs ¶
r14420 r14450 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HeuristicLab.Algorithms.MemPR.Interfaces; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Data; 28 29 using HeuristicLab.Encodings.BinaryVectorEncoding; 29 using HeuristicLab.Optimization.SolutionModel;30 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 31 31 using HeuristicLab.Random; 32 32 33 namespace HeuristicLab. Encodings.Binary.SolutionModel.Univariate {33 namespace HeuristicLab.Algorithms.MemPR.Binary.SolutionModel.Univariate { 34 34 [Item("Univariate solution model (binary)", "")] 35 35 [StorableClass]
Note: See TracChangeset
for help on using the changeset viewer.