Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Creators/RandomParameterConfigurationCreator.cs @ 14049

Last change on this file since 14049 was 5184, checked in by cneumuel, 14 years ago

#1215

  • enhanced combinations generator (now with batchruns!)
  • fixed ActualNames for metaopt-alg
  • added penalty for invalid solution-candidates (algs which throw exceptions)
  • migrated to .NET 4.0
File size: 2.6 KB
Line 
1using HeuristicLab.Common;
2using HeuristicLab.Core;
3using HeuristicLab.Operators;
4using HeuristicLab.Optimization;
5using HeuristicLab.Parameters;
6using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
7
8namespace HeuristicLab.Problems.MetaOptimization {
9  /// <summary>
10  /// An operator which creates a new random permutation of integer values.
11  /// </summary>
12  [Item("RandomParameterVectorCreator", "An operator which creates a new set of parameters TODO.")]
13  [StorableClass]
14  public sealed class RandomParameterConfigurationCreator : SingleSuccessorOperator, IStochasticOperator, IParameterConfigurationCreator {
15    public override bool CanChangeName {
16      get { return false; }
17    }
18
19    public ILookupParameter<IRandom> RandomParameter {
20      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
21    }
22    public ILookupParameter<ParameterConfigurationTree> InitialParameterConfigurationParameter {
23      get { return (ILookupParameter<ParameterConfigurationTree>)Parameters[MetaOptimizationProblem.ParameterConfigurationTreeParameterName]; }
24    }
25
26    public IValueLookupParameter<ParameterConfigurationTree> ParameterConfigurationParameter {
27      get { return (IValueLookupParameter<ParameterConfigurationTree>)Parameters["ParameterConfigurationTreeSolutionCandidate"]; }
28    }
29
30    [StorableConstructor]
31    private RandomParameterConfigurationCreator(bool deserializing) : base(deserializing) { }
32    private RandomParameterConfigurationCreator(RandomParameterConfigurationCreator original, Cloner cloner) : base(original, cloner) { }
33    public RandomParameterConfigurationCreator() : base() {
34      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used to initialize the new random permutation."));
35      Parameters.Add(new LookupParameter<ParameterConfigurationTree>(MetaOptimizationProblem.ParameterConfigurationTreeParameterName, "The parameter configuration tree on which the new solution will be based on."));
36      Parameters.Add(new ValueLookupParameter<ParameterConfigurationTree>("ParameterConfigurationTreeSolutionCandidate", "The new random parameter set."));
37    }
38    public override IDeepCloneable Clone(Cloner cloner) {
39      return new RandomParameterConfigurationCreator(this, cloner);
40    }
41
42    public override IOperation Apply() {
43      ParameterConfigurationParameter.ActualValue = (ParameterConfigurationTree)InitialParameterConfigurationParameter.ActualValue.Clone();
44      ParameterConfigurationParameter.ActualValue.Randomize(RandomParameter.ActualValue);
45      return base.Apply();
46    }
47  }
48}
Note: See TracBrowser for help on using the repository browser.