First Version
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
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