Changeset 5207 for branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/RangeConstraints/DoubleValueRange.cs
- Timestamp:
- 01/04/11 02:18:27 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/RangeConstraints/DoubleValueRange.cs
r5184 r5207 25 25 do { 26 26 val = Math.Round((random.NextDouble() * (UpperBound.Value - LowerBound.Value) + LowerBound.Value) / StepSize.Value, 0) * StepSize.Value; 27 } while ( val < LowerBound.Value || val > UpperBound.Value);27 } while (!IsInRange(val)); 28 28 return new DoubleValue(val); 29 29 } 30 30 31 public void Fix(DoubleValue value) { 32 // apply stepsize 31 public void ApplyStepSize(DoubleValue value) { 33 32 value.Value = ((int)Math.Round(value.Value / this.StepSize.Value, 0)) * this.StepSize.Value; 33 } 34 34 35 // repair bounds 36 if (value.Value > this.UpperBound.Value) value.Value = this.UpperBound.Value; 37 if (value.Value < this.LowerBound.Value) value.Value = this.LowerBound.Value; 35 public bool IsInRange(double value) { 36 return value <= this.UpperBound.Value && value >= this.LowerBound.Value; 38 37 } 39 38 40 39 public override IEnumerable<DoubleValue> GetCombinations() { 41 40 var solutions = new List<DoubleValue>(); 42 double value = ((int)Math.Round(LowerBound.Value / StepSize.Value, 0)) * StepSize.Value; 43 if (value < LowerBound.Value) value += StepSize.Value; 41 double value = LowerBound.Value; 44 42 45 43 while (value <= UpperBound.Value) {
Note: See TracChangeset
for help on using the changeset viewer.