1. 程式人生 > >Sam版Matlab粒子群PSO工具已經更新

Sam版Matlab粒子群PSO工具已經更新

顯著亮點

感興趣的同學最好先去 Mathworks檔案交換站原始連結 閱讀一下作者的說明和以往的一些尤其是作者有答覆的討論。——特別說明的是,我通常沒有免費的時間(free time)解答跟工具箱使用類似的問題;如有問題經自己反覆努力之後仍解決不掉,建議直接註冊ID之後到該檔案原始網站留言討論。

這次最大的更新是支援除了bound上下邊界約束之外的其它型別的線性和非線性約束條件。名字也從Another Particle Swarm Toolbox改為Constrained Particle Swarm Optimization

注意它的別名:

Implementation of a PSO algorithm with the same syntax as the Genetic Algorithm Toolbox.

也就是,它的語法或使用方法跟Matlab的基因演算法(遺傳演算法)工具GA非常相似。所以,如果熟悉了matlab中的GA,則學習這個工具就非常駕輕就熟。——我除了寫寫部落格,通常不提供免費的輔導;如果有特別的需要,在預付費的情況下,可以酌情輔導。請勿私信關於該工具如何使用方面的問題。

英文版介紹

Description

Previously titled “Another Particle Swarm Toolbox”
Introduction
Particle swarm optimization (PSO) is a derivative-free global optimum solver. It is inspired by the surprisingly organized behaviour of large groups of simple animals, such as flocks of birds, schools of fish, or swarms of locusts. The individual creatures, or “particles”, in this algorithm are primitive, knowing only four simple things: 1 & 2) their own current location in the search space and fitness value, 3) their previous personal best location, and 4) the overall best location found by all the particles in the “swarm”. There are no gradients or Hessians to calculate. Each particle continually adjusts its speed and trajectory in the search space based on this information, moving closer towards the global optimum with each iteration. As seen in nature, this computational swarm displays a remarkable level of coherence and coordination despite the simplicity of its individual particles.

Ease of Use

If you are already using the Genetic Algorithm (GA) included with MATLAB’s Global Optimization Toolbox, then this PSO toolbox will save you a great deal of time. It can be called from the MATLAB command line using the same syntax as the GA, with some additional options specific to PSO. This will allow a high degree of code re-usability between the PSO toolbox and the GA toolbox. Certain GA-specific parameters such as cross-over and mutation functions will obviously not be applicable to the PSO algorithm. However, many of the commonly used options for the Genetic Algorithm Toolbox may be used interchangeably with PSO since they are both iterative population-based solvers. See >> help pso (from the ./psopt directory) for more details.

Features

  • NEW: support for distributed computing using MATLAB’s parallel computing toolbox.
  • Full support for bounded, linear, and nonlinear constraints.
  • Modular and customizable.
  • Binary optimization. See PSOBINARY function for details.
  • Vectorized fitness functions.
  • Solver parameters controlled using ‘options’ structure similar to existing MATLAB optimization solvers.
  • User-defined custom plots may be written using same template as GA plotting functions.
  • Another optimization solver may be called as a “hybrid function” to refine PSO results.

A demo function is included, with a small library of test functions. To run the demo, from the psopt directory, call

>> psodemo

with no inputs or outputs.

(很多人老跑來問我,這個工具箱怎麼用;其實,它使用方面跟Matlab自帶的GA toolbox極其相似,但似乎還更簡單方便一些;如果要學習,建議先學習matlab的GA工具箱(基因演算法,遺傳演算法),中英文的材料和文件很多; 而這個工具箱, 不但有詳細的描述解釋,而且程式碼註釋也很詳細;程式碼本身可讀性完全不亞於mathworks官方的程式碼;……所以,如果這樣前提下您這個還要做伸手黨,請先付費)

New features and bug fixes will continue to be released until this is made redundant by the release of an official MATLAB PSO toolbox. Bug reports and feature requests are welcome.

Special thanks to the following people for contributing code and bug fixes:
* Ben Xin Kang of the University of Hong Kong
* Christian Hansen of the University of Hannover
* Erik Schreurs from the MATLAB Central community
* J. Oliver of Brigham Young University
* Michael Johnston of the IRIS toolbox
* Ziqiang (Kevin) Chen

Bibliography
* J Kennedy, RC Eberhart, YH Shi. Swarm Intelligence. Academic Press, 2001.
* Particle Swarm Optimization. http://en.wikipedia.org/wiki/Particle_swarm_optimization
* RE Perez, K Behdinan. Particle swarm approach for structural design optimization. Computers and Structures 85 (2007) 1579–1588.
* SM Mikki, AA Kishk. Particle Swarm Optimization: A Physics-Based Approach. Morgan & Claypool, 2008.

Addendum A

Nonlinear inequality constraints in the form c(x) ≤ 0 and nonlinear equality constraints of the form ceq(x) = 0 have now been fully implemented. The ‘penalize’ constraint boundary enforcement method is now default. It has been redesigned and tested extensively, and should work with all types of constraints.

See the following document for the proper syntax for defining nonlinear constraint functions: http://www.mathworks.com/help/optim/ug/writing-constraints.html#brhkghv-16.
To see a demonstration of nonlinear inequality constraints using a quadrifolium overlaid on Rosenbrock’s function, run PSODEMO and choose ‘nonlinearconstrdemo’ as the test function.

Addendum B

Addendum C

Addendum D

There is now a particle swarm optimizer included with the Global Optimization Toolbox. It does not seem to handle constraints at this time. If you have a recent version of the Global Optimization Toolbox installed, you will need to set the path appropriately in your code to use this toolbox.
Acknowledgements

Particle Swarm Optimization Toolbox and Test Functions For Global Optimization Algorithms inspired this file.

This file inspired Co Blade: Software For Analysis And Design Of Composite Blades.
Required Products Optimization Toolbox
MATLAB release MATLAB 8.6 (R2015b)
Other requirements Familiarity with the Genetic Algorithm and Direct Search Toolbox would help in using this package. Tested on Mac OSX 10.11.3; will probably work for other platforms.

這裡寫圖片描述