Changeset 5568 for trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs
- Timestamp:
- 02/28/11 17:25:28 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs
r5566 r5568 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 using HeuristicLab.Operators;27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;28 22 using HeuristicLab.Common; 29 23 using HeuristicLab.Core; 24 using HeuristicLab.Data; 25 using HeuristicLab.Operators; 26 using HeuristicLab.Optimization; 27 using HeuristicLab.Optimization.Operators; 30 28 using HeuristicLab.Parameters; 31 using HeuristicLab.Data; 32 using HeuristicLab.Analysis; 33 using HeuristicLab.Optimization; 34 using HeuristicLab.Random; 35 using HeuristicLab.Optimization.Operators; 36 using HeuristicLab.Encodings.RealVectorEncoding; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 37 30 38 31 namespace HeuristicLab.Algorithms.ParticleSwarmOptimization { … … 59 52 get { return (IValueLookupParameter<DoubleValue>)Parameters["PersonalBestAttraction"]; } 60 53 } 61 public IValueLookupParameter<DoubleValue> Neighbor sBestAttractionParameter {62 get { return (IValueLookupParameter<DoubleValue>)Parameters["Neighbor sBestAttraction"]; }54 public IValueLookupParameter<DoubleValue> NeighborBestAttractionParameter { 55 get { return (IValueLookupParameter<DoubleValue>)Parameters["NeighborBestAttraction"]; } 63 56 } 64 57 public IValueLookupParameter<DoubleMatrix> VelocityBoundsParameter { 65 58 get { return (IValueLookupParameter<DoubleMatrix>)Parameters["VelocityBounds"]; } 66 } 59 } 67 60 public IValueLookupParameter<IOperator> ParticleUpdaterParameter { 68 61 get { return (IValueLookupParameter<IOperator>)Parameters["ParticleUpdater"]; } … … 74 67 get { return (IValueLookupParameter<IOperator>)Parameters["InertiaUpdater"]; } 75 68 } 76 public IValueLookupParameter< VariableCollection> ResultsParameter {77 get { return (IValueLookupParameter< VariableCollection>)Parameters["Results"]; }69 public IValueLookupParameter<ResultCollection> ResultsParameter { 70 get { return (IValueLookupParameter<ResultCollection>)Parameters["Results"]; } 78 71 } 79 72 public IValueLookupParameter<IOperator> EvaluatorParameter { 80 73 get { return (IValueLookupParameter<IOperator>)Parameters["Evaluator"]; } 81 74 } 75 public ValueLookupParameter<ISwarmUpdater> SwarmUpdaterParameter { 76 get { return (ValueLookupParameter<ISwarmUpdater>)Parameters["SwarmUpdater"]; } 77 } 82 78 #endregion 83 79 84 80 public ParticleSwarmOptimizationMainLoop() 85 81 : base() { … … 102 98 Parameters.Add(new ValueLookupParameter<IntValue>("SwarmSize", "Size of the particle swarm.", new IntValue(10))); 103 99 Parameters.Add(new ValueLookupParameter<IntValue>("MaxIterations", "Maximal number of iterations.", new IntValue(1000))); 104 100 105 101 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze each generation.")); 106 102 107 103 Parameters.Add(new ValueLookupParameter<DoubleValue>("Inertia", "Inertia weight on a particle's movement (omega).")); 108 104 Parameters.Add(new ValueLookupParameter<DoubleValue>("PersonalBestAttraction", "Weight for particle's pull towards its personal best soution (phi_p).")); 109 Parameters.Add(new ValueLookupParameter<DoubleValue>("Neighbor sBestAttraction", "Weight for pull towards the neighborhood best solution or global best solution in case of a totally connected topology (phi_g)."));110 105 Parameters.Add(new ValueLookupParameter<DoubleValue>("NeighborBestAttraction", "Weight for pull towards the neighborhood best solution or global best solution in case of a totally connected topology (phi_g).")); 106 111 107 Parameters.Add(new ValueLookupParameter<IOperator>("ParticleUpdater", "Operator that calculates new position and velocity of a particle")); 112 108 Parameters.Add(new ValueLookupParameter<IOperator>("TopologyUpdater", "Updates the neighborhood description vectors")); … … 114 110 Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "Evaluates a particle solution.")); 115 111 116 Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored.")); 112 Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The variable collection where results should be stored.")); 113 114 Parameters.Add(new ValueLookupParameter<ISwarmUpdater>("SwarmUpdater", "The encoding-specific swarm updater.")); 117 115 #endregion 118 116 119 117 #region Create operators 118 ResultsCollector resultsCollector = new ResultsCollector(); 119 Placeholder swarmUpdaterPlaceholer1 = new Placeholder(); 120 120 Placeholder evaluatorPlaceholder = new Placeholder(); 121 121 Placeholder analyzerPlaceholder = new Placeholder(); … … 135 135 136 136 #region Create operator graph 137 OperatorGraph.InitialOperator = analyzerPlaceholder; 137 OperatorGraph.InitialOperator = resultsCollector; 138 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations", null, "CurrentIteration")); 139 //resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Current Inertia", null, "Inertia")); 140 //resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions")); 141 resultsCollector.ResultsParameter.ActualName = "Results"; 142 resultsCollector.Successor = swarmUpdaterPlaceholer1; 143 144 swarmUpdaterPlaceholer1.Name = "(Swarm Updater)"; 145 swarmUpdaterPlaceholer1.OperatorParameter.ActualName = SwarmUpdaterParameter.ActualName; 146 swarmUpdaterPlaceholer1.Successor = analyzerPlaceholder; 138 147 139 148 analyzerPlaceholder.Name = "(Analyzer)"; 140 analyzerPlaceholder.OperatorParameter.ActualName = AnalyzerParameter.Name; 149 analyzerPlaceholder.OperatorParameter.ActualName = AnalyzerParameter.Name; 141 150 analyzerPlaceholder.Successor = uniformSubScopeProcessor; 142 151 … … 145 154 146 155 particleUpdaterPlaceholder.Name = "(ParticleUpdater)"; 147 particleUpdaterPlaceholder.OperatorParameter.ActualName = ParticleUpdaterParameter.Name; 156 particleUpdaterPlaceholder.OperatorParameter.ActualName = ParticleUpdaterParameter.Name; 148 157 149 158 evaluationProcessor.Parallel = new BoolValue(true); … … 152 161 153 162 evaluatorPlaceholder.Name = "(Evaluator)"; 154 evaluatorPlaceholder.OperatorParameter.ActualName = EvaluatorParameter.Name; 163 evaluatorPlaceholder.OperatorParameter.ActualName = EvaluatorParameter.Name; 155 164 156 165 topologyUpdaterPlaceholder.Name = "(TopologyUpdater)"; 157 topologyUpdaterPlaceholder.OperatorParameter.ActualName = TopologyUpdaterParameter.Name; 166 topologyUpdaterPlaceholder.OperatorParameter.ActualName = TopologyUpdaterParameter.Name; 158 167 topologyUpdaterPlaceholder.Successor = swarmUpdater; 159 168 160 169 swarmUpdater.Name = "Swarm Updater"; 161 swarmUpdater.OperatorParameter.ActualName = "SwarmUpdater"; 162 swarmUpdater.Successor = currentIterationCounter; 170 swarmUpdater.OperatorParameter.ActualName = SwarmUpdaterParameter.ActualName; 171 swarmUpdater.Successor = inertiaUpdaterPlaceholder; 172 173 inertiaUpdaterPlaceholder.Name = "(Inertia Updater)"; 174 inertiaUpdaterPlaceholder.OperatorParameter.ActualName = InertiaUpdaterParameter.ActualName; 175 inertiaUpdaterPlaceholder.Successor = currentIterationCounter; 163 176 164 177 currentIterationCounter.Name = "CurrentIteration++"; 165 178 currentIterationCounter.ValueParameter.ActualName = "CurrentIteration"; 166 currentIterationCounter.Successor = inertiaUpdaterPlaceholder; 167 168 inertiaUpdaterPlaceholder.Name = "(Inertia Updater)"; 169 inertiaUpdaterPlaceholder.OperatorParameter.ActualName = InertiaUpdaterParameter.ActualName; 170 inertiaUpdaterPlaceholder.Successor = currentIterationComparator; 179 currentIterationCounter.Successor = currentIterationComparator; 171 180 172 181 currentIterationComparator.LeftSideParameter.ActualName = "CurrentIteration";
Note: See TracChangeset
for help on using the changeset viewer.