Changeset 9352 for branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssist.cs
- Timestamp:
- 04/10/13 15:15:13 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssist.cs
r9342 r9352 47 47 #region Problem Properties 48 48 public override Type ProblemType { 49 get { return typeof(I SingleObjectiveHeuristicOptimizationProblem); }50 } 51 public new I SingleObjectiveHeuristicOptimizationProblem Problem {52 get { return (I SingleObjectiveHeuristicOptimizationProblem)base.Problem; }49 get { return typeof(IGAssistProblem); } 50 } 51 public new IGAssistProblem Problem { 52 get { return (IGAssistProblem)base.Problem; } 53 53 set { base.Problem = value; } 54 54 } … … 65 65 get { return (ValueParameter<IntValue>)Parameters["PopulationSize"]; } 66 66 } 67 public IConstrainedValueParameter<ISelector> SelectorParameter { 68 get { return (IConstrainedValueParameter<ISelector>)Parameters["Selector"]; } 67 public IConstrainedValueParameter<IDefaultRuleOperator> DefaultRuleParameter { 68 get { return (IConstrainedValueParameter<IDefaultRuleOperator>)Parameters["DefaultRule"]; } 69 } 70 public IConstrainedValueParameter<INichingSingleObjectiveSelector> SelectorParameter { 71 get { return (IConstrainedValueParameter<INichingSingleObjectiveSelector>)Parameters["Selector"]; } 69 72 } 70 73 private ValueParameter<PercentValue> CrossoverProbabilityParameter { … … 134 137 set { PopulationSizeParameter.Value = value; } 135 138 } 136 public I Selector Selector {139 public INichingSingleObjectiveSelector Selector { 137 140 get { return SelectorParameter.Value; } 138 141 set { SelectorParameter.Value = value; } … … 192 195 Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true))); 193 196 Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(100))); 194 Parameters.Add(new ConstrainedValueParameter<I Selector>("Selector", "The operator used to select solutions for reproduction."));197 Parameters.Add(new ConstrainedValueParameter<INichingSingleObjectiveSelector>("Selector", "The operator used to select solutions for reproduction.")); 195 198 Parameters.Add(new ValueParameter<PercentValue>("CrossoverProbability", "The probability that the Crossover operator is applied on a solution.", new PercentValue(0.9))); 196 199 Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions.")); … … 208 211 Parameters.Add(new FixedValueParameter<IntValue>("MaximumNumberOfIntervals", "", new IntValue(5))); 209 212 Parameters.Add(new FixedValueParameter<IntValue>("InitialNumberOfRules", "", new IntValue(20))); 213 Parameters.Add(new ConstrainedValueParameter<IDefaultRuleOperator>("DefaultRule", "")); 210 214 Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("ReinitializeCurveOperator", "")); 211 215 Parameters.Add(new ValueParameter<ItemCollection<IDiscretizer>>("Discretizers", "", new ItemCollection<IDiscretizer>())); … … 236 240 resultsCollector.Successor = mainLoop; 237 241 242 mainLoop.DefaultRuleParameter.ActualName = DefaultRuleParameter.Name; 238 243 mainLoop.SelectorParameter.ActualName = SelectorParameter.Name; 239 244 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; … … 251 256 mainLoop.ReinitializationProbabilityOperatorParameter.ActualName = ReinitializeCurveOperatorParameter.Name; 252 257 253 foreach (I Selector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))258 foreach (INichingSingleObjectiveSelector selector in ApplicationManager.Manager.GetInstances<INichingSingleObjectiveSelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name)) 254 259 SelectorParameter.ValidValues.Add(selector); 255 ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));256 if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;260 //INichingSingleObjectiveSelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector")); 261 //if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector; 257 262 ParameterizeSelectors(); 258 263 … … 349 354 ParameterizeAnalyzers(); 350 355 ParameterizeIterationBasedOperators(); 356 UpdateDefaultRuleOperators(); 351 357 UpdateCrossovers(); 352 358 UpdateMutators(); … … 430 436 } 431 437 private void ParameterizeSelectors() { 432 foreach (I Selector selector in SelectorParameter.ValidValues) {438 foreach (INichingSingleObjectiveSelector selector in SelectorParameter.ValidValues) { 433 439 selector.CopySelected = new BoolValue(true); 434 440 selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(2 * (PopulationSizeParameter.Value.Value - ElitesParameter.Value.Value)); 435 441 selector.NumberOfSelectedSubScopesParameter.Hidden = true; 442 selector.ParentsPerChildParameter.Value = new IntValue(2); 436 443 ParameterizeStochasticOperator(selector); 437 444 } 438 445 if (Problem != null) { 439 foreach (I SingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {446 foreach (INichingSingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<INichingSingleObjectiveSelector>()) { 440 447 selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 441 448 selector.MaximizationParameter.Hidden = true; 442 449 selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 443 450 selector.QualityParameter.Hidden = true; 451 selector.NichingParameter.ActualName = Problem.NichingParameterName; 452 selector.GAssistNichesProblemDataParameter.ActualName = Problem.ProblemDataParameter.Name; 453 //change 454 selector.IndividualParameter.ActualName = "DecisionList"; 444 455 } 445 456 } … … 468 479 } 469 480 } 481 private void UpdateDefaultRuleOperators() { 482 IDefaultRuleOperator oldDefaultRule = DefaultRuleParameter.Value; 483 DefaultRuleParameter.ValidValues.Clear(); 484 IDefaultRuleOperator defaultdefaultRule = Problem.Operators.OfType<IDefaultRuleOperator>().FirstOrDefault(); 485 486 foreach (IDefaultRuleOperator defaultRule in Problem.Operators.OfType<IDefaultRuleOperator>().OrderBy(x => x.Name)) 487 DefaultRuleParameter.ValidValues.Add(defaultRule); 488 489 if (oldDefaultRule != null) { 490 IDefaultRuleOperator defaultRule = DefaultRuleParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldDefaultRule.GetType()); 491 if (defaultRule != null) DefaultRuleParameter.Value = defaultRule; 492 else oldDefaultRule = null; 493 } 494 if (oldDefaultRule == null && defaultdefaultRule != null) 495 DefaultRuleParameter.Value = defaultdefaultRule; 496 } 470 497 private void UpdateCrossovers() { 471 498 ICrossover oldCrossover = CrossoverParameter.Value;
Note: See TracChangeset
for help on using the changeset viewer.