- Timestamp:
- 04/10/13 15:15:13 (11 years ago)
- Location:
- branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3
- Files:
-
- 2 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; -
branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssistMainLoop.cs
r9342 r9352 61 61 public ValueLookupParameter<IOperator> MutatorParameter { 62 62 get { return (ValueLookupParameter<IOperator>)Parameters["Mutator"]; } 63 } 64 public ValueLookupParameter<IOperator> DefaultRuleParameter { 65 get { return (ValueLookupParameter<IOperator>)Parameters["DefaultRule"]; } 63 66 } 64 67 public ValueLookupParameter<IOperator> SpecialStagesParameter { … … 130 133 Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population.")); 131 134 Parameters.Add(new ValueLookupParameter<IOperator>("ReinitializationProbabilityOperator", "")); 135 Parameters.Add(new ValueLookupParameter<IOperator>("DefaultRule", "")); 132 136 Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied.")); 133 137 #endregion … … 138 142 Placeholder analyzer1 = new Placeholder(); 139 143 Placeholder reinitializationProbabilityOperator = new Placeholder(); 144 Placeholder defaultRuleOperator = new Placeholder(); 140 145 Placeholder selector = new Placeholder(); 141 146 SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor(); … … 170 175 analyzer1.OperatorParameter.ActualName = "Analyzer"; 171 176 177 defaultRuleOperator.Name = "Default Rule Operator"; 178 defaultRuleOperator.OperatorParameter.ActualName = DefaultRuleParameter.Name; 179 172 180 reinitializationProbabilityOperator.Name = "Reinitialization Probability operator (placeholder)"; 173 181 reinitializationProbabilityOperator.OperatorParameter.ActualName = ReinitializationProbabilityOperatorParameter.Name; … … 229 237 variableCreator.Successor = resultsCollector1; 230 238 resultsCollector1.Successor = analyzer1; 231 analyzer1.Successor = reinitializationProbabilityOperator; 239 analyzer1.Successor = defaultRuleOperator; 240 defaultRuleOperator.Successor = reinitializationProbabilityOperator; 232 241 reinitializationProbabilityOperator.Successor = selector; 233 242 selector.Successor = subScopesProcessor1; … … 263 272 comparator.Successor = analyzer2; 264 273 analyzer2.Successor = conditionalBranch; 265 conditionalBranch.FalseBranch = reinitializationProbabilityOperator;274 conditionalBranch.FalseBranch = defaultRuleOperator; 266 275 conditionalBranch.TrueBranch = null; 267 276 conditionalBranch.Successor = null;
Note: See TracChangeset
for help on using the changeset viewer.