Changeset 10353 for branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandOffspringSelectionGeneticAlgorithm.cs
- Timestamp:
- 01/17/14 13:05:47 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandOffspringSelectionGeneticAlgorithm.cs
r10230 r10353 56 56 57 57 #region parameters 58 public IFixedValueParameter< IntValue> FixedSamplesParameter {59 get { return (IFixedValueParameter< IntValue>)Parameters[FixedSamplesParameterName]; }58 public IFixedValueParameter<PercentValue> FixedSamplesParameter { 59 get { return (IFixedValueParameter<PercentValue>)Parameters[FixedSamplesParameterName]; } 60 60 } 61 61 public IValueParameter<ItemArray<IntRange>> FixedSamplesPartitionsParameter { … … 71 71 72 72 #region properties 73 public intFixedSamples {73 public double FixedSamples { 74 74 get { return FixedSamplesParameter.Value.Value; } 75 75 set { FixedSamplesParameter.Value.Value = value; } … … 97 97 public SymbolicDataAnalysisIslandOffspringSelectionGeneticAlgorithm() 98 98 : base() { 99 Parameters.Add(new FixedValueParameter< IntValue>(FixedSamplesParameterName, "The number of fixed samples used for fitness calculation in each island.", new IntValue(0)));99 Parameters.Add(new FixedValueParameter<PercentValue>(FixedSamplesParameterName, "The number of fixed samples used for fitness calculation in each island.", new PercentValue(0.2))); 100 100 Parameters.Add(new ValueParameter<ItemArray<IntRange>>(FixedSamplesPartitionsParameterName, "The fixed samples partitions used for fitness calculation for every island.")); 101 101 Parameters.Add(new OptionalValueParameter<ISymbolicDataAnalysisIslandGeneticAlgorithmEvaluator>(EvaluatorParameterName, "The evaluator of the algorithm.")); … … 170 170 } 171 171 172 protected override void Problem_Reset(object sender, EventArgs e) {173 FixedSamples = Problem.FitnessCalculationPartition.Size / NumberOfIslands.Value;174 base.Problem_Reset(sender, e);175 }176 177 172 protected override void OnProblemChanged() { 178 173 Problem.FitnessCalculationPartition.ValueChanged += Problem_Reset; 179 FixedSamples = Problem.FitnessCalculationPartition.Size / NumberOfIslands.Value;180 174 181 175 if (Problem != null && EvaluatorParameter.Value == null) { … … 197 191 var samplesEnd = Problem.FitnessCalculationPartition.End; 198 192 var totalSamples = Problem.FitnessCalculationPartition.Size; 199 var fixedSamples = FixedSamples;193 var fixedSamples = (int)(FixedSamples * totalSamples); 200 194 var islands = NumberOfIslands.Value; 201 195 202 int offset = (int)Math.Ceiling(((double)(totalSamples - fixedSamples)) / (islands - 1)); 196 double shift = (double)((totalSamples - fixedSamples)) / (islands - 1); 197 int offset = (int)Math.Floor(shift); 198 double remainder = shift - offset; 199 203 200 List<IntRange> partitions = new List<IntRange>(); 204 201 for (int i = 0; i < islands; i++) { 205 var partitionStart = samplesStart + offset * i ;202 var partitionStart = samplesStart + offset * i + (int)(remainder * i); 206 203 partitions.Add(new IntRange(partitionStart, partitionStart + fixedSamples)); 207 204 }
Note: See TracChangeset
for help on using the changeset viewer.