資源簡介
局部粒子群算法程序,可運行無錯誤,使用的函數是單峰值單數,函數可自行變換。
代碼片段和文件信息
function[ResultOnLineOffLineMinMaxMeanAdaptBestofStep]=LocalPsoProcessByCricle(SwarmSizeParticleSizeParticleScopeInitFuncStepFindFuncAdaptFuncIsStepIsDrawLoopCountIsPlot)
if?nargin<4
error(‘輸入的參數個數錯誤‘)
end
[rowcolum]=size(ParticleSize);
if?row<1||colum<1
error(‘輸入的參數個數太少,不能保證以后的運行‘);
end
[rowcolum]=size(ParticleSize);
if?row>1||colum>1
error(‘輸入的粒子維數錯誤,是一個1行1列的數據‘);
end
[rowcolum]=size(ParticleScope);
if?row~=ParticleSize||colum~=2
error(‘輸入的粒子的維數范圍錯誤‘);
end
if?nargin<7
IsPlot=1;
LoopCount=100;
IsStep=0;
IsDraw=0;
end
if?nargin<8
IsPlot=1;
LoopCount=100;
IsDraw=0;
end
if?nargin<9
IsPlot=1;
LoopCount=100;
end
if?nargin<10
IsPlot=1;
end
if?IsDraw~=0
figure
clf
DrawObjGraphic(ParticleSizeParticleScopeAdaptFunc);
view(090);
end
[ParSwarmOptSwarm]=InitFunc(SwarmSizeParticleSizeParticleScopeAdaptFunc);
if?IsDraw~=0
if?1==ParticleSize
for?ParSwarmRow=1:SwarmSize
plot([ParSwarm(ParSwarmRow1)ParSwarm(ParSwarmRow1)][ParSwarm(ParSwarmRow3)0]‘r**‘‘markersize‘8);
text(ParSwarm(ParSwarmRow1)ParSwarm(ParSwarmRow3)num2str(ParSwarmRow));
end
end
if?2==ParticleSize
for?ParSwarmRow=1:SwarmSize
hold?on
stem3(ParSwarm(ParSwarmRow1)ParSwarm(ParSwarmRow2)ParSwarm(ParSwarmRow5)‘white*‘‘markersize‘8);
end
end
end
if?IsStep~=0
disp(‘開始迭代,按任意鍵:‘)
pause
end
for?k=1:LoopCount
disp(‘************************************‘)
TempStr=sprintf(‘第%g次迭代‘k);
disp(TempStr);
disp(‘************************************‘
評論
共有 條評論