MATLAB中PSO工具箱使用介紹
這篇也勉強發到自己的專欄中,算是關於“數學的工程應用”的一篇。
最近在做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工具箱的使用方法。個人感覺比我自己編的執行速度更快,並且收斂的更快。
最近發現陸陸續續有人收藏這篇文章,還有的就裡面的程式問題來私聊我。非常感謝大家的關注,如果覺得有幫助的話,請多點贊,點贊是精神支援,也是幫助文章得到更大的關注度。