Changeset 5566
- Timestamp:
- 02/28/11 15:08:14 (14 years ago)
- Location:
- trunk/sources
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs
r5560 r5566 126 126 UniformSubScopesProcessor evaluationProcessor = new UniformSubScopesProcessor(); 127 127 NeighborUpdater neighborUpdater = new NeighborUpdater(); 128 ISwarmUpdater swarmUpdater = new RealVectorSwarmUpdater();128 Placeholder swarmUpdater = new Placeholder(); 129 129 IntCounter currentIterationCounter = new IntCounter(); 130 130 Comparator currentIterationComparator = new Comparator(); 131 131 ConditionalBranch conditionalBranch = new ConditionalBranch(); 132 132 Placeholder velocityBoundsUpdaterPlaceholder = new Placeholder(); 133 Placeholder omegaUpdaterPlaceholder = new Placeholder();133 Placeholder inertiaUpdaterPlaceholder = new Placeholder(); 134 134 #endregion 135 135 136 136 #region Create operator graph 137 //OperatorGraph.InitialOperator = analyzerPlaceholder;137 OperatorGraph.InitialOperator = analyzerPlaceholder; 138 138 139 //analyzerPlaceholder.Name = "(Analyzer)";140 //analyzerPlaceholder.OperatorParameter.ActualName = "Analyzer";141 //analyzerPlaceholder.Successor = uniformSubScopeProcessor;139 analyzerPlaceholder.Name = "(Analyzer)"; 140 analyzerPlaceholder.OperatorParameter.ActualName = AnalyzerParameter.Name; 141 analyzerPlaceholder.Successor = uniformSubScopeProcessor; 142 142 143 //uniformSubScopeProcessor.Operator = particleUpdaterPlaceholder;144 //uniformSubScopeProcessor.Successor = evaluationProcessor;143 uniformSubScopeProcessor.Operator = particleUpdaterPlaceholder; 144 uniformSubScopeProcessor.Successor = evaluationProcessor; 145 145 146 //particleUpdaterPlaceholder.Name = "(ParticleUpdater)";147 //particleUpdaterPlaceholder.OperatorParameter.ActualName = "ParticleUpdater";146 particleUpdaterPlaceholder.Name = "(ParticleUpdater)"; 147 particleUpdaterPlaceholder.OperatorParameter.ActualName = ParticleUpdaterParameter.Name; 148 148 149 //evaluationProcessor.Parallel = new BoolValue(true);150 //evaluationProcessor.Operator = evaluatorPlaceholder;151 //evaluationProcessor.Successor = topologyUpdaterPlaceholder;149 evaluationProcessor.Parallel = new BoolValue(true); 150 evaluationProcessor.Operator = evaluatorPlaceholder; 151 evaluationProcessor.Successor = topologyUpdaterPlaceholder; 152 152 153 //evaluatorPlaceholder.Name = "(Evaluator)";154 //evaluatorPlaceholder.OperatorParameter.ActualName = "Evaluator";153 evaluatorPlaceholder.Name = "(Evaluator)"; 154 evaluatorPlaceholder.OperatorParameter.ActualName = EvaluatorParameter.Name; 155 155 156 //topologyUpdaterPlaceholder.Name = "(TopologyUpdater)";157 //topologyUpdaterPlaceholder.OperatorParameter.ActualName = "TopologyUpdater";158 //topologyUpdaterPlaceholder.Successor = neighborUpdater;156 topologyUpdaterPlaceholder.Name = "(TopologyUpdater)"; 157 topologyUpdaterPlaceholder.OperatorParameter.ActualName = TopologyUpdaterParameter.Name; 158 topologyUpdaterPlaceholder.Successor = swarmUpdater; 159 159 160 //neighborUpdater.Successor = uniformSubscopesProcessor2; 160 swarmUpdater.Name = "Swarm Updater"; 161 swarmUpdater.OperatorParameter.ActualName = "SwarmUpdater"; 162 swarmUpdater.Successor = currentIterationCounter; 161 163 162 //uniformSubscopesProcessor2.Operator = swarmUpdater; 163 //uniformSubscopesProcessor2.Successor = analyzerPlaceholder; 164 currentIterationCounter.Name = "CurrentIteration++"; 165 currentIterationCounter.ValueParameter.ActualName = "CurrentIteration"; 166 currentIterationCounter.Successor = inertiaUpdaterPlaceholder; 164 167 165 //analyzerPlaceholder.Name = "(Analyzer)";166 //analyzerPlaceholder.OperatorParameter.ActualName = "Analyzer";167 //analyzerPlaceholder.Successor = currentIterationCounter;168 inertiaUpdaterPlaceholder.Name = "(Inertia Updater)"; 169 inertiaUpdaterPlaceholder.OperatorParameter.ActualName = InertiaUpdaterParameter.ActualName; 170 inertiaUpdaterPlaceholder.Successor = currentIterationComparator; 168 171 169 //currentIterationCounter.Name = "CurrentIteration++"; 170 //currentIterationCounter.ValueParameter.ActualName = "CurrentIteration"; 171 //currentIterationCounter.Successor = omegaUpdaterPlaceholder; 172 currentIterationComparator.LeftSideParameter.ActualName = "CurrentIteration"; 173 currentIterationComparator.Comparison = new Comparison(ComparisonType.Less); 174 currentIterationComparator.RightSideParameter.ActualName = "MaxIterations"; 175 currentIterationComparator.ResultParameter.ActualName = "ContinueIteration"; 176 currentIterationComparator.Successor = conditionalBranch; 172 177 173 //omegaUpdaterPlaceholder.Name = "(Inertia Updater)"; 174 //omegaUpdaterPlaceholder.OperatorParameter.ActualName = "InertiaUpdater"; 175 //omegaUpdaterPlaceholder.Successor = velocityBoundsUpdaterPlaceholder; 176 177 //velocityBoundsUpdaterPlaceholder.Name = "(Velocity Bounds Updater)"; 178 //velocityBoundsUpdaterPlaceholder.OperatorParameter.ActualName = "VelocityBoundsUpdater"; 179 //velocityBoundsUpdaterPlaceholder.Successor = currentIterationComparator; 180 181 //currentIterationComparator.LeftSideParameter.ActualName = "CurrentIteration"; 182 //currentIterationComparator.Comparison = new Comparison(ComparisonType.Less); 183 //currentIterationComparator.RightSideParameter.ActualName = "MaxIterations"; 184 //currentIterationComparator.ResultParameter.ActualName = "ContinueIteration"; 185 //currentIterationComparator.Successor = conditionalBranch; 186 187 //conditionalBranch.Name = "ContinueIteration?"; 188 //conditionalBranch.ConditionParameter.ActualName = "ContinueIteration"; 189 //conditionalBranch.TrueBranch = uniformSubScopeProcessor; 178 conditionalBranch.Name = "ContinueIteration?"; 179 conditionalBranch.ConditionParameter.ActualName = "ContinueIteration"; 180 conditionalBranch.TrueBranch = uniformSubScopeProcessor; 190 181 #endregion 191 182 } -
trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs
r5560 r5566 43 43 } 44 44 public ILookupParameter<RealVector> PersonalBestParameter { 45 get { return (ILookupParameter<RealVector>)Parameters["PersonalBest Parameter"]; }45 get { return (ILookupParameter<RealVector>)Parameters["PersonalBest"]; } 46 46 } 47 47 public ILookupParameter<RealVector> NeighborsBestParameter { -
trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs
r5561 r5566 132 132 public override IOperation Apply() { 133 133 InitializeBestPoint(); 134 UpdateSwarm(); 134 135 UpdateNeighbors(); 135 136 UpdateVelocityBounds(); 136 UpdateSwarm();137 137 return base.Apply(); 138 138 } … … 140 140 private void InitializeBestPoint() { 141 141 if (BestQuality == null) 142 BestQualityParameter.ActualValue = new DoubleValue(); 142 BestQualityParameter.ActualValue = new DoubleValue(); 143 143 BestQuality.Value = Maximization ? Quality.Max(v => v.Value) : Quality.Min(v => v.Value); 144 144 int bestIndex = Quality.FindIndex(v => v.Value == BestQuality.Value); … … 167 167 private void UpdateSwarm() { 168 168 if (PersonalBestQuality.Length == 0) { 169 PersonalBestQualityParameter.ActualValue= new ItemArray<DoubleValue>(RealVector.Length);169 ItemArray<DoubleValue> personalBestQualities = new ItemArray<DoubleValue>(RealVector.Length); 170 170 for (int i = 0; i < RealVector.Length; i++) { 171 171 if (Maximization) { 172 PersonalBestQuality[i] = new DoubleValue();172 personalBestQualities[i] = new DoubleValue(double.MinValue); 173 173 } else { 174 PersonalBestQuality[i] = new DoubleValue(double.MaxValue);174 personalBestQualities[i] = new DoubleValue(double.MaxValue); 175 175 } 176 176 } 177 PersonalBestQualityParameter.ActualValue = personalBestQualities; 177 178 } 178 179 if (NeighborsBestQuality.Length == 0) { 179 NeighborsBestQualityParameter.ActualValue = new ItemArray<DoubleValue>(RealVector.Length); 180 for (int i = 0; i < RealVector.Length; i++) { 181 if (Maximization) { 182 NeighborsBestQuality[i] = new DoubleValue(); 183 } else { 184 NeighborsBestQuality[i] = new DoubleValue(double.MaxValue); 180 if (NeighborsParameter != null && Neighbors.Length > 0) { 181 ItemArray<DoubleValue> neighborsBestQualities = new ItemArray<DoubleValue>(RealVector.Length); 182 for (int i = 0; i < RealVector.Length; i++) { 183 if (Maximization) { 184 neighborsBestQualities[i] = new DoubleValue(double.MinValue); 185 } else { 186 neighborsBestQualities[i] = new DoubleValue(double.MaxValue); 187 } 185 188 } 186 } 187 } 188 if (NeighborsBest.Length == 0) { 189 NeighborsBestParameter.ActualValue = new ItemArray<RealVector>(RealVector.Length); 190 } 189 NeighborsBestQualityParameter.ActualValue = neighborsBestQualities; 190 } 191 } 192 ItemArray<RealVector> neighborsBest = new ItemArray<RealVector>(RealVector.Length); 191 193 for (int i = 0; i < RealVector.Length; i++) { 192 194 if (Maximization && Quality[i].Value > PersonalBestQuality[i].Value || … … 197 199 !Maximization && PersonalBestQuality[i].Value < NeighborsBestQuality[i].Value) { 198 200 NeighborsBestQuality[i].Value = PersonalBestQuality[i].Value; 199 NeighborsBest[i] = PersonalBest[i];201 neighborsBest[i] = PersonalBest[i]; 200 202 } 201 203 } 204 } 205 if (NeighborsParameter != null && Neighbors.Length > 0) { 206 NeighborsBestParameter.ActualValue = neighborsBest; 202 207 } 203 208 }
Note: See TracChangeset
for help on using the changeset viewer.