Table of Contents

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

T

The numeric type used for calculations, typically float or double.

TInput

The input data type.

TOutput

The 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

model IFullModel<T, TInput, TOutput>

The model to be optimized.

options ParticleSwarmOptimizationOptions<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

data byte[]

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

inputData OptimizationInputData<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

currentStepData OptimizationStepData<T, TInput, TOutput>

The data from the current optimization step.

previousStepData OptimizationStepData<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

options OptimizationAlgorithmOptions<T, TInput, TOutput>

The options to apply to this optimizer.

Exceptions

ArgumentException

Thrown when the options are not of the expected type.