Changeset 3689 for trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
- Timestamp:
- 05/07/10 02:08:30 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
r3672 r3689 184 184 get { return (OffspringSelectionGeneticAlgorithmMainLoop)SolutionsCreator.Successor; } 185 185 } 186 private List<ISelector> selectors; 187 private IEnumerable<ISelector> Selectors { 188 get { return selectors; } 189 } 190 private List<IDiscreteDoubleValueModifier> comparisonFactorModifiers; 186 [Storable] 191 187 private BestAverageWorstQualityAnalyzer qualityAnalyzer; 188 [Storable] 192 189 private ValueAnalyzer selectionPressureAnalyzer; 193 190 #endregion … … 239 236 mainLoop.ResultsParameter.ActualName = "Results"; 240 237 238 foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name)) 239 SelectorParameter.ValidValues.Add(selector); 240 ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector")); 241 if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector; 242 ParameterizeSelectors(); 243 244 foreach (IDiscreteDoubleValueModifier modifier in ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name)) 245 ComparisonFactorModifierParameter.ValidValues.Add(modifier); 246 IDiscreteDoubleValueModifier linearModifier = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("LinearDiscreteDoubleValueModifier")); 247 if (linearModifier != null) ComparisonFactorModifierParameter.Value = linearModifier; 248 ParameterizeComparisonFactorModifiers(); 249 250 qualityAnalyzer = new BestAverageWorstQualityAnalyzer(); 251 selectionPressureAnalyzer = new ValueAnalyzer(); 252 ParameterizeAnalyzers(); 253 UpdateAnalyzers(); 254 241 255 Initialize(); 242 256 } … … 244 258 public override IDeepCloneable Clone(Cloner cloner) { 245 259 OffspringSelectionGeneticAlgorithm clone = (OffspringSelectionGeneticAlgorithm)base.Clone(cloner); 260 clone.qualityAnalyzer = (BestAverageWorstQualityAnalyzer)cloner.Clone(qualityAnalyzer); 261 clone.selectionPressureAnalyzer = (ValueAnalyzer)cloner.Clone(selectionPressureAnalyzer); 246 262 clone.Initialize(); 247 263 return clone; … … 313 329 [StorableHook(HookType.AfterDeserialization)] 314 330 private void Initialize() { 315 InitializeSelectors();316 InitializeAnalyzers();317 UpdateSelectors();318 UpdateAnalyzers();319 InitializeComparisonFactorModifiers();320 UpdateComparisonFactorModifiers();321 331 PopulationSizeParameter.ValueChanged += new EventHandler(PopulationSizeParameter_ValueChanged); 322 332 PopulationSize.ValueChanged += new EventHandler(PopulationSize_ValueChanged); … … 324 334 Elites.ValueChanged += new EventHandler(Elites_ValueChanged); 325 335 if (Problem != null) { 326 UpdateCrossovers();327 UpdateMutators();328 336 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 329 337 } … … 342 350 ((IStochasticOperator)op).RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName; 343 351 } 344 private void InitializeSelectors() {345 selectors = new List<ISelector>();346 selectors.AddRange(ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name));347 ParameterizeSelectors();348 }349 private void InitializeAnalyzers() {350 qualityAnalyzer = new BestAverageWorstQualityAnalyzer();351 selectionPressureAnalyzer = new ValueAnalyzer();352 ParameterizeAnalyzers();353 }354 private void InitializeComparisonFactorModifiers() {355 comparisonFactorModifiers = new List<IDiscreteDoubleValueModifier>();356 comparisonFactorModifiers.AddRange(ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name));357 ParameterizeComparisonFactorModifiers();358 }359 352 private void ParameterizeSelectors() { 360 foreach (ISelector selector in Selector s) {353 foreach (ISelector selector in SelectorParameter.ValidValues) { 361 354 selector.CopySelected = new BoolValue(true); 362 355 selector.NumberOfSelectedSubScopesParameter.Value = null; … … 365 358 } 366 359 if (Problem != null) { 367 foreach (ISingleObjectiveSelector selector in Selector s.OfType<ISingleObjectiveSelector>()) {360 foreach (ISingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) { 368 361 selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 369 362 selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; … … 385 378 } 386 379 private void ParameterizeComparisonFactorModifiers() { 387 foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers) {380 foreach (IDiscreteDoubleValueModifier modifier in ComparisonFactorModifierParameter.ValidValues) { 388 381 modifier.IndexParameter.ActualName = "Generations"; 389 382 modifier.EndIndexParameter.ActualName = MaximumGenerationsParameter.Name; … … 392 385 modifier.StartValueParameter.ActualName = ComparisonFactorLowerBoundParameter.Name; 393 386 modifier.ValueParameter.ActualName = "ComparisonFactor"; 394 }395 }396 private void UpdateSelectors() {397 ISelector oldSelector = SelectorParameter.Value;398 SelectorParameter.ValidValues.Clear();399 foreach (ISelector selector in Selectors.OrderBy(x => x.Name))400 SelectorParameter.ValidValues.Add(selector);401 402 ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));403 if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;404 405 if (oldSelector != null) {406 ISelector selector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSelector.GetType());407 if (selector != null) SelectorParameter.Value = selector;408 }409 }410 private void UpdateComparisonFactorModifiers() {411 IDiscreteDoubleValueModifier oldModifier = ComparisonFactorModifier;412 413 ComparisonFactorModifierParameter.ValidValues.Clear();414 foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers)415 ComparisonFactorModifierParameter.ValidValues.Add(modifier);416 417 if (oldModifier != null) {418 IDiscreteDoubleValueModifier mod = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldModifier.GetType());419 if (mod != null) ComparisonFactorModifierParameter.Value = mod;420 387 } 421 388 }
Note: See TracChangeset
for help on using the changeset viewer.