Changeset 3379 for trunk/sources
- Timestamp:
- 04/17/10 03:05:50 (14 years ago)
- Location:
- trunk/sources
- Files:
-
- 1 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab 3.3.sln
r3378 r3379 1235 1235 {125D3006-67F5-48CB-913E-73C0548F17FA}.Services|x86.ActiveCfg = Release|x86 1236 1236 {F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 1237 {F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|Any CPU.Build.0 = Debug|Any CPU1238 1237 {F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|x64.ActiveCfg = Debug|x64 1239 1238 {F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|x64.Build.0 = Debug|x64 … … 1250 1249 {F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Services|x86.ActiveCfg = Release|x86 1251 1250 {30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 1252 {30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|Any CPU.Build.0 = Debug|Any CPU1253 1251 {30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|x64.ActiveCfg = Debug|x64 1254 1252 {30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|x64.Build.0 = Debug|x64 -
trunk/sources/HeuristicLab 3.3/Files.txt
r3373 r3379 8 8 HeuristicLab.Algorithms.LocalSearch\3.3:HeuristicLab.Algorithms.LocalSearch-3.3.dll 9 9 HeuristicLab.Algorithms.MultipopulationAlgorithm\3.3:HeuristicLab.Algorithms.MultipopulationAlgorithm-3.3.dll 10 HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm\3.3:HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3.dll 10 11 HeuristicLab.Algorithms.ParticleSwarmOptimization\3.3:HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3.dll 11 12 HeuristicLab.Algorithms.SimulatedAnnealing\3.3:HeuristicLab.Algorithms.SimulatedAnnealing-3.3.dll -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
r3378 r3379 38 38 /// An offspring selection genetic algorithm. 39 39 /// </summary> 40 [Item("Offspring Selection Genetic Algorithm", "An offspring selection genetic algorithm (Affenzeller, M. and Wagner, S. 2005. Offspring Selection: A New Self-Adaptive Selection Scheme for Genetic Algorithms. Adaptive and Natural Computing Algorithms, pp. 218-221, Springer).")]40 [Item("Offspring Selection Genetic Algorithm", "An offspring selection genetic algorithm (Affenzeller, M. et al. 2009. Genetic Algorithms and Genetic Programming - Modern Concepts and Practical Applications. CRC Press).")] 41 41 [Creatable("Algorithms")] 42 42 [StorableClass] … … 80 80 get { return (ValueParameter<IntValue>)Parameters["MaximumGenerations"]; } 81 81 } 82 private ValueLookupParameter<DoubleValue> SuccessRatioParameter { 83 get { return (ValueLookupParameter<DoubleValue>)Parameters["SuccessRatio"]; } 84 } 85 private ValueLookupParameter<DoubleValue> ComparisonFactorLowerBoundParameter { 86 get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorLowerBound"]; } 87 } 88 private ValueLookupParameter<DoubleValue> ComparisonFactorUpperBoundParameter { 89 get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorUpperBound"]; } 90 } 91 private ConstrainedValueParameter<IDiscreteDoubleValueModifier> ComparisonFactorModifierParameter { 92 get { return (ConstrainedValueParameter<IDiscreteDoubleValueModifier>)Parameters["ComparisonFactorModifier"]; } 93 } 94 private ValueLookupParameter<DoubleValue> MaximumSelectionPressureParameter { 95 get { return (ValueLookupParameter<DoubleValue>)Parameters["MaximumSelectionPressure"]; } 96 } 97 private ValueLookupParameter<BoolValue> OffspringSelectionBeforeMutationParameter { 98 get { return (ValueLookupParameter<BoolValue>)Parameters["OffspringSelectionBeforeMutation"]; } 99 } 82 100 #endregion 83 101 … … 119 137 set { MaximumGenerationsParameter.Value = value; } 120 138 } 139 private DoubleValue SuccessRatio { 140 get { return SuccessRatioParameter.Value; } 141 set { SuccessRatioParameter.Value = value; } 142 } 143 private DoubleValue ComparisonFactorLowerBound { 144 get { return ComparisonFactorLowerBoundParameter.Value; } 145 set { ComparisonFactorLowerBoundParameter.Value = value; } 146 } 147 private DoubleValue ComparisonFactorUpperBound { 148 get { return ComparisonFactorUpperBoundParameter.Value; } 149 set { ComparisonFactorUpperBoundParameter.Value = value; } 150 } 151 private IDiscreteDoubleValueModifier ComparisonFactorModifier { 152 get { return ComparisonFactorModifierParameter.Value; } 153 set { ComparisonFactorModifierParameter.Value = value; } 154 } 155 private DoubleValue MaximumSelectionPressure { 156 get { return MaximumSelectionPressureParameter.Value; } 157 set { MaximumSelectionPressureParameter.Value = value; } 158 } 159 private BoolValue OffspringSelectionBeforeMutation { 160 get { return OffspringSelectionBeforeMutationParameter.Value; } 161 set { OffspringSelectionBeforeMutationParameter.Value = value; } 162 } 121 163 private RandomCreator RandomCreator { 122 164 get { return (RandomCreator)OperatorGraph.InitialOperator; } … … 132 174 get { return selectors; } 133 175 } 176 private List<IDiscreteDoubleValueModifier> comparisonFactorModifiers; 134 177 #endregion 135 178 179 [StorableConstructor] 180 private OffspringSelectionGeneticAlgorithm(bool deserializing) : base(deserializing) { } 136 181 public OffspringSelectionGeneticAlgorithm() 137 182 : base() { … … 145 190 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 146 191 Parameters.Add(new ValueParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntValue(1000))); 192 Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved.", new DoubleValue(1))); 193 Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorLowerBound", "The lower bound of the comparison factor (start).", new DoubleValue(0))); 194 Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorUpperBound", "The upper bound of the comparison factor (end).", new DoubleValue(1))); 195 Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("ComparisonFactorModifier", "The operator used to modify the comparison factor.")); 196 Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm.", new DoubleValue(100))); 197 Parameters.Add(new ValueLookupParameter<BoolValue>("OffspringSelectionBeforeMutation", "True if the offspring selection step should be applied before mutation, false if it should be applied after mutation.", new BoolValue(false))); 147 198 148 199 RandomCreator randomCreator = new RandomCreator(); … … 161 212 solutionsCreator.Successor = mainLoop; 162 213 214 mainLoop.PopulationSizeParameter.ActualName = PopulationSizeParameter.Name; 163 215 mainLoop.SelectorParameter.ActualName = SelectorParameter.Name; 164 216 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; … … 172 224 Initialize(); 173 225 } 174 [StorableConstructor]175 private OffspringSelectionGeneticAlgorithm(bool deserializing) : base(deserializing) { }176 226 177 227 public override IDeepCloneable Clone(Cloner cloner) { … … 192 242 foreach (IOperator op in Problem.Operators) ParameterizeStochasticOperator(op); 193 243 ParameterizeSolutionsCreator(); 194 Parameteriz eGeneticAlgorithmMainLoop();244 ParameterizMainLoop(); 195 245 ParameterizeSelectors(); 196 246 UpdateCrossovers(); … … 209 259 ParameterizeStochasticOperator(Problem.Evaluator); 210 260 ParameterizeSolutionsCreator(); 211 Parameteriz eGeneticAlgorithmMainLoop();261 ParameterizMainLoop(); 212 262 ParameterizeSelectors(); 213 263 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); … … 216 266 protected override void Problem_VisualizerChanged(object sender, EventArgs e) { 217 267 ParameterizeStochasticOperator(Problem.Visualizer); 218 Parameteriz eGeneticAlgorithmMainLoop();268 ParameterizMainLoop(); 219 269 if (Problem.Visualizer != null) Problem.Visualizer.VisualizationParameter.ActualNameChanged += new EventHandler(Visualizer_VisualizationParameter_ActualNameChanged); 220 270 base.Problem_VisualizerChanged(sender, e); … … 235 285 private void PopulationSizeParameter_ValueChanged(object sender, EventArgs e) { 236 286 PopulationSize.ValueChanged += new EventHandler(PopulationSize_ValueChanged); 287 MainLoop.PopulationSizeParameter.Value = new IntValue(PopulationSize.Value - Elites.Value); 237 288 ParameterizeSelectors(); 238 289 } 239 290 private void PopulationSize_ValueChanged(object sender, EventArgs e) { 291 MainLoop.PopulationSizeParameter.Value = new IntValue(PopulationSize.Value - Elites.Value); 240 292 ParameterizeSelectors(); 241 293 } 242 294 private void Evaluator_QualityParameter_ActualNameChanged(object sender, EventArgs e) { 243 Parameteriz eGeneticAlgorithmMainLoop();295 ParameterizMainLoop(); 244 296 ParameterizeSelectors(); 245 297 } 246 298 private void Visualizer_VisualizationParameter_ActualNameChanged(object sender, EventArgs e) { 247 Parameteriz eGeneticAlgorithmMainLoop();299 ParameterizMainLoop(); 248 300 } 249 301 #endregion … … 254 306 InitializeSelectors(); 255 307 UpdateSelectors(); 308 InitializeComparisonFactorModifiers(); 309 UpdateComparisonFactorModifiers(); 256 310 PopulationSizeParameter.ValueChanged += new EventHandler(PopulationSizeParameter_ValueChanged); 257 311 PopulationSize.ValueChanged += new EventHandler(PopulationSize_ValueChanged); … … 270 324 SolutionsCreator.SolutionCreatorParameter.ActualName = Problem.SolutionCreatorParameter.Name; 271 325 } 272 private void Parameteriz eGeneticAlgorithmMainLoop() {326 private void ParameterizMainLoop() { 273 327 MainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name; 274 328 MainLoop.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name; … … 288 342 ParameterizeSelectors(); 289 343 } 344 private void InitializeComparisonFactorModifiers() { 345 comparisonFactorModifiers = new List<IDiscreteDoubleValueModifier>(); 346 comparisonFactorModifiers.AddRange(ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name)); 347 ParameterizeComparisonFactorModifiers(); 348 } 290 349 private void ParameterizeSelectors() { 291 350 foreach (ISelector selector in Selectors) { … … 301 360 } 302 361 } 362 private void ParameterizeComparisonFactorModifiers() { 363 foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers) { 364 modifier.IndexParameter.ActualName = "Generations"; // FIXME: hmmm, not so good, this variable is defined within the main loop 365 modifier.EndIndexParameter.ActualName = MaximumGenerationsParameter.Name; 366 modifier.EndValueParameter.ActualName = ComparisonFactorUpperBoundParameter.Name; 367 modifier.StartIndexParameter.Value = new IntValue(0); 368 modifier.StartValueParameter.ActualName = ComparisonFactorLowerBoundParameter.Name; 369 modifier.ValueParameter.ActualName = "ComparisonFactor"; // FIXME: hmmm, not so good, this variable is defined within the main loop 370 } 371 } 303 372 private void UpdateSelectors() { 304 373 ISelector oldSelector = SelectorParameter.Value; … … 314 383 if (selector != null) SelectorParameter.Value = selector; 315 384 } 385 } 386 private void UpdateComparisonFactorModifiers() { 387 IDiscreteDoubleValueModifier oldModifier = ComparisonFactorModifier; 388 ComparisonFactorModifierParameter.ValidValues.Clear(); 389 foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers) 390 ComparisonFactorModifierParameter.ValidValues.Add(modifier); 391 if (oldModifier != null) { 392 IDiscreteDoubleValueModifier modifier = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldModifier.GetType()); 393 if (modifier != null) ComparisonFactorModifierParameter.Value = modifier; 394 } else if (ComparisonFactorModifierParameter.ValidValues.Count > 0) ComparisonFactorModifierParameter.Value = ComparisonFactorModifierParameter.ValidValues.First(); 316 395 } 317 396 private void UpdateCrossovers() { -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs
r3378 r3379 181 181 182 182 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); 183 variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0))); 183 184 variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("CurrentSuccessRatio", new DoubleValue(0))); 184 185 -
trunk/sources/HeuristicLab.Optimization.Operators/3.3/OffspringSelector.cs
r3378 r3379 38 38 } 39 39 public ValueLookupParameter<DoubleValue> MaximumSelectionPressureParameter { 40 get { return (ValueLookupParameter<DoubleValue>)Parameters["Maxim iumSelectionPressure"]; }40 get { return (ValueLookupParameter<DoubleValue>)Parameters["MaximumSelectionPressure"]; } 41 41 } 42 42 public ValueLookupParameter<DoubleValue> SuccessRatioParameter { … … 49 49 get { return (LookupParameter<DoubleValue>)Parameters["CurrentSuccessRatio"]; } 50 50 } 51 public S ubScopesLookupParameter<BoolValue> SuccessfulOffspringParameter {52 get { return (S ubScopesLookupParameter<BoolValue>)Parameters["SuccessfulOffspring"]; }51 public SelectedSubScopesLookupParameter<BoolValue> SuccessfulOffspringParameter { 52 get { return (SelectedSubScopesLookupParameter<BoolValue>)Parameters["SuccessfulOffspring"]; } 53 53 } 54 54 public LookupParameter<ItemList<IScope>> WinnersParameter { … … 74 74 Parameters.Add(new ValueLookupParameter<DoubleValue>("SelectionPressure", "The amount of selection pressure currently necessary to fulfill the success ratio.")); 75 75 Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentSuccessRatio", "The current success ratio indicates how much of the successful offspring have already been generated.")); 76 Parameters.Add(new S ubScopesLookupParameter<BoolValue>("SuccessfulOffspring", "True if the offspring was successful, otherwise false."));76 Parameters.Add(new SelectedSubScopesLookupParameter<BoolValue>("SuccessfulOffspring", "True if the offspring was successful, otherwise false.")); 77 77 Parameters.Add(new LookupParameter<ItemList<IScope>>("Winners", "Temporary store of the successful offspring.")); 78 78 Parameters.Add(new LookupParameter<ItemList<IScope>>("LuckyLosers", "Temporary store of the lucky losers.")); … … 145 145 scope.SubScopes.Remove(parents); 146 146 scope.SubScopes.Remove(children); 147 for (int i = 0; i < parents.SubScopes.Count; i++)148 scope.SubScopes.Add(parents.SubScopes[ i]);147 while(parents.SubScopes.Count > 0) 148 scope.SubScopes.Add(parents.SubScopes[0]); 149 149 150 150 IOperator moreOffspring = OffspringCreatorParameter.ActualValue as IOperator; -
trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj
r3106 r3379 86 86 <None Include="HeuristicLabParametersPlugin.cs.frame" /> 87 87 <Compile Include="ConstrainedValueParameter.cs" /> 88 <Compile Include="SelectedSubScopesLookupParameter.cs" /> 88 89 <Compile Include="OptionalConstrainedValueParameter.cs" /> 89 90 <Compile Include="ValueParameter.cs" />
Note: See TracChangeset
for help on using the changeset viewer.