SwarmOps
Black-Box Optimization For C#

Introduction

SwarmOps is a source-code library for doing numerical optimization in the C# programming language. The C# version of SwarmOps is mainly aimed at application developers who need to optimize some mathematical problem in their programs, but wish to avoid the hassle of having to do a whole lot of research first to find out which optimizers work well.

Included in SwarmOps are implementations of Differential Evolution, Particle Swarm Optimization, Pattern Search, Local Unimodal Sampling, and Gradient Descent. A number of common benchmark problems are also provided, including: Sphere, Griewank, Ackley, Rosenbrock, and so on.

SwarmOps is very well suited for finding the behavioural (or control) parameters that makes an optimizer perform its best. This is done by employing another overlaid optimizer, which is known here as Meta-Optimization (or Meta-Optimisation) and is also known in the literature as Meta-Evolution, Super-Optimization, Parameter Calibration, Parameter Tuning, etc. The success of SwarmOps in doing meta-optimization is mainly due to three things:

  1. SwarmOps uses the same interface for an optimization problem and an optimization method, meaning that an optimization method is also considered an optimization problem. This modular approach allows for meta-optimization, meta-meta-optimization, and so on.
  2. SwarmOps employs a simple time-saving technique called Pre-Emptive Fitness Evaluation which makes meta-optimization more tractable to execute.
  3. SwarmOps features a simple optimization method that works well as the overlaid meta-optimizer, because it is usually able to find the best behavioural parameters for an optimization method using only a fairly small number of iterations.

Parallelism

SwarmOps provides optimizers that can execute in parallel on multi-core CPUs, as well as parallel execution of meta-optimization.

License

The SwarmOps source-code is published under the GNU Lesser General Public License, which essentially means that you may distribute commercial programs that link with the SwarmOps library, as well as make alterations to the SwarmOps library itself. There are certain terms to be met though, please see the license for details.

Download

Newest Version

Previous Versions

Requirements

RandomOps

SwarmOps requires RandomOps v2.0 or later to compile. Please see the SwarmOps manual for instructions on how to use a custom Pseudo-Random Number Generator.

Installation

Please see the SwarmOps manual for installation instructions.

Compatibility

SwarmOps was developed in Microsoft Visual Studio C# 2010 with .NET framework v4.

Contact

E-Mail

Feel free to let us know if SwarmOps has been helpful to you in any way, or if you have any bug-fixes. But technical questions will likely not be answered due to lack of time developing other projects.


(C) Copyright 2006-2010 Hvass Laboratories. All rights reserved.
All trademarks are properties of their respective owners.