Changeset 2865 for trunk/sources/HeuristicLab.SGA/3.3/SGA.cs
- Timestamp:
- 02/25/10 06:35:43 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.SGA/3.3/SGA.cs
r2864 r2865 20 20 #endregion 21 21 22 using System; 23 using System.Linq; 22 24 using HeuristicLab.Core; 23 25 using HeuristicLab.Data; … … 27 29 using HeuristicLab.Parameters; 28 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using System;30 31 31 32 namespace HeuristicLab.SGA { … … 40 41 [Storable] 41 42 private SGAOperator sgaOperator; 43 44 private ConstrainedValueParameter<ICrossover> CrossoverOperatorParameter { 45 get { return (ConstrainedValueParameter<ICrossover>)Parameters["CrossoverOperator"]; } 46 } 47 private ConstrainedValueParameter<IManipulator> MutationOperatorParameter { 48 get { return (ConstrainedValueParameter<IManipulator>)Parameters["MutationOperator"]; } 49 } 42 50 43 51 public override Type ProblemType { … … 54 62 Parameters.Add(new ValueParameter<BoolData>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolData(true))); 55 63 Parameters.Add(new ValueParameter<IntData>("PopulationSize", "The size of the population of solutions.", new IntData(100))); 56 Parameters.Add(new OperatorParameter("CrossoverOperator", "The operator used to cross solutions."));64 Parameters.Add(new ConstrainedValueParameter<ICrossover>("CrossoverOperator", "The operator used to cross solutions.")); 57 65 Parameters.Add(new ValueParameter<DoubleData>("MutationProbability", "The probability that the mutation operator is applied on a solution.", new DoubleData(0.05))); 58 Parameters.Add(new OperatorParameter("MutationOperator", "The operator used to mutate solutions."));66 Parameters.Add(new ConstrainedValueParameter<IManipulator>("MutationOperator", "The operator used to mutate solutions.")); 59 67 Parameters.Add(new ValueParameter<IntData>("Elites", "The numer of elite solutions which are kept in each generation.", new IntData(1))); 60 68 Parameters.Add(new ValueParameter<IntData>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntData(1000))); … … 103 111 protected override void OnProblemChanged() { 104 112 if (Problem.SolutionCreator is IStochasticOperator) ((IStochasticOperator)Problem.SolutionCreator).RandomParameter.ActualName = "Random"; 113 if (Problem.Evaluator is IStochasticOperator) ((IStochasticOperator)Problem.Evaluator).RandomParameter.ActualName = "Random"; 114 Problem.Operators.Where(x => x is IStochasticOperator).Select(x => (x as IStochasticOperator).RandomParameter.ActualName = "Random"); 115 105 116 populationCreator.SolutionCreatorParameter.Value = Problem.SolutionCreator; 106 117 populationCreator.SolutionEvaluatorParameter.Value = Problem.Evaluator; 107 118 sgaOperator.MaximizationParameter.Value = Problem.Maximization; 108 sgaOperator.QualityParameter.ActualName = Problem.Evaluator.QualityParameter. Name;119 sgaOperator.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 109 120 sgaOperator.SolutionEvaluatorParameter.Value = Problem.Evaluator; 121 122 CrossoverOperatorParameter.ValidValues.Clear(); 123 var crossovers = from o in Problem.Operators 124 where o is ICrossover 125 select (ICrossover)o; 126 foreach (ICrossover crossover in crossovers) 127 CrossoverOperatorParameter.ValidValues.Add(crossover); 128 129 MutationOperatorParameter.ValidValues.Clear(); 130 var mutators = from o in Problem.Operators 131 where o is IManipulator 132 select (IManipulator)o; 133 foreach (IManipulator mutator in mutators) 134 MutationOperatorParameter.ValidValues.Add(mutator); 135 110 136 base.OnProblemChanged(); 111 137 } … … 116 142 } 117 143 protected override void Problem_EvaluatorChanged(object sender, EventArgs e) { 144 if (Problem.Evaluator is IStochasticOperator) ((IStochasticOperator)Problem.Evaluator).RandomParameter.ActualName = "Random"; 118 145 populationCreator.SolutionEvaluatorParameter.Value = Problem.Evaluator; 119 sgaOperator.QualityParameter.ActualName = Problem.Evaluator.QualityParameter. Name;146 sgaOperator.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 120 147 sgaOperator.SolutionEvaluatorParameter.Value = Problem.Evaluator; 121 148 base.Problem_EvaluatorChanged(sender, e);
Note: See TracChangeset
for help on using the changeset viewer.