Changeset 9077 for branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs
- Timestamp:
- 12/19/12 10:33:27 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs
r9067 r9077 27 27 using HeuristicLab.Core; 28 28 using HeuristicLab.Data; 29 using HeuristicLab.Optimization; 29 30 using HeuristicLab.Parameters; 30 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 32 using HeuristicLab.Problems.DataAnalysis; 31 33 using HeuristicLab.Problems.DataAnalysis.Symbolic; 34 using HeuristicLab.Random; 32 35 33 36 namespace HeuristicLab.Algorithms.DataAnalysis.Symbolic { … … 37 40 public sealed class SymbolicDataAnalysisIslandGeneticAlgorithm : IslandGeneticAlgorithm { 38 41 private const string FixedSamplesParameterName = "NumberOfFixedSamples"; 42 private const string FixedSamplesPartitionParameterName = "FixedSamplesPartition"; 39 43 private const string FixedSamplesPartitionsParameterName = "FixedSamplesPartitions"; 40 44 private const string RandomSamplesParameterName = "NumberOfRandomSamples"; 45 private const string EvaluatorParameterName = "IslandEvaluator"; 46 private const string ProblemEvaluatorParameterName = "ProblemEvaluator"; 41 47 42 48 #region Problem Properties … … 59 65 public IFixedValueParameter<IntValue> RandomSamplesParameter { 60 66 get { return (IFixedValueParameter<IntValue>)Parameters[RandomSamplesParameterName]; } 67 } 68 public IValueParameter<ISymbolicDataAnalysisIslandGAEvaluator> EvaluatorParameter { 69 get { return (IValueParameter<ISymbolicDataAnalysisIslandGAEvaluator>)Parameters[EvaluatorParameterName]; } 70 } 71 private ILookupParameter<ISingleObjectiveEvaluator> ProblemEvaluatorParameter { 72 get { return (ILookupParameter<ISingleObjectiveEvaluator>)Parameters[ProblemEvaluatorParameterName]; } 61 73 } 62 74 #endregion … … 95 107 Parameters.Add(new FixedValueParameter<IntValue>(FixedSamplesParameterName, "The number of fixed samples used for fitness calculation in each island.", new IntValue(0))); 96 108 Parameters.Add(new ValueParameter<ItemArray<IntRange>>(FixedSamplesPartitionsParameterName, "The fixed samples partitions used for fitness calculation for every island.")); 97 Parameters.Add(new FixedValueParameter<IntValue>(RandomSamplesParameterName, "The number of random samples used for fitness calculation in each island..", new IntValue(0))); 109 Parameters.Add(new FixedValueParameter<IntValue>(RandomSamplesParameterName, "The number of random samples used for fitness calculation in each island.", new IntValue(0))); 110 Parameters.Add(new OptionalValueParameter<ISymbolicDataAnalysisIslandGAEvaluator>(EvaluatorParameterName, "The evaluator of the algorithm.")); 111 Parameters.Add(new LookupParameter<ISingleObjectiveEvaluator>(ProblemEvaluatorParameterName, "Internal parameter for name translation", "Evaluator")); 112 113 ScopeTreeAssigner<IntRange> fixedSamplesPartitionCreator = new ScopeTreeAssigner<IntRange>(); 114 fixedSamplesPartitionCreator.LeftSideParameter.ActualName = FixedSamplesPartitionParameterName; 115 fixedSamplesPartitionCreator.RightSideParameter.ActualName = FixedSamplesPartitionsParameterName; 116 117 RandomCreator insertionPoint = OperatorGraph.Iterate().OfType<RandomCreator>().Skip(1).First(); 118 fixedSamplesPartitionCreator.Successor = insertionPoint.Successor; 119 insertionPoint.Successor = fixedSamplesPartitionCreator; 98 120 99 121 RegisterParameterEvents(); 100 122 RecalculateFixedSamplesPartitions(); 123 } 124 125 protected override void Problem_EvaluatorChanged(object sender, EventArgs e) { 126 ParameterizeProblemEvaluator(); 127 base.Problem_EvaluatorChanged(sender, e); 128 } 129 130 private void ParameterizeProblemEvaluator() { 131 var regresssionEvaluator = Problem.Evaluator as ISymbolicDataAnalysisEvaluator<IRegressionProblemData>; 132 if (regresssionEvaluator != null) { 133 regresssionEvaluator.EvaluationPartitionParameter.ActualName = FixedSamplesPartitionParameterName; 134 } 135 var classificationEvaluator = Problem.Evaluator as ISymbolicDataAnalysisEvaluator<IClassificationProblemData>; 136 if (classificationEvaluator != null) { 137 classificationEvaluator.EvaluationPartitionParameter.ActualName = FixedSamplesPartitionParameterName; 138 } 139 } 140 141 protected override void ParameterizeSolutionsCreator() { 142 base.ParameterizeSolutionsCreator(); 143 SolutionsCreator.EvaluatorParameter.ActualName = EvaluatorParameterName; 144 } 145 146 protected override void ParameterizeMainLoop() { 147 base.ParameterizeMainLoop(); 148 MainLoop.EvaluatorParameter.ActualName = EvaluatorParameterName; 149 MainLoop.QualityParameter.ActualName = EvaluatorParameter.Value.QualityParameter.ActualName; 101 150 } 102 151 … … 114 163 protected override void Problem_Reset(object sender, EventArgs e) { 115 164 RecalculateFixedSamplesPartitions(); 165 ParameterizeProblemEvaluator(); 116 166 base.Problem_Reset(sender, e); 117 167 } 118 168 119 169 protected override void OnProblemChanged() { 170 Problem.FitnessCalculationPartition.ValueChanged += (o, e) => RecalculateFixedSamplesPartitions(); 171 172 ParameterizeProblemEvaluator(); 173 if (Problem is IRegressionProblem) { 174 var evaluator = new SymbolicDataAnalysisIslandGAEvaluator<IRegressionProblemData>(); 175 evaluator.FixedSamplesParameter.ActualName = FixedSamplesParameterName; 176 evaluator.RandomSamplesParameter.ActualName = RandomSamplesParameterName; 177 EvaluatorParameter.Value = evaluator; 178 } else if (Problem is IClassificationProblem) { 179 var evaluator = new SymbolicDataAnalysisIslandGAEvaluator<IClassificationProblemData>(); 180 evaluator.FixedSamplesParameter.ActualName = FixedSamplesParameterName; 181 evaluator.RandomSamplesParameter.ActualName = RandomSamplesParameterName; 182 EvaluatorParameter.Value = evaluator; 183 } else 184 EvaluatorParameter.Value = null; 185 186 ParameterizeStochasticOperatorForIsland(EvaluatorParameter.Value); 187 188 RecalculateFixedSamplesPartitions(); 120 189 base.OnProblemChanged(); 121 Problem.FitnessCalculationPartition.ValueChanged += (o, e) => RecalculateFixedSamplesPartitions();122 RecalculateFixedSamplesPartitions();123 190 } 124 191
Note: See TracChangeset
for help on using the changeset viewer.