- Timestamp:
- 05/08/10 16:33:50 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs
r3682 r3719 81 81 82 82 #region Properties 83 [Storable Attribute]83 [Storable] 84 84 private ParticleSwarmOptimizationMainLoop mainLoop; // Check this ! 85 85 private ParticleSwarmOptimizationMainLoop MainLoop { 86 86 get { return mainLoop; } 87 87 } 88 [Storable Attribute]88 [Storable] 89 89 private Assigner bestLocalQualityInitalizer; // Check this ! 90 90 private Assigner BestLocalQualityInitalizer { 91 91 get { return bestLocalQualityInitalizer; } 92 92 } 93 93 [Storable] 94 94 private BestAverageWorstQualityAnalyzer qualityAnalyzer; 95 95 #endregion … … 102 102 Parameters.Add(new ValueParameter<IntValue>("MaxIterations", "Maximal number of iterations.", new IntValue(1000))); 103 103 Parameters.Add(new ConstrainedValueParameter<IRealVectorEncoder>("Encoder", "The operator used to encode solutions as position vector.")); 104 Parameters.Add(new ValueParameter<IntValue>("PositionLength", "Length of the position encoding.", new IntValue(0)));105 104 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer())); 106 105 RandomCreator randomCreator = new RandomCreator(); … … 181 180 comparator.Successor = branch; 182 181 uniformSubScopesProcessor2.Successor = mainLoop; 182 InitializeAnalyzers(); 183 UpdateAnalyzers(); 183 184 Initialize(); 184 185 } … … 186 187 [StorableHook(HookType.AfterDeserialization)] 187 188 private void Initialize() { 188 InitializeAnalyzers();189 UpdateAnalyzers();190 189 EncoderParameter.ValueChanged += new EventHandler(EncoderParameter_ValueChanged); 191 190 if (Problem != null) { … … 211 210 UpdateEncoders(); 212 211 UpdateAnalyzers(); 212 ParameterizeAnalyzers(); 213 213 bestLocalQualityInitalizer.RightSideParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 214 214 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); … … 218 218 219 219 private void EncoderParameter_ValueChanged(object sender, EventArgs e) { 220 // IRealVectorEncoder old = (IRealVectorEncoder)((UniformSubScopesProcessor)((VariableCreator)((SolutionsCreator)((RandomCreator)OperatorGraph.InitialOperator).Successor).Successor).Successor).Operator;220 //MainLoop.EncoderParameter.ActualValue = (IRealVectorEncoder) EncoderParameter.ActualValue; 221 221 //((UniformSubScopesProcessor)((VariableCreator)((SolutionsCreator)((RandomCreator)OperatorGraph.InitialOperator).Successor).Successor).Successor).Operator = EncoderParameter.Value; 222 222 //((SingleSuccessorOperator)EncoderParameter.Value).Successor = ((SingleSuccessorOperator)old).Successor; … … 228 228 // 229 229 // 230 }231 232 private void ParameterizeMainLoop() {233 //GeneticAlgorithmMainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;234 230 } 235 231 -
trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs
r3682 r3719 12 12 using HeuristicLab.Optimization.Operators; 13 13 using HeuristicLab.Encodings.RealVectorEncoding; 14 using HeuristicLab.Optimization; 14 15 15 16 namespace HeuristicLab.Algorithms.ParticleSwarmOptimization { … … 24 25 get { return (ValueLookupParameter<VariableCollection>)Parameters["Results"]; } 25 26 } 26 public ValueLookupParameter<I Operator> EncoderParameter {27 get { return (ValueLookupParameter<I Operator>)Parameters["Encoder"]; }27 public ValueLookupParameter<IRealVectorEncoder> EncoderParameter { 28 get { return (ValueLookupParameter<IRealVectorEncoder>)Parameters["Encoder"]; } 28 29 } 29 30 public ValueLookupParameter<IOperator> DecoderParameter { … … 47 48 #endregion 48 49 50 [Storable] 51 private ParticleUpdater velocityUpdater; 52 49 53 [StorableConstructor] 50 54 private ParticleSwarmOptimizationMainLoop(bool deserializing) : base() { } … … 57 61 #region Create parameters 58 62 Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored.")); 59 Parameters.Add(new ValueLookupParameter<I Operator>("Encoder", "The encoding operator that maps a solution to a position vector."));63 Parameters.Add(new ValueLookupParameter<IRealVectorEncoder>("Encoder", "The encoding operator that maps a solution to a position vector.")); 60 64 Parameters.Add(new ValueLookupParameter<IOperator>("Decoder", "The decoding operator that maps a position vector to a solution.")); 61 65 Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false.")); … … 66 70 #endregion 67 71 72 EncoderParameter.ActualNameChanged += new EventHandler(EncoderParameter_ActualNameChanged); 73 68 74 #region Create operators 69 75 VariableCreator variableCreator = new VariableCreator(); … … 71 77 IntCounter intCounter = new IntCounter(); 72 78 ConditionalBranch conditionalBranch = new ConditionalBranch(); 73 ParticleUpdatervelocityUpdater = new ParticleUpdater();79 velocityUpdater = new ParticleUpdater(); 74 80 UniformSubScopesProcessor uniformSubScopesProcessor = new UniformSubScopesProcessor(); 75 81 UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor(); … … 84 90 analyzer1.OperatorParameter.ActualName = AnalyzerParameter.Name; 85 91 86 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue( 1))); // Initial generation already built92 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Initial generation already built 87 93 88 94 resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Generations")); … … 103 109 velocityUpdater.CurrentPositionParameter.ActualName = "Position"; 104 110 velocityUpdater.VelocityParameter.ActualName = "Velocity"; 111 // 112 // ToDo: Add correctly 105 113 106 114 encPlaceholder.OperatorParameter.ActualName = EncoderParameter.ActualName; … … 116 124 swarmUpdater.LocalBestQualityParameter.ActualName = "BestQuality"; 117 125 swarmUpdater.GlobalBestQualityParameter.ActualName = "CurrentBestBestQuality"; 118 119 126 #endregion 120 127 … … 125 132 conditionalBranch.FalseBranch = uniformSubScopesProcessor; 126 133 uniformSubScopesProcessor.Operator = velocityUpdater; 134 uniformSubScopesProcessor.Successor = intCounter; 127 135 velocityUpdater.Successor = decPlaceholder; 128 uniformSubScopesProcessor.Successor = uniformSubScopesProcessor2; 129 uniformSubScopesProcessor2.Operator = evaluator; 136 decPlaceholder.Successor = evaluator; 130 137 evaluator.Successor = swarmUpdater; 131 swarmUpdater.Successor = intCounter;138 swarmUpdater.Successor = null; 132 139 intCounter.Successor = resultsCollector1; 133 resultsCollector1.Successor = comparator; //analyzer1;134 //analyzer1.Successor = comparator;140 resultsCollector1.Successor = analyzer1; 141 analyzer1.Successor = comparator; 135 142 #endregion 143 } 144 145 private void EncoderParameter_ActualNameChanged(object sender, EventArgs e) { 146 velocityUpdater.BoundsParameter.ActualName = EncoderParameter.ActualValue.BoundsParameter.ActualName; 136 147 } 137 148 } -
trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleUpdater.cs
r3682 r3719 32 32 get { return (ILookupParameter<RealVector>)Parameters["BestGlobal"]; } 33 33 } 34 35 public ILookupParameter<DoubleMatrix> BoundsParameter { 36 get { return (ILookupParameter<DoubleMatrix>)Parameters["Bounds"]; } 37 } 34 38 #endregion 35 39 … … 41 45 Parameters.Add(new LookupParameter<RealVector>("BestLocal", "Best local position")); 42 46 Parameters.Add(new LookupParameter<RealVector>("BestGlobal", "Best global position")); 47 Parameters.Add(new LookupParameter<DoubleMatrix>("Bounds", "The lower and upper bounds for each dimension of the position vector.")); 43 48 } 44 49 … … 53 58 for (int i = 0; i < CurrentPositionParameter.ActualValue.Length; i++) { 54 59 CurrentPositionParameter.ActualValue[i] = CurrentPositionParameter.ActualValue[i] + VelocityParameter.ActualValue[i]; 60 if (CurrentPositionParameter.ActualValue[i] < BoundsParameter.ActualValue[0,0]) { 61 CurrentPositionParameter.ActualValue[i] = BoundsParameter.ActualValue[0, 0]; 62 } else if (CurrentPositionParameter.ActualValue[i] > BoundsParameter.ActualValue[0,1]) { 63 CurrentPositionParameter.ActualValue[i] = BoundsParameter.ActualValue[0, 1]; 64 } 55 65 } 56 66 return base.Apply(); -
trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/PermutationToRealVectorEncoder.cs
r3682 r3719 28 28 } 29 29 30 public IValueLookupParameter<DoubleMatrix> BoundsParameter { 31 get { return (IValueLookupParameter<DoubleMatrix>)Parameters["Bounds"]; } 32 } 33 34 public DoubleMatrix Bounds { 35 get { return (DoubleMatrix)BoundsParameter.ActualValue; } 36 set { BoundsParameter.ActualValue = value; } 37 } 38 30 39 public PermutationToRealVectorEncoder() : base() { 31 40 Parameters.Add(new LookupParameter<Permutation>("Permutation", "The permutation to encode.")); 32 41 Parameters.Add(new LookupParameter<RealVector>("RealVector", "The resulting real vector.")); 33 42 Parameters.Add(new LookupParameter<IntValue>("Length", "Vector length.")); 43 Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "The lower and upper bounds in each dimension.")); 34 44 } 35 45
Note: See TracChangeset
for help on using the changeset viewer.