Class ParticleSwarmOptimizer<T, TInput, TOutput>
- Namespace
- AiDotNet.Optimizers
- Assembly
- AiDotNet.dll
Implements a Particle Swarm Optimization algorithm for finding optimal solutions.
public class ParticleSwarmOptimizer<T, TInput, TOutput> : OptimizerBase<T, TInput, TOutput>, IOptimizer<T, TInput, TOutput>, IModelSerializer
Type Parameters
TThe numeric type used for calculations, typically float or double.
TInputThe input data type.
TOutputThe output data type.
- Inheritance
-
OptimizerBase<T, TInput, TOutput>ParticleSwarmOptimizer<T, TInput, TOutput>
- Implements
-
IOptimizer<T, TInput, TOutput>
- Inherited Members
- Extension Methods
Remarks
Particle Swarm Optimization (PSO) is a population-based stochastic optimization technique inspired by the social behavior of birds flocking or fish schooling. The algorithm maintains a population (swarm) of candidate solutions (particles) that move around in the search space according to simple mathematical formulas that consider the particle's position and velocity.
For Beginners: Particle Swarm Optimization is like a group of birds searching for food.
Imagine a flock of birds looking for the best food source in a field:
- Each bird is a "particle" in the swarm
- Each bird remembers where it personally found the most food
- The flock shares information about where the most food has been found overall
- Birds adjust their flight based on their own experience and what they learn from others
- Over time, the whole flock converges on the best food source
This approach is very effective for finding good solutions to complex problems where traditional methods might get stuck in suboptimal areas.
Constructors
ParticleSwarmOptimizer(IFullModel<T, TInput, TOutput>, ParticleSwarmOptimizationOptions<T, TInput, TOutput>?)
Initializes a new instance of the ParticleSwarmOptimizer class with the specified options.
public ParticleSwarmOptimizer(IFullModel<T, TInput, TOutput> model, ParticleSwarmOptimizationOptions<T, TInput, TOutput>? options = null)
Parameters
modelIFullModel<T, TInput, TOutput>The model to be optimized.
optionsParticleSwarmOptimizationOptions<T, TInput, TOutput>The particle swarm optimization options, or null to use default options.
Methods
Deserialize(byte[])
Reconstructs the particle swarm optimizer from a serialized byte array.
public override void Deserialize(byte[] data)
Parameters
databyte[]The byte array containing the serialized optimizer.
Exceptions
- InvalidOperationException
Thrown when the options cannot be deserialized.
GetOptions()
Gets the current options for this optimizer.
public override OptimizationAlgorithmOptions<T, TInput, TOutput> GetOptions()
Returns
- OptimizationAlgorithmOptions<T, TInput, TOutput>
The current particle swarm optimization options.
InitializeAdaptiveParameters()
Initializes the adaptive parameters used by the PSO algorithm.
protected override void InitializeAdaptiveParameters()
Optimize(OptimizationInputData<T, TInput, TOutput>)
Performs the particle swarm optimization to find the best solution for the given input data.
public override OptimizationResult<T, TInput, TOutput> Optimize(OptimizationInputData<T, TInput, TOutput> inputData)
Parameters
inputDataOptimizationInputData<T, TInput, TOutput>The input data to optimize against.
Returns
- OptimizationResult<T, TInput, TOutput>
An optimization result containing the best solution found and associated metrics.
Serialize()
Serializes the particle swarm optimizer to a byte array for storage or transmission.
public override byte[] Serialize()
Returns
- byte[]
A byte array containing the serialized optimizer.
UpdateAdaptiveParameters(OptimizationStepData<T, TInput, TOutput>, OptimizationStepData<T, TInput, TOutput>)
Updates adaptive parameters based on optimization progress.
protected override void UpdateAdaptiveParameters(OptimizationStepData<T, TInput, TOutput> currentStepData, OptimizationStepData<T, TInput, TOutput> previousStepData)
Parameters
currentStepDataOptimizationStepData<T, TInput, TOutput>The data from the current optimization step.
previousStepDataOptimizationStepData<T, TInput, TOutput>The data from the previous optimization step.
UpdateOptions(OptimizationAlgorithmOptions<T, TInput, TOutput>)
Updates the optimizer's options with the provided options.
protected override void UpdateOptions(OptimizationAlgorithmOptions<T, TInput, TOutput> options)
Parameters
optionsOptimizationAlgorithmOptions<T, TInput, TOutput>The options to apply to this optimizer.
Exceptions
- ArgumentException
Thrown when the options are not of the expected type.