First Version
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ParticleSwarmOptimization
ParticleSwarmOptimization_Parallel_1
ParticleSwarmOptimization_Parallel_2
SpeedTest
packages
.gitattributes
.gitignore
ParticleSwarmOptimization.sln
README.md

README.md

ParticleSwarmOptimization

This repo contains 3 implmentations of Particle Swarm Optimization

It goes with these 2 blog posts

If you are looking to use this in an application and want it to run multi-threaded parrallel 2 is the best to use.

Example usage

open ParticleSwarmOptimization_Parallel_2

let target_point = [23.0;54.0]
let loss_func (x : list<float>) =  x |> List.map2 (fun x y -> sin 1.0/x-sin 1.0/y) target_point |> List.sum |> abs
let random = new System.Random()
let initial_weights = seq{ while true do yield [random.NextDouble()*1000.0;random.NextDouble()*1000.0]};

let args = Args(inertia_weight=[0.8; 0.8], particles=10, success_threshold=0.01, iterations = 10);
let (global_best_params, global_best_loss, particles) = execute args loss_func initial_weights;;

printfn "Particles %A" particles
printfn "Best loss %A" global_best_loss