這篇也勉強發到自己的專欄中,算是關於“數學的工程應用”的一篇。

最近在做pso最佳化rbf的時候,發現自己編的pso最佳化神經網路很不理想,於是從mathwork上面下載了pso工具箱,發現實在太好用了。下面簡單介紹一下pso工具箱的使用方法。

首先,下載地址為:

http://www。

mathworks。com/matlabcen

tral/fileexchange/25986-another-particle-swarm-toolbox

從論壇上看到的。

pso函式形式如下:

[xOpt,fval,exitflag,output,population,scores] = 。。。

pso(fitnessfcn,nvars,Aineq,bineq,Aeq,beq,LB,UB,nonlcon,options)

各種引數的意義:

輸出變數:

xOpt:最優解

fval:最優值

exitflag : 終止演算法的原因(達到迭代還是達到誤差要求,等等原因)

output : 輸出文字(描述了迭代了多少步,計算結果如何,滿足了什麼終止條件blabla)

population :最終的粒子們的位置

scores :最終的粒子對應的適應度

輸入變數

fitnessfcn : 最佳化的目標函式

nvars : 引數的個數(函式維度)

Aineq :約束

bineq :約束

Aeq :約束

beq :約束

LB : 引數取值的下限

UB: 引數取值的上限

nonlcon :非線性約束

options :重點!這是一個結構體,迭代步數,種群數量等等都可以透過這個選項設定。

關於options的設定:

可以直接按照結構體的定義方法,例如:options。PopulationSize=……

也可以透過psoptimset設定:

options=psoptimset(……),這個的話有MATLAB官方的介紹,所以不詳細介紹。

pso工具箱裡面的psoptimset與matlab原來自帶的psoptimset函式重複,建議取消自帶psoptimset函式,或者,吧pso工具箱裡面psoptimset函數里面的預設引數設定弄出來,事先定義options的各個要素:

% Default options

options。CognitiveAttraction = 0。5 ;

options。ConstrBoundary = ‘penalize’ ;

options。AccelerationFcn = @psoiterate ;

options。DemoMode = ‘off’ ;

options。Display = ‘final’ ;

options。FitnessLimit = -inf ;

options。Generations = 200 ;

options。HybridFcn = [] ;

options。InitialPopulation = [] ;

options。InitialVelocities = [] ;

options。KnownMin = [] ;

options。OutputFcns = {} ;

options。PlotFcns = {} ;

options。PlotInterval = 1 ;

options。PopInitRange = [0;1] ;

options。PopulationSize = 40 ;

options。PopulationType = ‘doubleVector’ ;

options。SocialAttraction = 1。25 ;

options。StallGenLimit = 50 ;

options。StallTimeLimit = Inf ;

options。TimeLimit = Inf ;

options。TolCon = 1e-6 ;

options。TolFun = 1e-6 ;

options。UseParallel = ‘never’ ;

options。Vectorized = ‘off’ ;

options。VelocityLimit = [] ;

以上就是pso工具箱的使用方法。個人感覺比我自己編的執行速度更快,並且收斂的更快。

最近發現陸陸續續有人收藏這篇文章,還有的就裡面的程式問題來私聊我。非常感謝大家的關注,如果覺得有幫助的話,請多點贊,點贊是精神支援,也是幫助文章得到更大的關注度。