Changeset 11975 for branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding
- Timestamp:
- 02/10/15 09:57:29 (10 years ago)
- Location:
- branches/ALPS
- Files:
-
- 10 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/ALPS
- Property svn:mergeinfo changed
-
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
/branches/HLScript/HeuristicLab.Encodings.RealVectorEncoding merged eligible /stable/HeuristicLab.Encodings.RealVectorEncoding merged eligible /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding merged eligible /branches/1721-RandomForestPersistence/HeuristicLab.Encodings.RealVectorEncoding 10321-10322 /branches/Algorithms.GradientDescent/HeuristicLab.Encodings.RealVectorEncoding 5516-5520 /branches/Benchmarking/sources/HeuristicLab.Encodings.RealVectorEncoding 6917-7005 /branches/CloningRefactoring/HeuristicLab.Encodings.RealVectorEncoding 4656-4721 /branches/CodeEditor/HeuristicLab.Encodings.RealVectorEncoding 11700-11806 /branches/DataAnalysis Refactoring/HeuristicLab.Encodings.RealVectorEncoding 5471-5808 /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Encodings.RealVectorEncoding 5815-6180 /branches/DataAnalysis/HeuristicLab.Encodings.RealVectorEncoding 4458-4459,4462,4464 /branches/DataPreprocessing/HeuristicLab.Encodings.RealVectorEncoding 10085-11101 /branches/GP.Grammar.Editor/HeuristicLab.Encodings.RealVectorEncoding 6284-6795 /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Encodings.RealVectorEncoding 5060 /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Encodings.RealVectorEncoding 6123-9799 /branches/LogResidualEvaluator/HeuristicLab.Encodings.RealVectorEncoding 10202-10483 /branches/NET40/sources/HeuristicLab.Encodings.RealVectorEncoding 5138-5162 /branches/ParallelEngine/HeuristicLab.Encodings.RealVectorEncoding 5175-5192 /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Encodings.RealVectorEncoding 7568-7810 /branches/ProgrammableProblem/HeuristicLab.Encodings.RealVectorEncoding 11777-11959 /branches/QAPAlgorithms/HeuristicLab.Encodings.RealVectorEncoding 6350-6627 /branches/Restructure trunk solution/HeuristicLab.Encodings.RealVectorEncoding 6828 /branches/RuntimeOptimizer/HeuristicLab.Encodings.RealVectorEncoding 8943-9078 /branches/ScatterSearch (trunk integration)/HeuristicLab.Encodings.RealVectorEncoding 7787-8333 /branches/SlaveShutdown/HeuristicLab.Encodings.RealVectorEncoding 8944-8956 /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Encodings.RealVectorEncoding 10204-10479 /branches/SuccessProgressAnalysis/HeuristicLab.Encodings.RealVectorEncoding 5370-5682 /branches/Trunk/HeuristicLab.Encodings.RealVectorEncoding 6829-6865 /branches/UnloadJobs/HeuristicLab.Encodings.RealVectorEncoding 9168-9215 /branches/VNS/HeuristicLab.Encodings.RealVectorEncoding 5594-5752 /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding 5959-6341
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/Creators/NormalDistributedRealVectorCreator.cs
r11171 r11975 88 88 /// </remarks> 89 89 /// <param name="random">The random number generator.</param> 90 /// <param name="mean ">The mean vector around which the resulting vector is sampled.</param>91 /// <param name="sigma ">The vector of standard deviations, must have at least one row.</param>90 /// <param name="means">The mean vector around which the resulting vector is sampled.</param> 91 /// <param name="sigmas">The vector of standard deviations, must have at least one row.</param> 92 92 /// <param name="bounds">The lower and upper bound (1st and 2nd column) of the positions in the vector. If there are less rows than dimensions, the rows are cycled.</param> 93 93 /// <param name="maximumTries">The maximum number of tries to sample a value inside the bounds for each dimension. If a valid value cannot be obtained, the mean will be used.</param> 94 94 /// <returns>The newly created real vector.</returns> 95 public static RealVector Apply(IRandom random, RealVector mean, DoubleArray sigma, DoubleMatrix bounds, int maximumTries = 1000) { 95 public static RealVector Apply(IntValue lengthValue, IRandom random, RealVector means, DoubleArray sigmas, DoubleMatrix bounds, int maximumTries = 1000) { 96 if (lengthValue == null || lengthValue.Value == 0) throw new ArgumentException("Length is not defined or zero"); 96 97 if (random == null) throw new ArgumentNullException("Random is not defined", "random"); 97 if (mean == null || mean.Length == 0) throw new ArgumentNullException("Mean is not defined", "mean");98 if (sigma == null || sigma.Length == 0) throw new ArgumentNullException("Sigma is not defined.", "sigma");98 if (means == null || means.Length == 0) throw new ArgumentNullException("Mean is not defined", "mean"); 99 if (sigmas == null || sigmas.Length == 0) throw new ArgumentNullException("Sigma is not defined.", "sigma"); 99 100 if (bounds == null || bounds.Rows == 0) bounds = new DoubleMatrix(new[,] { { double.MinValue, double.MaxValue } }); 101 var length = lengthValue.Value; 100 102 var nd = new NormalDistributedRandom(random, 0, 1); 101 var result = (RealVector)mean.Clone();103 var result = new RealVector(length); 102 104 for (int i = 0; i < result.Length; i++) { 103 105 var min = bounds[i % bounds.Rows, 0]; 104 106 var max = bounds[i % bounds.Rows, 1]; 105 if (min.IsAlmost(max) || mean[i] < min) result[i] = min; 106 else if (mean[i] > max) result[i] = max; 107 var mean = means[i % means.Length]; 108 var sigma = sigmas[i % sigmas.Length]; 109 if (min.IsAlmost(max) || mean < min) result[i] = min; 110 else if (mean > max) result[i] = max; 107 111 else { 108 112 int count = 0; 109 113 bool inRange; 110 114 do { 111 result[i] = mean [i] + sigma[i % sigma.Length]* nd.NextDouble();112 inRange = result[i] >= bounds[i % bounds.Rows, 0] && result[i] < bounds[i % bounds.Rows, 1];115 result[i] = mean + sigma * nd.NextDouble(); 116 inRange = result[i] >= min && result[i] < max; 113 117 count++; 114 118 } while (count < maximumTries && !inRange); 115 119 if (count == maximumTries && !inRange) 116 result[i] = mean [i];120 result[i] = mean; 117 121 } 118 122 } … … 128 132 /// <returns>The newly created real vector.</returns> 129 133 protected override RealVector Create(IRandom random, IntValue length, DoubleMatrix bounds) { 130 return Apply( random, MeanParameter.ActualValue, SigmaParameter.ActualValue, bounds, MaximumTriesParameter.Value.Value);134 return Apply(length, random, MeanParameter.ActualValue, SigmaParameter.ActualValue, bounds, MaximumTriesParameter.Value.Value); 131 135 } 132 136 } -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/Crossovers/BlendAlphaBetaCrossover.cs
r11171 r11975 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Data; 26 using HeuristicLab.Optimization; 26 27 using HeuristicLab.Parameters; 27 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 40 41 [Item("BlendAlphaBetaCrossover", "The blend alpha beta crossover (BLX-a-b) for real vectors is similar to the blend alpha crossover (BLX-a), but distinguishes between the better and worse of the parents. The interval from which to choose the new offspring can be extended beyond the better parent by specifying a higher alpha value, and beyond the worse parent by specifying a higher beta value. The new offspring is sampled uniformly in the extended range. It is implemented as described in Takahashi, M. and Kita, H. 2001. A crossover operator using independent component analysis for real-coded genetic algorithms Proceedings of the 2001 Congress on Evolutionary Computation, pp. 643-649.")] 41 42 [StorableClass] 42 public class BlendAlphaBetaCrossover : RealVectorCrossover {43 public class BlendAlphaBetaCrossover : RealVectorCrossover, ISingleObjectiveOperator { 43 44 /// <summary> 44 45 /// Whether the problem is a maximization or minimization problem. -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/Crossovers/HeuristicCrossover.cs
r11171 r11975 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Data; 26 using HeuristicLab.Optimization; 26 27 using HeuristicLab.Parameters; 27 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 37 38 [Item("HeuristicCrossover", "The heuristic crossover produces offspring that extend the better parent in direction from the worse to the better parent. It is implemented as described in Wright, A.H. (1994), Genetic algorithms for real parameter optimization, Foundations of Genetic Algorithms, G.J.E. Rawlins (Ed.), Morgan Kaufmann, San Mateo, CA, 205-218.")] 38 39 [StorableClass] 39 public class HeuristicCrossover : RealVectorCrossover {40 public class HeuristicCrossover : RealVectorCrossover, ISingleObjectiveOperator { 40 41 /// <summary> 41 42 /// Whether the problem is a maximization or minimization problem. -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj
r11677 r11975 136 136 <Compile Include="RealVectorCrossover.cs" /> 137 137 <Compile Include="Properties\AssemblyInfo.cs" /> 138 <Compile Include="RealVectorEncoding.cs" /> 138 139 <Compile Include="RealVectorManipulator.cs" /> 139 140 </ItemGroup> -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs
r11171 r11975 21 21 22 22 using HeuristicLab.Core; 23 using HeuristicLab.Data; 23 24 24 25 namespace HeuristicLab.Encodings.RealVectorEncoding { 25 26 public interface IRealVectorMultiNeighborhoodShakingOperator : IRealVectorOperator { 26 27 ILookupParameter<RealVector> RealVectorParameter { get; } 28 IValueLookupParameter<DoubleMatrix> BoundsParameter { get; } 27 29 } 28 30 } -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveMaker.cs
r11171 r11975 31 31 [Item("AdditiveMoveMaker", "Peforms an additive move on a given real vector and updates the quality.")] 32 32 [StorableClass] 33 public class AdditiveMoveMaker : SingleSuccessorOperator, IAdditiveRealVectorMoveOperator, IMoveMaker {33 public class AdditiveMoveMaker : SingleSuccessorOperator, IAdditiveRealVectorMoveOperator, IMoveMaker, ISingleObjectiveOperator { 34 34 public override bool CanChangeName { 35 35 get { return false; } -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs
r11171 r11975 35 35 [Item("RealVectorSwarmUpdater", "Updates personal best point and quality as well as global best point and quality.")] 36 36 [StorableClass] 37 public sealed class RealVectorSwarmUpdater : SingleSuccessorOperator, IRealVectorSwarmUpdater {37 public sealed class RealVectorSwarmUpdater : SingleSuccessorOperator, IRealVectorSwarmUpdater, ISingleObjectiveOperator { 38 38 39 39 [Storable] … … 235 235 236 236 void VelocityBoundsStartValueParameter_Value_ValueChanged(object sender, EventArgs e) { 237 UpdateVelocityBoundsParamater(); 237 UpdateVelocityBoundsParamater(); 238 238 } 239 239 … … 257 257 VelocityBoundsStartValueParameter.Value.ValueChanged += new EventHandler(VelocityBoundsStartValueParameter_Value_ValueChanged); 258 258 } 259 UpdateVelocityBoundsParamater(); 259 UpdateVelocityBoundsParamater(); 260 260 } 261 261 -
branches/ALPS/HeuristicLab.Encodings.RealVectorEncoding/3.3/ShakingOperators/RealVectorShakingOperator.cs
r11171 r11975 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using HeuristicLab.Data; 27 28 using HeuristicLab.Optimization; 28 29 using HeuristicLab.Optimization.Operators; … … 47 48 } 48 49 50 public IValueLookupParameter<DoubleMatrix> BoundsParameter { 51 get { return (IValueLookupParameter<DoubleMatrix>)Parameters["Bounds"]; } 52 } 53 54 49 55 [StorableConstructor] 50 56 protected RealVectorShakingOperator(bool deserializing) : base(deserializing) { } … … 57 63 Parameters.Add(new LookupParameter<RealVector>("RealVector", "The real vector to shake.")); 58 64 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator that will be used for stochastic shaking operators.")); 65 Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "A 2 column matrix specifying the lower and upper bound for each dimension. If there are less rows than dimension the bounds vector is cycled.")); 59 66 foreach (IRealVectorManipulator shaker in ApplicationManager.Manager.GetInstances<IRealVectorManipulator>().OrderBy(x => x.Name)) 60 67 if (!(shaker is MultiRealVectorManipulator) 61 68 && !(shaker is ISelfAdaptiveManipulator)) Operators.Add(shaker); 69 } 70 71 [StorableHook(HookType.AfterDeserialization)] 72 private void AfterDeserialization() { 73 #region Backwards compatible code, remove with 3.4 74 if (!Parameters.ContainsKey("Bounds")) 75 Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "A 2 column matrix specifying the lower and upper bound for each dimension. If there are less rows than dimension the bounds vector is cycled.")); 76 #endregion 62 77 } 63 78
Note: See TracChangeset
for help on using the changeset viewer.