- Timestamp:
- 11/26/14 11:06:38 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithmMainLoop.cs
r11585 r11586 38 38 public sealed class AlpsGeneticAlgorithmMainLoop : AlgorithmOperator { 39 39 #region Parameter Properties 40 public ILookupParameter<IRandom> RandomParameter {41 get { return (ILookupParameter<IRandom>)Parameters["Random"]; }42 }43 /*public ILookupParameter<BoolValue> MaximizationParameter {44 get { return (ILookupParameter<BoolValue>)Parameters["Maximization"]; }45 }46 public IScopeTreeLookupParameter<DoubleValue> QualityParameter {47 get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters["Quality"]; }48 }49 public ILookupParameter<DoubleValue> BestKnownQualityParameter {50 get { return (ILookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; }51 }52 public ILookupParameter<IOperator> EvaluatorParameter {53 get { return (ILookupParameter<IOperator>)Parameters["Evaluator"]; }54 }*/55 public ILookupParameter<IntValue> PopulationSizeParameter {56 get { return (ILookupParameter<IntValue>)Parameters["PopulationSize"]; }57 }58 40 public ILookupParameter<IntValue> MaximumGenerationsParameter { 59 41 get { return (ILookupParameter<IntValue>)Parameters["MaximumGenerations"]; } 60 }61 public ILookupParameter<IOperator> SelectorParameter {62 get { return (ILookupParameter<IOperator>)Parameters["Selector"]; }63 }64 public ILookupParameter<IOperator> CrossoverParameter {65 get { return (ILookupParameter<IOperator>)Parameters["Crossover"]; }66 }67 public ILookupParameter<PercentValue> MutationProbabilityParameter {68 get { return (ILookupParameter<PercentValue>)Parameters["MutationProbability"]; }69 }70 public ILookupParameter<IOperator> MutatorParameter {71 get { return (ILookupParameter<IOperator>)Parameters["Mutator"]; }72 }73 public ILookupParameter<IntValue> ElitesParameter {74 get { return (ILookupParameter<IntValue>)Parameters["Elites"]; }75 }76 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter {77 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; }78 }79 public ILookupParameter<ResultCollection> ResultsParameter {80 get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }81 42 } 82 43 public ILookupParameter<IOperator> AnalyzerParameter { … … 91 52 get { return OperatorGraph.Iterate().OfType<GeneticAlgorithmMainLoop>().First(); } 92 53 } 54 public EldersEmigrator EldersEmigrator { 55 get { return OperatorGraph.Iterate().OfType<EldersEmigrator>().First(); } 56 } 93 57 94 58 [StorableConstructor] … … 102 66 public AlpsGeneticAlgorithmMainLoop() 103 67 : base() { 104 Parameters.Add(new LookupParameter<IRandom>("Random", "A pseudo random number generator."));105 /*Parameters.Add(new LookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false."));106 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The value which represents the quality of a solution."));107 Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", "The best known quality value found so far."));108 Parameters.Add(new LookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions."));*/109 Parameters.Add(new LookupParameter<IntValue>("PopulationSize", "The size of the population of solutions."));110 68 Parameters.Add(new LookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations that the algorithm should process.")); 111 Parameters.Add(new LookupParameter<IOperator>("Selector", "The operator used to select solutions for reproduction."));112 Parameters.Add(new LookupParameter<IOperator>("Crossover", "The operator used to cross solutions."));113 Parameters.Add(new LookupParameter<PercentValue>("MutationProbability", "The probability that the mutation operator is applied on a solution."));114 Parameters.Add(new LookupParameter<IOperator>("Mutator", "The operator used to mutate solutions."));115 Parameters.Add(new LookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation."));116 Parameters.Add(new LookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));117 Parameters.Add(new LookupParameter<ResultCollection>("Results", "The results collection to store the results."));118 69 Parameters.Add(new LookupParameter<IOperator>("Analyzer", "The operator used to the analyze all individuals.")); 119 70 Parameters.Add(new LookupParameter<IOperator>("LayerAnalyzer", "The operator used to analyze each layer.")); … … 126 77 var matingPoolCreator = new MatingPoolCreator() { Name = "Create Mating Pools" }; 127 78 var matingPoolProcessor = new UniformSubScopesProcessor(); 128 var mainOperator = PrepareGeneticAlgorithmMainLoop();79 var mainOperator = CreatePreparedGeneticAlgorithmMainLoop(); 129 80 var layerAnalyzerPlaceholder = new Placeholder() { Name = "LayerAnalyzer (Placeholder)" }; 130 81 var generationsIcrementor = new IntCounter() { Name = "Increment Generations" }; 131 82 var evaluatedSolutionsReducer = new DataReducer() { Name = "Increment EvaluatedSolutions" }; 132 83 var eldersEmigrator = new EldersEmigrator() { Name = "Emigrate Elders" }; 133 var layerUpdator = new CombinedOperator() { Name = "Update Layers" };84 var layerUpdator = new LayerUpdator(mainOperator) { Name = "Update Layers" }; 134 85 var analyzerPlaceholder = new Placeholder() { Name = "Analyzer (Placeholder)" }; 135 86 var generationsComparator = new Comparator() { Name = "Generations >= MaximumGenerations" }; … … 140 91 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); 141 92 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("GenerationsSinceLastRefresh", new IntValue(0))); 93 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("OpenLayers", new IntValue(1))); 142 94 variableCreator.Successor = resultsCollector; 143 95 … … 193 145 } 194 146 195 private GeneticAlgorithmMainLoop PrepareGeneticAlgorithmMainLoop() {147 private GeneticAlgorithmMainLoop CreatePreparedGeneticAlgorithmMainLoop() { 196 148 var mainLoop = new GeneticAlgorithmMainLoop(); 197 149 var selector = mainLoop.OperatorGraph.Iterate().OfType<Placeholder>().First(o => o.OperatorParameter.ActualName == "Selector"); … … 228 180 stochasticBranch.RandomParameter.ActualName = "LocalRandom"; 229 181 230 // Remove unnessesary subtrees231 //foreach (var @operator in mainLoop.OperatorGraph.Operators.OfType<SingleSuccessorOperator>().Where(o => o.Successor == selector))232 // @operator.Successor = null;233 234 182 return mainLoop; 235 183 }
Note: See TracChangeset
for help on using the changeset viewer.