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 (follow
R.Poli review on PSO applications, from antennas to robotics). That interest
led to creation of various software products including statistical libraries
and frameworks using PSO. See J. Parejo for
meta-heuristic optimization frameworks review and resources
for more general reviews on the PSO subject.
Bee22 is an open source PSO framework with an unique quality to be Delphi based. I consider Embarcadero Delphi to be one of the greatest development (RAD) tools and it's still quite 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 - the manual. 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).
Why the name? The name associates with a swarm (of honeybees), and 22 is a
typical number of particles for PSO. Bee22 has a nice memorable ring to it and the domain Bee22.com
was available at the time.
A copy of Bee22
code is on
Bee22 GitHub repository.
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).
Many thanks for the fruitful collaboration to Prof. Dimo Zidarov.
If you need Bee22 to be customized or further develop according to your requirements, write in HERE.