0 c6 l! q) K- u) D: L e; eMay be distributed freely as long as none of the files are 7 [( G' K, ]& {modified. : L! _8 u- v+ |( o: v2 H $ ~ q/ @/ N' I+ kSend suggestions to bkbirge@yahoo.com # h f1 z ]/ a
& w8 O1 h0 a) K+ A- I; G: X$ Q
Updates will be posted periodically at the Mathworks User 4 c7 f" ?+ ]/ q1 Y% z K2 HContributed Files website (www.mathworks.com) under the , b; p. |0 X3 ]Optimization category. ! i0 Q2 K3 j0 B' R - K: x$ v% d A8 C$ X% mTo install: : x( E- {5 Q( \+ a0 k& rExtract into any directory you want but make sure the matlab 6 h( \9 l, \! c! @) C2 F
path points to that directory and the subdirectories 4 h p* N- R- `5 y, `1 x9 ]'hiddenutils' and 'testfunctions'. , Y0 {: z1 }& z
: M, m3 _# L* R+ z$ n: Z
Enjoy! - Brian Birge" G* z4 o; C' I5 l6 f0 C
) Y/ v! R: M" l) Z9 B6 m' f" c------------------------------------------------------------- 8 w9 N3 F3 B, G& V3 W: g-------------------------------------------------------------' w! E3 m0 n, P, j3 e( H% k" l; _
+ |3 O/ s5 h! h4 ]1 C( c) H
INFO . m) E1 |% ~* K8 |6 N0 ZQuick start: just type ... out = pso_Trelea_vectorized('f6',2) 5 g: G0 y; l1 ~) A9 j2 x# B9 k. xand watch it work! 3 b) l# a2 Y- `% d, N8 |) F5 ^+ ]5 o6 s. V* G6 c! }
This is a PSO toolbox implementing Common, Clerc 1", and / i. k- q$ C: A( p U: }& a# _Trelea types along with an alpha version of tracking changing ; Q# l+ U9 Z* Q. z& q, {$ _environments. It can search for min, max, or 'distance' of ! Q) ?/ T! }+ d8 ^
user developed cost function. Very easy to use and hack with 0 a4 W7 e* c) U2 D+ q
reasonably good documentation (type help for any function and % p6 m I( h5 i' B% _ [3 Tit should tell you what you need) and will take advantage of 8 w4 A. J' U, C4 v
vectorized cost functions. It uses similar syntax to Matlab's 5 R) ^9 t& Q# c# T7 }optimization toolbox. Includes a suite of static and dynamic + e1 _* |) Y. m1 U: _+ k g- ptest functions. It also includes a dedicated PSO based neural * a- J$ S9 a7 Y, d; b' i% R
network trainer for use with Mathwork's neural network toolbox. 6 B: e" L, w |/ w1 P: m* ] 5 B f0 n) Y+ s- R* l" _+ lRun 'DemoPSOBehavior' to explore the various functions, options, h! p* n3 S1 r, Y9 H J: \
and visualizations. - X {+ Q. t9 J. R3 i- H) s# L2 B& u
Run 'demoPSOnet' to see a neural net trained with PSO 7 P, x( L( R5 H% g4 X
(requires neural net toolbox).9 U, _ z U& @& e" Q9 A
2 i7 d4 j# ~7 V7 i, ]3 E
7 [, Z. @) X0 lThis toolbox is in constant development and I welcome 7 @+ u7 b/ K( A6 Usuggestions. The main program 'pso_Trelea_vectorized.m' lists . l+ u' ~$ d( ]7 K; q4 c
various papers you can look at in the comments.2 B0 C, c8 p/ H' U' X" G% ?; ]
: j i U# [" O
Usage ideas: to find a global min/max, to optimize training of 4 y( r& C& X6 T' F
neural nets, error topology change tracking, teaching PSO, 7 `& x* J1 e; v9 I% M9 Winvestigate Emergence, tune control systems/filters, paradigm + K! M. N* t& I
for multi-agent interaction, etc.9 {! t C$ D6 ~0 D
8 \0 a c& L9 n" E------------------------------------------------------------- # b9 z7 n0 s4 f4 c+ d-------------------------------------------------------------3 y0 O4 Q9 C2 x6 {' W
) S% d# F3 U* c9 {4 Y
, F( o4 P, Y5 f+ r1 }0 ^ 8 t; ]5 U, x+ m; G$ H5 c) l** in main directory: ( O, N1 e8 Z( U 5 Y3 z; F, ^# u4 H9 {; J0) ReadMe.txt - this file, duh4 @6 l0 p& x! {2 w: Y7 O( L8 Z
1) A Particle Swarm Optimization (PSO) Primer.pdf - powerpoint converted to pdf presentation explaining the very basics of PSO 2 }& Q" ?; Q# r1 L2) DemoPSOBehavior.m - demo script, useful to see how the pso main function is called: T0 H( [) D$ H* i
3) goplotpso4demo.m - plotting routine called by the demo script, useful to see how custom plotting can be developed though this routine slows down the PSO a lot3 ~9 f( N. Y( K( h: L H1 A
4) goplotpso.m - default plotting routine used by pso algorithm7 r1 ^9 ~) n. G# v" v0 d* Y$ |
5) pso_Trelea_vectorized.m - main PSO algorithm function, implements Common, Trelea 1&2, Clerc 1", and an alpha version of tracking environmental changes.& Y8 P0 w7 q2 }& c
+ f) c9 Y! i. b, R n ( F f: R. p6 i( @; C) ^9 v( e! D' e" P& f; x: l7 G
** in 'hiddenutils'% t0 p2 _* k& T3 b: w
1 E2 u$ N/ Y: Q- z" d X1) forcerow, forcecol.m - utils to force a vector to be a row or column, superseded by Matlab 7 functions I believe but I think they are still called in the main algo4 E. b. }3 K' [) y+ H
2) normmat.m - takes a matrix and reformats the data to fit between a new range, very flexible 9 d. N6 T$ x3 Z5 y0 i1 t3) linear_dyn, spiral_dyn.m - helpers for the dynamic test functions listed in the 'testfunctions' directory# |8 X2 P% s& n8 h# Y
2 j/ d9 D: h# Y - \6 y% w8 u* e) Y " {$ W6 V4 v: Z% u** in 'testfunctions' 9 f* H+ T, U5 E0 m5 d- `8 b, ]5 f/ u, F( g/ R6 B5 W9 [
A bunch of useful functions (mostly 2D) for testing. See help for each one for specifics. Here's a list of the names: 0 `3 j' N; C) O) D3 I, G2 Z2 n i' i9 D6 l
Static test functions, minima don't change w.r.t. time/iteration: " A9 s1 F t4 _# U, S. A" M+ P 1) Ackley : ?1 r! [- Q$ l 2) Alpine" A8 Y$ Q) [, Z# `" d
3) DeJong_f2 1 C- s: Y/ P8 z# H) F3 } 4) DeJong_f3% W" e" E% M6 f+ ~ [, f
5) DeJong_f4. R5 u+ v4 M3 W0 P8 u
6) Foxhole1 A ~0 w1 i& B& N1 m& ]% V
7) Griewank- w$ L" Z3 P# m( O* f
8) NDparabola$ b8 k6 e, B! e7 _3 `
9) Rastrigin; _% R) j0 x) ]2 S8 ?
10) Rosenbrock ; a* v6 |( S+ g; e6 D$ O11) Schaffer f67 ~5 P/ y9 f3 u( e2 @% D; `6 a
12) Schaffer f6 modified (5 f6 functions translated from each other) 7 n- J3 Y6 Y# C n I ?# W13) Tripod0 }2 ?7 Z1 U# B- c& l
+ l7 v) c1 o- A6 B" L* X* wDynamic test functions, minima/environment evolves over time (NOT iteration, though easily modifed to do so): 9 y) L+ q1 k! D8 c9 F( R% d14) f6_bubbles_dyn , o7 I! t) z4 }: \. I5 c/ q- \15) f6_linear_dyn W1 ]- W/ ]( M
16) f6_spiral_dyn B. U6 U, S3 c + s/ C; o5 B6 ?4 k# M' [" o9 B6 f7 t( H5 X# ?, h1 X
- o' F+ w. y6 y3 l2 k1 g- `** in 'nnet' (all these require Matlab's Neural Net toolbox)* k% K. _" ~' S; R/ q
- x, Y- c& R+ o" Y+ l 1) demoPSOnet - standalone demo to show neural net training ! E& ]8 d; b; G7 r 2) trainpso - the neural net toolbox plugin, set net.trainFcn to this ) x( I5 K, J' V7 W# ?3 A: a 3) pso_neteval - wrapper used by trainpso to call the main PSO optimizer, this is the cost function that PSO will optimize : h! X4 u9 V- c% m 4) goplotpso4net - default graphing plugin for trainpso, shows net architecture, relative weight indications, error, and PSO details on run 0 F- B8 s8 }! c- A - s$ W1 [$ R+ i- c1 r/ Y, W! w, L& o7 w# @3 F: Y: x1 a