Bee22 - PSO framework
Particle Swarm Optimization (PSO) open source framework
Particle swarm optimization (PSO) is a very popular, nature-inspired, randomized, meta-heuristic class of algorithms for solving black box optimization problems. The main idea is to mimic the behaviour of natural swarms like, e.g., honeybee swarms, bird flocks and fish shoaling or aspects of human society, in order to find "promising" regions by sharing information and cooperating rather than competing against each other.
"In computer science, particle swarm optimization (PSO) is a computational method that optimizes a problem by iteratively trying to improve a candidate solution with regard to a given measure of quality. PSO optimizes a problem by having a population of candidate solutions, here dubbed particles, and moving these particles around in the search-space according to simple mathematical formulae over the particle's position and velocity. Each particle's movement is influenced by its local best known position but, is also guided toward the best known positions in the search-space, which are updated as better positions are found by other particles. This is expected to move the swarm toward the best solutions." ... "PSO does not use the gradient of the problem being optimized, which means PSO does not require that the optimization problem be differentiable as is required by classic optimization methods such as gradient descent and quasi-newton methods. PSO can therefore also be used on optimization problems that are partially irregular, noisy, change over time, etc." - from PSO Wikipedia article. PSO is actively developed area for many reasons, but mostly because of the big variety of practical applications. That interest led to creation of various software products including statistical libraries and frameworks using PSO.
Bee22 is another PSO framework with an unique quality to be Delphi based. I consider Embarcadero Delphi to be one of the greatest development (RAD) tools for Windows and it's still popular in academia. The framework provides intuitive user interface and transparent object oriented structure (View-Model-Controller and other design patterns) for a developer. The idea of blocks of properties is introduced, it's a way to encapsulate the parameterization, monitoring and control of certain (any) part of PSO algorithm. Python script from within the framework/blocks can be used to monitor and add functionality to the PSO algorithm. An additional features as observers, module to scan properties and creating reports are part of the framework too. The program structure and the code is optimized for speed and memory leaks (there are none) and PSO can be run in three different user access (GUI) levels.
For a first impression about the framework - see the screenshots and for more details at http://bee22.com. The framework has been developed having PSO in mind, but once you understand how it works it would be trivial to replace the underlying PSO algorithm with any algorithm you are interested in. About half of the code is reusable as it is (e.g. blocks), and whatever you need from the other half probably needs some modifications (e.g. reports).
The Bee22 project is under active development, so let me know if you would like to follow its evolution (I don't plan revolution unless the program becomes so sophisticated that grows consciousness and rebels).