Changeset 8330
- Timestamp:
- 07/25/12 17:29:13 (12 years ago)
- Location:
- branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3/RAPGA.cs
r8313 r8330 64 64 get { return (ValueParameter<IntValue>)Parameters["PopulationSize"]; } 65 65 } 66 private IValueParameter<IntValue> MinimumPopulationSizeParameter { 67 get { return (IValueParameter<IntValue>)Parameters["MinimumPopulationSize"]; } 68 } 69 private IValueParameter<IntValue> MaximumPopulationSizeParameter { 70 get { return (IValueParameter<IntValue>) Parameters["MaximumPopulationSize"]; } 71 } 72 private IValueParameter<DoubleValue> ComparisonFactorParameter { 73 get { return (IValueParameter<DoubleValue>)Parameters["ComparisonFactor"]; } 74 } 75 private IValueParameter<IntValue> EffortParameter { 76 get { return (IValueParameter<IntValue>)Parameters["Effort"]; } 77 } 66 78 public IConstrainedValueParameter<ISelector> SelectorParameter { 67 79 get { return (IConstrainedValueParameter<ISelector>)Parameters["Selector"]; } … … 99 111 get { return PopulationSizeParameter.Value; } 100 112 set { PopulationSizeParameter.Value = value; } 113 } 114 public IntValue MinimumPopulationSize { 115 get { return MinimumPopulationSizeParameter.Value; } 116 set { MinimumPopulationSizeParameter.Value = value; } 117 } 118 public IntValue MaximumPopulationSize { 119 get { return MaximumPopulationSizeParameter.Value; } 120 set { MaximumPopulationSizeParameter.Value = value; } 121 } 122 public DoubleValue ComparisonFactor { 123 get { return ComparisonFactorParameter.Value; } 124 set { ComparisonFactorParameter.Value = value; } 125 } 126 public IntValue Effort { 127 get { return EffortParameter.Value; } 128 set { EffortParameter.Value = value; } 101 129 } 102 130 public ISelector Selector { … … 154 182 Parameters.Add(new ValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0))); 155 183 Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true))); 156 Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(100))); 184 Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(300))); 185 Parameters.Add(new ValueParameter<IntValue>("MinimumPopulationSize", "The minimum size of the population of solutions.", new IntValue(2))); 186 Parameters.Add(new ValueParameter<IntValue>("MaximumPopulationSize", "The maximum size of the population of solutions.", new IntValue(499))); 187 Parameters.Add(new ValueParameter<DoubleValue>("ComparisonFactor", "The comparison factor.", new DoubleValue(0.0))); 188 Parameters.Add(new ValueParameter<IntValue>("Effort", "The maximum number of offspring created in each generation.", new IntValue(1000))); 157 189 Parameters.Add(new ConstrainedValueParameter<ISelector>("Selector", "The operator used to select solutions for reproduction.")); 158 190 Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions.")); -
branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3/RAPGAMainLoop.cs
r8313 r8330 79 79 get { return (ValueLookupParameter<IntValue>)Parameters["PopulationSize"]; } 80 80 } 81 public IValueLookupParameter<IntValue> MinimumPopulationSizeParameter { 82 get { return (IValueLookupParameter<IntValue>)Parameters["MinimumPopulationSize"]; } 83 } 84 public IValueLookupParameter<IntValue> MaximumPopulationSizeParameter { 85 get { return (IValueLookupParameter<IntValue>)Parameters["MaximumPopulationSize"]; } 86 } 87 public IValueLookupParameter<DoubleValue> ComparisonFactorParameter { 88 get { return (IValueLookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; } 89 } 90 public IValueLookupParameter<IntValue> EffortParameter { 91 get { return (IValueLookupParameter<IntValue>)Parameters["Effort"]; } 92 } 81 93 private ScopeParameter CurrentScopeParameter { 82 94 get { return (ScopeParameter)Parameters["CurrentScope"]; } … … 115 127 Parameters.Add(new ValueLookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated.")); 116 128 Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population.")); 129 Parameters.Add(new ValueLookupParameter<IntValue>("MinimumPopulationSize", "The minimum size of the population of solutions.")); 130 Parameters.Add(new ValueLookupParameter<IntValue>("MaximumPopulationSize", "The maximum size of the population of solutions.")); 131 Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactor", "The comparison factor.")); 132 Parameters.Add(new ValueLookupParameter<IntValue>("Effort", "The maximum number of offspring created in each generation.")); 117 133 Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied.")); 118 134 #endregion … … 120 136 #region Create operators 121 137 VariableCreator variableCreator = new VariableCreator(); 138 Assigner assigner1 = new Assigner(); 122 139 ResultsCollector resultsCollector1 = new ResultsCollector(); 123 140 Placeholder analyzer1 = new Placeholder(); … … 129 146 StochasticBranch stochasticBranch = new StochasticBranch(); 130 147 Placeholder mutator = new Placeholder(); 131 SubScopesRemover subScopesRemover = new SubScopesRemover();132 148 UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor(); 133 149 Placeholder evaluator = new Placeholder(); 134 SubScopesCounter subScopesCounter = new SubScopesCounter(); 150 WeightedParentsQualityComparator comparator1 = new WeightedParentsQualityComparator(); 151 ConditionalSelector conditionalSelector = new ConditionalSelector(); 152 RightReducer rightReducer1 = new RightReducer(); 153 SubScopesCounter subScopesCounter1 = new SubScopesCounter(); 154 IntCounter intCounter1 = new IntCounter(); 155 UniformSubScopesProcessor uniformSubScopesProcessor3 = new UniformSubScopesProcessor(); 156 SubScopesRemover subScopesRemover = new SubScopesRemover(); 157 Comparator comparator2 = new Comparator(); 158 ConditionalBranch conditionalBranch1 = new ConditionalBranch(); 159 BestSelector bestSelector1 = new BestSelector(); 160 BestSelector bestSelector2 = new BestSelector(); 161 RightReducer rightReducer2 = new RightReducer(); 135 162 SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor(); 136 BestSelector bestSelector = new BestSelector();137 RightReducer rightReducer = new RightReducer();163 BestSelector bestSelector3 = new BestSelector(); 164 RightReducer rightReducer3 = new RightReducer(); 138 165 MergingReducer mergingReducer = new MergingReducer(); 139 IntCounter intCounter = new IntCounter();140 Comparator comparator = new Comparator();166 IntCounter intCounter2 = new IntCounter(); 167 Comparator comparator3 = new Comparator(); 141 168 Placeholder analyzer2 = new Placeholder(); 142 ConditionalBranch conditionalBranch = new ConditionalBranch(); 169 ConditionalBranch conditionalBranch2 = new ConditionalBranch(); 170 Assigner assigner2 = new Assigner(); 171 SubScopesCounter subScopesCounter2 = new SubScopesCounter(); 172 ResultsCollector resultsCollector2 = new ResultsCollector(); 173 Comparator comparator4 = new Comparator(); 174 ConditionalBranch conditionalBranch3 = new ConditionalBranch(); 143 175 144 176 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class GeneticAlgorithm expects this to be called Generations 177 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("CurrentPopulationSize", new IntValue(0))); 178 179 assigner1.Name = "Initialize CurrentPopulationSize"; 180 assigner1.LeftSideParameter.ActualName = "CurrentPopulationSize"; 181 assigner1.RightSideParameter.ActualName = EvaluatedSolutionsParameter.ActualName; 145 182 146 183 resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Generations")); 184 resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("CurrentPopulationSize")); 147 185 resultsCollector1.ResultsParameter.ActualName = "Results"; 148 186 … … 164 202 mutator.OperatorParameter.ActualName = "Mutator"; 165 203 166 subScopesRemover.RemoveAllSubScopes = true;167 168 204 uniformSubScopesProcessor2.Parallel.Value = true; 169 205 … … 171 207 evaluator.OperatorParameter.ActualName = "Evaluator"; 172 208 173 subScopesCounter.Name = "Increment EvaluatedSolutions"; 174 subScopesCounter.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name; 175 176 bestSelector.CopySelected = new BoolValue(false); 177 bestSelector.MaximizationParameter.ActualName = "Maximization"; 178 bestSelector.NumberOfSelectedSubScopesParameter.ActualName = "Elites"; 179 bestSelector.QualityParameter.ActualName = "Quality"; 180 181 intCounter.Increment = new IntValue(1); 182 intCounter.ValueParameter.ActualName = "Generations"; 183 184 comparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual); 185 comparator.LeftSideParameter.ActualName = "Generations"; 186 comparator.ResultParameter.ActualName = "Terminate"; 187 comparator.RightSideParameter.ActualName = "MaximumGenerations"; 209 comparator1.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name; 210 comparator1.LeftSideParameter.ActualName = QualityParameter.Name; 211 comparator1.MaximizationParameter.ActualName = MaximizationParameter.Name; 212 comparator1.RightSideParameter.ActualName = QualityParameter.Name; 213 comparator1.ResultParameter.ActualName = "SuccessfulOffspring"; 214 215 conditionalSelector.ConditionParameter.ActualName = "SuccessfulOffspring"; 216 conditionalSelector.ConditionParameter.Depth = 1; 217 conditionalSelector.CopySelected.Value = false; 218 219 subScopesCounter1.Name = "Count Successful Offspring"; 220 subScopesCounter1.ValueParameter.ActualName = "NumberOfSuccessfulOffspring"; 221 222 intCounter1.IncrementParameter.ActualName = "NumberOfSuccessfulOffspring"; 223 intCounter1.IncrementParameter.Value = null; 224 intCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name; 225 226 uniformSubScopesProcessor3.Parallel.Value = true; 227 228 subScopesRemover.RemoveAllSubScopes = true; 229 230 comparator2.Comparison = new Comparison(ComparisonType.GreaterOrEqual); 231 comparator2.LeftSideParameter.ActualName = "NumberOfSuccessfulOffspring"; 232 comparator2.RightSideParameter.ActualName = MaximumPopulationSizeParameter.Name; 233 comparator2.ResultParameter.ActualName = "SelectMaximum"; 234 235 conditionalBranch1.ConditionParameter.ActualName = "SelectMaximum"; 236 237 bestSelector1.CopySelected = new BoolValue(true); 238 bestSelector1.MaximizationParameter.ActualName = MaximizationParameter.Name; 239 bestSelector1.NumberOfSelectedSubScopesParameter.ActualName = MaximumPopulationSizeParameter.Name; 240 bestSelector1.QualityParameter.ActualName = QualityParameter.Name; 241 242 bestSelector2.CopySelected = new BoolValue(true); 243 bestSelector2.MaximizationParameter.ActualName = MaximizationParameter.Name; 244 bestSelector2.NumberOfSelectedSubScopesParameter.ActualName = "NumberOfSuccessfulOffspring"; 245 bestSelector2.QualityParameter.ActualName = QualityParameter.Name; 246 247 bestSelector3.CopySelected = new BoolValue(false); 248 bestSelector3.MaximizationParameter.ActualName = MaximizationParameter.Name; 249 bestSelector3.NumberOfSelectedSubScopesParameter.ActualName = "Elites"; 250 bestSelector3.QualityParameter.ActualName = QualityParameter.Name; 251 252 intCounter2.Increment = new IntValue(1); 253 intCounter2.ValueParameter.ActualName = "Generations"; 254 255 comparator3.Comparison = new Comparison(ComparisonType.GreaterOrEqual); 256 comparator3.LeftSideParameter.ActualName = "Generations"; 257 comparator3.ResultParameter.ActualName = "Terminate"; 258 comparator3.RightSideParameter.ActualName = MaximumGenerationsParameter.Name; 188 259 189 260 analyzer2.Name = "Analyzer"; 190 261 analyzer2.OperatorParameter.ActualName = "Analyzer"; 191 262 192 conditionalBranch.ConditionParameter.ActualName = "Terminate"; 263 conditionalBranch2.ConditionParameter.ActualName = "Terminate"; 264 265 assigner2.Name = "Reset CurrentPopulationSize"; 266 assigner2.LeftSideParameter.ActualName = "CurrentPopulationSize"; 267 assigner2.RightSideParameter.Value = new IntValue(0); 268 269 subScopesCounter2.Name = "Increment EvaluatedSolutions"; 270 subScopesCounter2.ValueParameter.ActualName = "CurrentPopulationSize"; 271 272 resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("CurrentPopulationSize")); 273 resultsCollector2.ResultsParameter.ActualName = "Results"; 274 275 comparator4.Comparison = new Comparison(ComparisonType.Less); 276 comparator4.LeftSideParameter.ActualName = "CurrentPopulationSize"; 277 comparator4.RightSideParameter.ActualName = MinimumPopulationSizeParameter.Name; 278 comparator4.ResultParameter.ActualName = "Terminate"; 279 280 conditionalBranch3.ConditionParameter.ActualName = "Terminate"; 193 281 #endregion 194 282 195 283 #region Create operator graph 196 284 OperatorGraph.InitialOperator = variableCreator; 197 variableCreator.Successor = resultsCollector1; 285 variableCreator.Successor = assigner1; 286 assigner1.Successor = resultsCollector1; 198 287 resultsCollector1.Successor = analyzer1; 199 288 analyzer1.Successor = selector; … … 208 297 stochasticBranch.FirstBranch = mutator; 209 298 stochasticBranch.SecondBranch = null; 210 stochasticBranch.Successor = subScopesRemover;299 stochasticBranch.Successor = null; 211 300 mutator.Successor = null; 212 301 subScopesRemover.Successor = null; 213 302 uniformSubScopesProcessor2.Operator = evaluator; 214 uniformSubScopesProcessor2.Successor = subScopesCounter; 215 evaluator.Successor = null; 216 subScopesCounter.Successor = null; 217 subScopesProcessor2.Operators.Add(bestSelector); 303 uniformSubScopesProcessor2.Successor = conditionalSelector; 304 evaluator.Successor = comparator1; 305 conditionalSelector.Successor = rightReducer1; 306 rightReducer1.Successor = subScopesCounter1; 307 subScopesCounter1.Successor = intCounter1; 308 intCounter1.Successor = uniformSubScopesProcessor3; 309 uniformSubScopesProcessor3.Operator = subScopesRemover; 310 uniformSubScopesProcessor3.Successor = comparator2; 311 comparator2.Successor = conditionalBranch1; 312 conditionalBranch1.TrueBranch = bestSelector1; 313 conditionalBranch1.FalseBranch = bestSelector2; 314 bestSelector1.Successor = rightReducer2; 315 bestSelector2.Successor = rightReducer2; 316 subScopesProcessor2.Operators.Add(bestSelector3); 218 317 subScopesProcessor2.Operators.Add(new EmptyOperator()); 219 318 subScopesProcessor2.Successor = mergingReducer; 220 bestSelector.Successor = rightReducer; 221 rightReducer.Successor = null; 222 mergingReducer.Successor = intCounter; 223 intCounter.Successor = comparator; 224 comparator.Successor = analyzer2; 225 analyzer2.Successor = conditionalBranch; 226 conditionalBranch.FalseBranch = selector; 227 conditionalBranch.TrueBranch = null; 228 conditionalBranch.Successor = null; 319 bestSelector3.Successor = rightReducer3; 320 rightReducer3.Successor = null; 321 mergingReducer.Successor = intCounter2; 322 intCounter2.Successor = comparator3; 323 comparator3.Successor = analyzer2; 324 analyzer2.Successor = conditionalBranch2; 325 conditionalBranch2.FalseBranch = assigner2; 326 conditionalBranch2.TrueBranch = null; 327 conditionalBranch2.Successor = null; 328 assigner2.Successor = subScopesCounter2; 329 subScopesCounter2.Successor = resultsCollector2; 330 resultsCollector2.Successor = comparator4; 331 comparator4.Successor = conditionalBranch3; 332 conditionalBranch3.FalseBranch = selector; 333 conditionalBranch3.TrueBranch = null; 334 conditionalBranch3.Successor = null; 229 335 #endregion 230 336 }
Note: See TracChangeset
for help on using the changeset viewer.