Changeset 12271 for branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/Alps.cs
- Timestamp:
- 03/31/15 13:18:59 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/Alps.cs
r12260 r12271 21 21 22 22 using System; 23 using System.Collections.Generic;24 23 using System.Linq; 25 24 using HeuristicLab.Analysis; … … 36 35 37 36 namespace HeuristicLab.Algorithms.ALPS { 38 [Item("ALPS", " A base class for all ALPS-based algorithms.")]37 [Item("ALPS", "Base class for all ALPS-based algorithms.")] 39 38 [StorableClass] 40 39 public abstract class Alps : HeuristicOptimizationEngineAlgorithm, IStorableContent { … … 76 75 get { return (IValueParameter<IntArray>)Parameters["AgeLimits"]; } 77 76 } 78 private IValueParameter<ReductionOperation> AgeInheritanceParameter { 79 get { return (IValueParameter<ReductionOperation>)Parameters["AgeInheritance"]; } 77 private IValueParameter<EnumValue<AgeInheritance>> AgeInheritanceParameter { 78 get { return (IValueParameter<EnumValue<AgeInheritance>>)Parameters["AgeInheritance"]; } 79 } 80 private IValueParameter<ReductionOperation> AgeInheritanceReductionParameter { 81 get { return (IValueParameter<ReductionOperation>)Parameters["AgeInheritanceReduction"]; } 80 82 } 81 83 private IValueParameter<IntValue> MatingPoolRangeParameter { … … 118 120 set { AgeLimitsParameter.Value = value; } 119 121 } 120 public ReductionOperationAgeInheritance {122 public EnumValue<AgeInheritance> AgeInheritance { 121 123 get { return AgeInheritanceParameter.Value; } 122 124 set { AgeInheritanceParameter.Value = value; } 125 } 126 private ReductionOperation AgeInheritanceReduction { 127 get { return AgeInheritanceReductionParameter.Value; } 128 set { AgeInheritanceReductionParameter.Value = value; } 123 129 } 124 130 public IntValue MatingPoolRange { … … 168 174 Parameters.Add(new ValueParameter<IntValue>("AgeGap", "The frequency of reseeding the lowest layer and scaling factor for the age-limits for the layers", new IntValue(20))); 169 175 Parameters.Add(new ValueParameter<IntArray>("AgeLimits", new IntArray(new int[0])) { Hidden = true }); 170 Parameters.Add(new ValueParameter<ReductionOperation>("AgeInheritance", "The operator for determining the age of an offspring based the parents' age.", new ReductionOperation(ReductionOperations.Max)) { Hidden = true }); 176 Parameters.Add(new ValueParameter<EnumValue<AgeInheritance>>("AgeInheritance", "The operator for determining the age of an offspring based the parents' age.", new EnumValue<AgeInheritance>(ALPS.AgeInheritance.Older))); 177 Parameters.Add(new ValueParameter<ReductionOperation>("AgeInheritanceReduction") { Hidden = true }); 171 178 Parameters.Add(new ValueParameter<IntValue>("MatingPoolRange", "The range of layers used for creating a mating pool. (1 = current + previous layer)", new IntValue(1)) { Hidden = true }); 172 179 Parameters.Add(new ValueParameter<PercentValue>("MatingPoolSelectionPercentage", "Percentage of the previous layers used for creating a mating pool.", new PercentValue(1.0, restrictToUnitInterval: true)) { Hidden = true }); … … 175 182 layerQualityAnalyzer = new BestAverageWorstQualityAnalyzer(); 176 183 177 // Create Operator Graph 178 179 RecalculateAgeLimits(); 184 ParameterizeAgeLimits(); 185 ParameterizeAgeInheritanceReduction(); 180 186 181 187 ParameterizeAnalyzers(); … … 185 191 } 186 192 193 194 #region Events 187 195 public override void Prepare() { 188 196 if (Problem != null) … … 190 198 } 191 199 192 #region Events193 200 protected override void OnProblemChanged() { 194 201 base.OnProblemChanged(); … … 227 234 private void AgeGapParameter_ValueChanged(object sender, EventArgs e) { 228 235 AgeGap.ValueChanged += AgeGap_ValueChanged; 229 RecalculateAgeLimits();236 ParameterizeAgeLimits(); 230 237 } 231 238 private void AgeGap_ValueChanged(object sender, EventArgs e) { 232 RecalculateAgeLimits();239 ParameterizeAgeLimits(); 233 240 } 234 241 private void AgingSchemeParameter_ValueChanged(object sender, EventArgs e) { 235 242 AgingScheme.ValueChanged += AgingScheme_ValueChanged; 236 RecalculateAgeLimits();243 ParameterizeAgeLimits(); 237 244 } 238 245 private void AgingScheme_ValueChanged(object sender, EventArgs e) { 239 RecalculateAgeLimits();246 ParameterizeAgeLimits(); 240 247 } 241 248 private void NumberOfLayersParameter_ValueChanged(object sender, EventArgs e) { 242 249 NumberOfLayers.ValueChanged += NumberOfLayers_ValueChanged; 243 RecalculateAgeLimits();250 ParameterizeAgeLimits(); 244 251 } 245 252 private void NumberOfLayers_ValueChanged(object sender, EventArgs e) { 246 RecalculateAgeLimits(); 253 ParameterizeAgeLimits(); 254 } 255 private void AgeInheritanceParameter_ValueChanged(object sender, EventArgs e) { 256 AgeInheritance.ValueChanged += AgeInheritance_ValueChanged; 257 ParameterizeAgeInheritanceReduction(); 258 } 259 private void AgeInheritance_ValueChanged(object sender, EventArgs e) { 260 ParameterizeAgeInheritanceReduction(); 247 261 } 248 262 private void AnalyzerOperators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IAnalyzer>> e) { … … 278 292 NumberOfLayersParameter.ValueChanged += NumberOfLayersParameter_ValueChanged; 279 293 NumberOfLayers.ValueChanged += NumberOfLayers_ValueChanged; 294 AgeInheritanceParameter.ValueChanged += AgeInheritanceParameter_ValueChanged; 295 AgeInheritance.ValueChanged += AgeInheritance_ValueChanged; 280 296 Analyzer.Operators.ItemsAdded += AnalyzerOperators_ItemsAdded; 281 297 LayerAnalyzer.Operators.ItemsAdded += LayerAnalyzerOperators_ItemsAdded; … … 307 323 } 308 324 } 325 326 private void ParameterizeAgeInheritanceReduction() { 327 AgeInheritanceReduction.Value = GetAgeInheritanceReduction(AgeInheritance.Value); 328 } 329 protected abstract ReductionOperations GetAgeInheritanceReduction(AgeInheritance ageInheritance); 330 private void ParameterizeAgeLimits() { 331 var scheme = AgingScheme.Value; 332 int ageGap = AgeGap.Value; 333 int numberOfLayers = NumberOfLayers.Value; 334 AgeLimits = scheme.CalculateAgeLimits(ageGap, numberOfLayers); 335 } 309 336 protected virtual void ParameterizeStochasticOperator(IOperator @operator) { 310 337 var stochasticOperator = @operator as IStochasticOperator; … … 338 365 } 339 366 #endregion 340 341 private void RecalculateAgeLimits() {342 var scheme = AgingScheme.Value;343 int ageGap = AgeGap.Value;344 int numberOfLayers = NumberOfLayers.Value;345 AgeLimits = AgingSchemeCalculator.CalculateAgeLimits(scheme, ageGap, numberOfLayers);346 }347 367 } 348 368 }
Note: See TracChangeset
for help on using the changeset viewer.