Changeset 5110 for branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs
- Timestamp:
- 12/15/10 15:43:43 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs
r5087 r5110 29 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 30 using HeuristicLab.PluginInfrastructure; 31 using HeuristicLab.Algorithms.GeneticAlgorithm; 32 using HeuristicLab.Problems.TestFunctions; 31 33 32 34 namespace HeuristicLab.Problems.MetaOptimization { … … 35 37 [StorableClass] 36 38 public sealed class MetaOptimizationProblem : SingleObjectiveProblem<IMetaOptimizationEvaluator, IParameterConfigurationCreator> { 37 private const string AlgorithmParameterName = "Algorithm"; 38 private const string ProblemsParameterName = "Problems"; 39 private const string AlgorithmParameterConfigurationParameterName = "InitialParameterConfigurationTree"; 40 //private const string ProblemParametersConfigurationParameterName = "ProblemParametersConfiguration"; 39 public const string AlgorithmTypeParameterName = "AlgorithmType"; 40 public const string ProblemTypeParameterName = "ProblemType"; 41 public const string ProblemsParameterName = "Problems"; 42 public const string ParameterConfigurationParameterName = "InitialParameterConfigurationTree"; 43 public const string RepetitionsParameterName = "Repetitions"; 41 44 42 45 #region Parameter Properties 43 public IValueParameter<EngineAlgorithm> Algorithm Parameter {44 get { return (ValueParameter<EngineAlgorithm>)Parameters[Algorithm ParameterName]; }46 public IValueParameter<EngineAlgorithm> AlgorithmTypeParameter { 47 get { return (ValueParameter<EngineAlgorithm>)Parameters[AlgorithmTypeParameterName]; } 45 48 } 46 public IValueParameter<I ItemList<ISingleObjectiveProblem>> ProblemsParameter {47 get { return (ValueParameter<I ItemList<ISingleObjectiveProblem>>)Parameters[ProblemsParameterName]; }49 public IValueParameter<ISingleObjectiveProblem> ProblemTypeParameter { 50 get { return (ValueParameter<ISingleObjectiveProblem>)Parameters[ProblemTypeParameterName]; } 48 51 } 49 public IValueParameter< ParameterConfigurationTree> AlgorithmParameterConfigurationParameter {50 get { return (ValueParameter< ParameterConfigurationTree>)Parameters[AlgorithmParameterConfigurationParameterName]; }52 public IValueParameter<ConstrainedItemList<ISingleObjectiveProblem>> ProblemsParameter { 53 get { return (ValueParameter<ConstrainedItemList<ISingleObjectiveProblem>>)Parameters[ProblemsParameterName]; } 51 54 } 52 //public ValueParameter<IItemList<IParameterConfiguration>> ProblemParametersConfigurationParameter { 53 // get { return (ValueParameter<IItemList<IParameterConfiguration>>)Parameters[ProblemParametersConfigurationParameterName]; } 54 //} 55 public IValueParameter<ParameterConfigurationTree> ParameterConfigurationParameter { 56 get { return (ValueParameter<ParameterConfigurationTree>)Parameters[ParameterConfigurationParameterName]; } 57 } 58 public IValueParameter<IntValue> RepetitionsParameter { 59 get { return (ValueParameter<IntValue>)Parameters[RepetitionsParameterName]; } 60 } 55 61 #endregion 56 62 57 63 #region Properties 58 64 public EngineAlgorithm Algorithm { 59 get { return Algorithm Parameter.Value; }60 set { Algorithm Parameter.Value = value; }65 get { return AlgorithmTypeParameter.Value; } 66 set { AlgorithmTypeParameter.Value = value; } 61 67 } 62 public IItemList<ISingleObjectiveProblem> Problems { 68 public ISingleObjectiveProblem Problem { 69 get { return ProblemTypeParameter.Value; } 70 set { ProblemTypeParameter.Value = value; } 71 } 72 public ConstrainedItemList<ISingleObjectiveProblem> Problems { 63 73 get { return ProblemsParameter.Value; } 64 74 set { ProblemsParameter.Value = value; } 65 75 } 66 76 public ParameterConfigurationTree AlgorithmParameterConfiguration { 67 get { return AlgorithmParameterConfigurationParameter.Value; }68 set { AlgorithmParameterConfigurationParameter.Value = value; }77 get { return ParameterConfigurationParameter.Value; } 78 set { ParameterConfigurationParameter.Value = value; } 69 79 } 70 //public IItemList<IParameterConfiguration> ProblemParametersConfiguration{71 // get { return ProblemParametersConfigurationParameter.Value; }72 // set { ProblemParametersConfigurationParameter.Value = value; }73 //}80 public IntValue Repetitions { 81 get { return RepetitionsParameter.Value; } 82 set { RepetitionsParameter.Value = value; } 83 } 74 84 #endregion 75 85 76 86 public MetaOptimizationProblem() : base() { 77 Parameters.Add(new ValueParameter<EngineAlgorithm>(AlgorithmParameterName, "The algorithm which's parameters should be optimized.")); 78 Parameters.Add(new ValueParameter<IItemList<ISingleObjectiveProblem>>(ProblemsParameterName, "The problems that should be evaluated.", new ItemList<ISingleObjectiveProblem>())); 79 Parameters.Add(new ValueParameter<ParameterConfigurationTree>(AlgorithmParameterConfigurationParameterName, "List of algorithm parameters that should be optimized.")); 80 //Parameters.Add(new ValueParameter<IItemList<IParameterConfiguration>>(ProblemParametersConfigurationParameterName, "List of problem parameters that should be optimized.", new ItemList<IParameterConfiguration>())); 81 87 Parameters.Add(new ValueParameter<EngineAlgorithm>(AlgorithmTypeParameterName, "The algorithm which's parameters should be optimized.", new GeneticAlgorithm())); 88 Parameters.Add(new ValueParameter<ISingleObjectiveProblem>(ProblemTypeParameterName, "The problem type.", new SingleObjectiveTestFunctionProblem())); 89 Parameters.Add(new ValueParameter<ConstrainedItemList<ISingleObjectiveProblem>>(ProblemsParameterName, "The problems that should be evaluated.", new ConstrainedItemList<ISingleObjectiveProblem>())); 90 Parameters.Add(new ValueParameter<ParameterConfigurationTree>(ParameterConfigurationParameterName, "List of algorithm parameters that should be optimized.")); 91 Parameters.Add(new ValueParameter<IntValue>(RepetitionsParameterName, "The number of evaluations for each problem.", new IntValue(3))); 92 82 93 Maximization = new BoolValue(false); 83 94 SolutionCreator = new RandomParameterConfigurationCreator(); … … 89 100 ParameterizeEvaluator(); 90 101 ParameterizeOperators(); 102 103 Problems.Type = Problem.GetType(); 104 Algorithm.Problem = Problem; 105 ParameterConfigurationParameter.ActualValue = new ParameterConfigurationTree(Algorithm); 91 106 } 92 107 … … 110 125 EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged); 111 126 Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 112 AlgorithmParameter.ValueChanged += new EventHandler(BaseLevelAlgorithmParameter_ValueChanged); 127 AlgorithmTypeParameter.ValueChanged += new EventHandler(AlgorithmTypeParameter_ValueChanged); 128 ProblemTypeParameter.ValueChanged += new EventHandler(ProblemTypeParameter_ValueChanged); 113 129 } 130 114 131 private void InitializeOperators() { 115 132 Operators.AddRange(ApplicationManager.Manager.GetInstances<IParameterConfigurationOperator>().Cast<IOperator>()); … … 117 134 } 118 135 private void ParameterizeSolutionCreator() { 119 //SolutionCreator.ParametersToOptimize = this.ParametersToOptimize;120 121 136 } 122 137 private void ParameterizeEvaluator() { … … 124 139 } 125 140 private void ParameterizeAnalyzer() { 126 //BestQualityAnalyzer.ResultsParameter.ActualName = "Results";127 141 } 128 142 private void ParameterizeOperators() { … … 150 164 ParameterizeAnalyzer(); 151 165 } 152 void BaseLevelAlgorithmParameter_ValueChanged(object sender, EventArgs e) { 153 AlgorithmParameterConfiguration = new ParameterConfigurationTree(Algorithm); 154 155 //Algorithm.ProblemChanged += new EventHandler(BaseLevelAlgorithm_ProblemChanged); // when to deregister? 156 //BaseLevelAlgorithm_ProblemChanged(sender, e); 166 void AlgorithmTypeParameter_ValueChanged(object sender, EventArgs e) { 167 Algorithm.Problem = Problem; 168 ParameterConfigurationParameter.ActualValue = new ParameterConfigurationTree(Algorithm); 157 169 } 158 159 void BaseLevelAlgorithm_ProblemChanged(object sender, EventArgs e) { 160 //if (Algorithm != null && Algorithm.Problem != null) { 161 // AlgorithmParameterConfiguration = new ParameterConfigurationTree(Algorithm); 162 //} 170 void ProblemTypeParameter_ValueChanged(object sender, EventArgs e) { 171 Problems.Type = Problem.GetType(); 172 Algorithm.Problem = Problem; 173 ParameterConfigurationParameter.ActualValue = new ParameterConfigurationTree(Algorithm); 163 174 } 164 175 #endregion
Note: See TracChangeset
for help on using the changeset viewer.