: a6 i% d; a5 D5 i* BMay be distributed freely as long as none of the files are ) p- V- V' L& Rmodified. : P! `3 c0 Q$ o) z" t# X/ P5 o# y7 E" ~1 N+ t
Send suggestions to bkbirge@yahoo.com ! i0 j9 S7 j7 S q 5 z" J8 U- @1 M( z# kUpdates will be posted periodically at the Mathworks User 4 L+ Y- A. T( v" M
Contributed Files website (www.mathworks.com) under the ( {( y0 K _4 @* nOptimization category. * c0 A' a: E# i5 r! ]/ \- R3 A $ ]+ K( a( [0 o, N0 @To install:7 {3 a/ p0 a) J" Y1 u
Extract into any directory you want but make sure the matlab . d2 {% G4 |; @
path points to that directory and the subdirectories 5 y3 v6 ~* p0 x4 [5 y
'hiddenutils' and 'testfunctions'. 2 n! l* u5 X5 [1 Z: X
% a5 ]* u, D8 A% s
Enjoy! - Brian Birge `8 I) _4 e$ Q3 I, g& C6 y: p2 N- t4 U) ?
------------------------------------------------------------- 6 f* o V; ^9 }5 f1 L9 h-------------------------------------------------------------8 O+ L1 H. p* M/ J# X7 R. t8 [
3 j' J; {9 B. FINFO 1 q ~4 j5 O# K& }Quick start: just type ... out = pso_Trelea_vectorized('f6',2) - E# @9 ]1 r8 V: Q7 h
and watch it work! - [5 [3 i' p7 m3 z- s) Q7 l# c+ Q2 i3 n
This is a PSO toolbox implementing Common, Clerc 1", and * q2 K5 I# m) A B: }/ XTrelea types along with an alpha version of tracking changing # U1 L1 H4 H3 I& J' D8 d9 genvironments. It can search for min, max, or 'distance' of 2 c, c3 K% N9 T% K' }user developed cost function. Very easy to use and hack with 9 T: ]. P; {! \+ k+ Y4 x
reasonably good documentation (type help for any function and! m! M: n+ w" a. H9 L
it should tell you what you need) and will take advantage of 1 {9 E; G( ^8 g( dvectorized cost functions. It uses similar syntax to Matlab's; o* Y* g7 C! F/ L1 _$ e9 n
optimization toolbox. Includes a suite of static and dynamic 0 h& n: r8 R. |6 u* A: {
test functions. It also includes a dedicated PSO based neural 5 d C: P$ q: L2 i7 jnetwork trainer for use with Mathwork's neural network toolbox. 3 c3 a. |' f& f' b/ M# W8 b. o2 l$ q' t% {
Run 'DemoPSOBehavior' to explore the various functions, options, 6 ~; C( C: r" L- `6 b3 Qand visualizations. 2 g- r0 ~. [. _3 g* ~3 V9 F
- U$ p9 @/ y& ]Run 'demoPSOnet' to see a neural net trained with PSO ( l3 H3 B J8 M(requires neural net toolbox). 0 }: {/ @. o( _1 Y' \. R* H4 v9 ]% V* a6 m8 s- v
. J1 U9 n" C! A- D W+ dThis toolbox is in constant development and I welcome 2 e0 Z: j0 K7 g+ U. ]
suggestions. The main program 'pso_Trelea_vectorized.m' lists " J- x: Z5 X& ^% z/ V2 f4 B3 A' U
various papers you can look at in the comments. 6 E( f' ^9 K! p& p4 f6 W; S, b9 g; `4 c. ?& p8 |
Usage ideas: to find a global min/max, to optimize training of : Y/ `$ a% r3 ^neural nets, error topology change tracking, teaching PSO, ) @( G$ w5 x& W% L+ m% [. Vinvestigate Emergence, tune control systems/filters, paradigm % Y3 [/ X; g2 C6 r' F5 u% j
for multi-agent interaction, etc. 4 h7 o* |/ J/ T) Z5 C: d' A! m : u! X/ o% a8 c1 Z! ?/ H------------------------------------------------------------- 8 k$ {% Z+ Y" G, k-------------------------------------------------------------! `9 Y2 `) ~) n/ `( Z2 L
# u; j% z! C. f; q
+ ]; s; d; ^7 I# F) b- [Files included: 1 n* G7 V0 O, z, }; Z- k% N2 d : v' s: I7 F* M, c5 ~: `8 H& J' r2 D [1 v: |) z1 v3 j+ {
** in main directory: . p; R: U7 R( d: X# z* E& k0 B/ A/ K) x: g
0) ReadMe.txt - this file, duh2 _9 |6 z% ]: W3 P
1) A Particle Swarm Optimization (PSO) Primer.pdf - powerpoint converted to pdf presentation explaining the very basics of PSO # k1 e! H! C1 j, F: s/ t6 \3 F2) DemoPSOBehavior.m - demo script, useful to see how the pso main function is called ; k7 W4 |8 H6 m3) 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 lot 2 ]+ e" E4 K$ S, y1 S0 ~4) goplotpso.m - default plotting routine used by pso algorithm# m8 y- D5 k2 e x, h
5) pso_Trelea_vectorized.m - main PSO algorithm function, implements Common, Trelea 1&2, Clerc 1", and an alpha version of tracking environmental changes.1 }- f. Y( X8 f5 D4 H' {6 k
" \, z( w. a- m$ b! c* O/ {6 ]/ l( N
1 a) u1 S4 o# Z) |0 _
** in 'hiddenutils' ' ^4 F, p# ]4 u$ x$ y$ `( V! G3 q/ A5 v4 f. b3 D
1) 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 H" A( o; W& L, z. N. o
2) normmat.m - takes a matrix and reformats the data to fit between a new range, very flexible : x! e4 v8 h( O) N1 R3) linear_dyn, spiral_dyn.m - helpers for the dynamic test functions listed in the 'testfunctions' directory 1 }, m. `8 {9 I) N 7 a1 e( `1 U) A* `5 D ) d* O" g9 l+ c! Q$ [- a w/ Y1 t4 b: ~
** in 'testfunctions'6 {* l- O7 T2 s3 E' x5 V) }+ A1 ~
6 ]2 t$ E! }0 ^6 Y5 CA bunch of useful functions (mostly 2D) for testing. See help for each one for specifics. Here's a list of the names:* L0 v9 b! D( {* N1 {" K8 u) A$ f' b
3 ?2 E; B) x( Z; L
Static test functions, minima don't change w.r.t. time/iteration: , C v; z7 s. O* K* O3 V 1) Ackley . J# {8 q9 s; b0 U# E 2) Alpine / p) r4 N1 o" }( x 3) DeJong_f2 2 r0 [% h* i) E$ `7 T$ J! @ 4) DeJong_f3/ ]: t6 w: Q& K6 }+ {
5) DeJong_f4 R/ D' V% X6 m. {$ V
6) Foxhole' i3 h+ F0 \0 F. B r1 q
7) Griewank # O' u9 J6 V9 D% d$ ?" J; i 8) NDparabola # Y d' q3 r1 z* ] 9) Rastrigin/ r3 n$ C2 W+ T+ Z% e
10) Rosenbrock ) u# {8 [0 P) @* i J/ J- U11) Schaffer f6 ! s" J% X1 k. o2 T; }# X/ X/ \12) Schaffer f6 modified (5 f6 functions translated from each other) ' e+ p3 Y: m7 s! V13) Tripod1 q z5 p$ w: V& [2 @3 T
! P/ `2 [( f( m% z$ |
Dynamic test functions, minima/environment evolves over time (NOT iteration, though easily modifed to do so): ' w6 j% w1 r' l5 p6 l0 u, N1 T5 X14) f6_bubbles_dyn # c" A" i' a3 Y% Q15) f6_linear_dyn* d$ }1 o) Z$ y
16) f6_spiral_dyn / [1 ` n; ^ K1 @7 q) Y) j4 E& \* _( V+ l) K3 z
7 ^- K7 S1 ^% |9 p6 d; V4 t: z( l
' }5 F; \; ^# a% E- c** in 'nnet' (all these require Matlab's Neural Net toolbox) & ?9 x1 K' k# q# l! O 0 }: V& a. C; s" b- n% L 1) demoPSOnet - standalone demo to show neural net training ; N, `- R9 q9 l$ M7 N( m9 { 2) trainpso - the neural net toolbox plugin, set net.trainFcn to this0 n B- T' @6 ^( b# T0 i4 s/ ?
3) pso_neteval - wrapper used by trainpso to call the main PSO optimizer, this is the cost function that PSO will optimize" J) p& o+ P" i0 c& M; [0 y
4) goplotpso4net - default graphing plugin for trainpso, shows net architecture, relative weight indications, error, and PSO details on run8 L' a, P* o( ?% i! {, L* Z
. t7 x4 Y, [; u& I
6 R: [! @- W2 Y, [8 L" s. `