SwarmOps
Black-Box Optimization For C

Introduction

SwarmOps is a source-code library for doing numerical optimization in the C programming language. SwarmOps is especially suited for finding the behavioural parameters of an optimization method that makes it perform its best, by employing another overlaid optimization method. This is known here as Meta-Optimization (or Meta-Optimisation) but 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 function-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.

By default SwarmOps implements popular and commonly known optimization methods, including: Differential Evolution, Particle Swarm Optimization, Random and Local Optimization (including Pattern Search, Hill-Climbing, Simulated Annealing, etc.), and Gradient Descent. A number of common benchmark problems are also provided, including: Sphere, Griewank, Ackley, Rosenbrock, and so on.

SwarmOps supports the use of custom optimization problems and methods implemented in both the C and C++ programming languages.

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 v1.2 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 C++ 2005 but should be compatible with all ANSI C compilers.

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.