資源簡介
帶有約束條件的粒子群算法代碼pso.m
代碼片段和文件信息
%?改進的快速粒子群優化算法?(APSO)
function?apso
clear?all;
Lb=[0.9?0.9?0?0.75?0?0];?%下邊界
Ub=[1?1?1?1?12?2500];?%上邊界
%?默認參數
para=[25?250?0.95];?%[粒子數,迭代次數,gama參數]
%?APSO?優化求解函數
[gbestfmin]=pso_mincon(@cost@constraintLbUbpara);
%?輸出結果
Bestsolution=gbest?%?全局最優個體
fmin
%%?目標函數
function?f=cost(x)
%s=[0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0];%內燃機工作狀態
%a=[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1];%制冷劑工作12小時
%c=[0.524;0.524;0.524;0.524;0.524;0.524;0.524;0.524;0.875;0.875;0.875;1.217;1.217;1.217;1.217;1.217;0.875;0.875;0.875;1.217;1.217;1.217;0.875;0.875];%電價
f=x(1)*0.059*700+x(2)*0.039*4000*5+x(3)*0.0013*13800+x(4)*0.013*1200+x(5)*1000*0.43+x(6)*0.5;
%?非線性約束
function?[ggeq]=constraint(x)
%?不等式限制條件
%Pd=xlsread(‘春夏負荷.xlsx‘‘sheet1‘‘C1:C24‘);
%Qh=xlsread(‘春夏負荷.xlsx‘‘sheet1‘‘B1:B24‘);
%Cload=xlsread(‘春夏負荷.xlsx‘‘sheet1‘‘A1:A24‘);
%?如果沒有等式約束,則置geq=[];
Pd=9.95;
Qh=17.06;
Cload=1.8;
%Pd=xlsread(‘春夏負荷.xlsx‘‘sheet1‘‘C1:C24‘);
%Qh=xlsread(‘春夏負荷.xlsx‘‘sheet1‘‘B1:B24‘);
%Cload=xlsread(‘春夏負荷.xlsx‘‘sheet1‘‘A1:A24‘);
%?如果沒有等式約束,則置geq=[];
g(1)=x(5)+x(1)*0.7+x(2)*4-Pd*1.0001-3.94*x(3);
g(2)=Pd*0.9999-(x(5)+x(1)*0.7+x(2)*4-3.94*x(3));
g(3)=x(1)+x(2)*4+0.8*x(6)/120-x(4)-Qh*1.0001;
g(4)=0.9999*Qh-(x(1)+x(2)*4+0.8*x(6)/120-x(4));
g(5)=1.2*x(4)+13.8*x(3)-Cload*1.0001;
g(6)=Cload*0.9999-(1.2*x(4)+13.8*x(3));
%if?x(1)<0.5?x(1)=0;elsex(1)=1;end
geq=[];
%%??APSO?Solver
function?[gbestfbest]=pso_mincon(fhandlefnonlinLbUbpara)
if?nargin<=6
????para=[25?250?0.95];
end
n=para(1);%?粒子種群大小
time=para(2);?%時間步長,迭代次數
gamma=para(3);?%gama參數
?scale=abs(Ub-Lb);?%取值區間
%?驗證約束條件是否合乎條件
if?abs(length(Lb)-length(Ub))>0
????disp(‘Constraints?must?have?equal?size‘);
????return
end
??alpha=0.2;?%?alpha=[01]粒子隨機衰減因子
??beta=0.5;??%?收斂速度(0->1)=(slow->fast);
%?初始化粒子群
best=init_pso(nLbUb);
評論
共有 條評論