Changeset 15102 for trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleCreator.cs
- Timestamp:
- 06/30/17 21:57:38 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleCreator.cs
r15091 r15102 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 27 28 using HeuristicLab.Parameters; 28 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 using HeuristicLab.PluginInfrastructure; 29 31 30 32 namespace HeuristicLab.Encodings.RealVectorEncoding { 31 33 [Item("RealVectorParticleCreator", "Creates a particle with position, zero velocity vector and personal best.")] 32 34 [StorableClass] 33 public class RealVectorParticleCreator : AlgorithmOperator, IRealVectorParticleCreator, IStochasticOperator { 35 [NonDiscoverableType] 36 [Obsolete("Use SPSOParticleCreator")] 37 internal class RealVectorParticleCreator : AlgorithmOperator, IRealVectorParticleCreator { 34 38 35 39 #region Parameters 36 public ILookupParameter<I Random> RandomParameter {37 get { return (ILookupParameter<I Random>)Parameters["Random"]; }40 public ILookupParameter<IntValue> ProblemSizeParameter { 41 get { return (ILookupParameter<IntValue>)Parameters["ProblemSize"]; } 38 42 } 39 43 public IValueLookupParameter<DoubleMatrix> BoundsParameter { … … 53 57 } 54 58 #endregion 55 59 60 #region Parameter Values 61 protected int ProblemSize { 62 get { return ProblemSizeParameter.ActualValue.Value; } 63 } 64 protected RealVector Velocity { 65 set { VelocityParameter.ActualValue = value; } 66 } 67 #endregion 68 56 69 #region Construction & Cloning 57 70 [StorableConstructor] … … 60 73 public RealVectorParticleCreator() 61 74 : base() { 62 Parameters.Add(new LookupParameter<I Random>("Random", "The random number generator to use."));75 Parameters.Add(new LookupParameter<IntValue>("ProblemSize", "The dimension of the problem.")); 63 76 Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "The lower and upper bounds in each dimension.")); 64 77 Parameters.Add(new LookupParameter<RealVector>("RealVector", "Particle's current solution")); … … 67 80 Parameters.Add(new LookupParameter<ISolutionCreator>("SolutionCreator", "The operator that creates the initial position.")); 68 81 69 Placeholder realVectorCreater = new Placeholder();82 UniformRandomRealVectorCreator realVectorCreater = new UniformRandomRealVectorCreator(); 70 83 Assigner personalBestPositionAssigner = new Assigner(); 71 RealVectorVelocityInitializer velocityInitializer = new RealVectorVelocityInitializer();72 84 73 85 OperatorGraph.InitialOperator = realVectorCreater; 74 86 75 realVectorCreater.OperatorParameter.ActualName = SolutionCreatorParameter.Name; 87 realVectorCreater.RealVectorParameter.ActualName = RealVectorParameter.Name; 88 realVectorCreater.LengthParameter.ActualName = ProblemSizeParameter.Name; 89 realVectorCreater.BoundsParameter.ActualName = BoundsParameter.Name; 76 90 realVectorCreater.Successor = personalBestPositionAssigner; 77 91 78 92 personalBestPositionAssigner.LeftSideParameter.ActualName = PersonalBestParameter.Name; 79 93 personalBestPositionAssigner.RightSideParameter.ActualName = RealVectorParameter.Name; 80 personalBestPositionAssigner.Successor = velocityInitializer; 81 82 velocityInitializer.BoundsParameter.ActualName = BoundsParameter.Name; 83 velocityInitializer.RandomParameter.ActualName = RandomParameter.Name; 84 velocityInitializer.RealVectorParameter.ActualName = RealVectorParameter.Name; 85 velocityInitializer.VelocityParameter.ActualName = VelocityParameter.Name; 86 velocityInitializer.Successor = null; 94 personalBestPositionAssigner.Successor = null; 87 95 } 88 96 public override IDeepCloneable Clone(Cloner cloner) { … … 90 98 } 91 99 #endregion 100 101 public override IOperation Apply() { 102 Velocity = new RealVector(ProblemSize); 103 return base.Apply(); 104 } 105 106 [StorableHook(HookType.AfterDeserialization)] 107 private void AfterDeserialization() { 108 if (!Parameters.ContainsKey("SolutionCreator")) 109 Parameters.Add(new LookupParameter<ISolutionCreator>("SolutionCreator", "The operator that creates the initial position.")); 110 } 92 111 } 93 112 }
Note: See TracChangeset
for help on using the changeset viewer.