Particle Swarm Optimization framework (Delphi)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
PSO/Config
Scans
ext
images
script
.gitattributes
.gitignore
AboutBoxU.dfm
AboutBoxU.pas
AdjustU.pas
Bee22.dpr
Bee22.dproj
Bee22.res
Bee22.ridl
Bee22.tlb
Bee22U.dfm
Bee22U.pas
Bee22_TLB.pas
Bee22com.ridl
Bee22comU.pas
Bee22group.groupproj
BlockU.dfm
BlockU.pas
ClientBee22.dpr
ClientBee22.dproj
ClientBee22.py
ClientBee22.res
MVC_U.pas
OptimRsltU.pas
OptionsU.dfm
OptionsU.pas
PythonU.pas
README.md
ReportDataU.pas
TestFuncU.pas
Thoughts about PSO.docx
TrackerU.dfm
TrackerU.pas
UtilsU.pas
bee22.ini
blkPilesU.dfm
blkPilesU.pas
blk_algo.pas
blk_particle.pas
blk_subSw.pas
blk_subs.pas
comment.txt
ctrlCenterU.pas
fmConsoleU.dfm
fmConsoleU.pas
fmInsideU.dfm
fmInsideU.pas
fmOutsideU.dfm
fmOutsideU.pas
fmReportU.dfm
fmReportU.pas
fmScanPropU.dfm
fmScanPropU.pas
fmScanU.dfm
fmScanU.pas
fmSourceU.dfm
fmSourceU.pas
fmSrcPaneU.dfm
fmSrcPaneU.pas
fmSubswarmsU.dfm
fmSubswarmsU.pas
fmVisualU.dfm
fmVisualU.pas
frmClientBee22U.dfm
frmClientBee22U.pas
frmExtConfigU.dfm
frmExtConfigU.pas
frmExtFnCfg.dfm
frmExtFnCfg.pas
frmGenConfigU.dfm
frmGenConfigU.pas
pso_algo.pas
pso_particle.pas
pso_variable.pas
results.csv
tune.gem

README.md

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).