資源簡介
改進后的離散粒子群算法,支持多種尋優解決方案
代碼片段和文件信息
%初始化
clear?all;
clc;
tic;?????????%計時開始
c1=2;????????%學習因子1
c2=2.1;??????%學習因子2
wcmax=0.9;????????%慣性權重
wcmin=0.4;
N=100;?????????%種群大小
D=10;
genMax=50;?????%最大迭代次數
C=1.3;????????
A1=1.6;???????
A2=1.5;???????
R1=0.9;????????%(OFC)技術
R2=0.85;???????%(PC)技術
Ld1=0.25;??????%能量損失1
Ld2=0.21;??????%能量損失2
P=[200????250????150???600???????500????250????300?????400??????200??????250];
%F?=[1??????1??????1?????1?????????1?????0.5????0.5?????0.5???????0.7?????0.7];
F?=[1.186??1.186??1.186?1.186???1.186??0.434???0.434???0.434?????0.78????0.78];
%映射
for?i=1:N????????????????????????%初始化數據
????for?j=1:D
????????x=3*rand();???????
????????if?(x>0)&(x<1)
????????????X(ij)=0;
????????elseif?(x>=1)&(x<2)
????????????X(ij)=1;
????????elseif?(x>=2)&(x<3)
????????????X(ij)=2;
????????end
????end?
end
for?i=1:N
????for?j=1:D
????????V(ij)=2*rand()-1;
????end
end
?
?for?i=1:N?
?????for?j=1:D
?????????ss=rand();
?????????if?X(i2)==1
????????????if?ss>=0.5
???????????????X(i2)=0;
????????????else
???????????????X(i2)=2;
????????????end????????????%對初始解進行可行性篩選
?????????elseif?X(i6)==1
????????????if?ss>=0.5
???????????????X(i6)=0;
????????????else
???????????????X(i6)=2;
????????????end????????????%對初始解進行可行性篩選
?????????end
?????end
?end
temp=zeros(N1);??????????
for?i=1:N
????for?j=1:D
????????if?X(ij)==0
???????????temp(i)=temp(i)+(C-1)*P(j);??????%??????成本約束
????????elseif?X(ij)==1
???????????temp(i)=temp(i)+C*P(j)-A1*P(j);??%?????成本約束
????????elseif?X(ij)==2
???????????temp(i)=temp(i)+C*P(j)-A2*P(j);??%成本約束
????????end
????end
end???????????????????????????????????????????????%整體50判定
????for?i=1:N
????????while?(temp(i)<0)
???????????for?j=1:D
???????????????x=3*rand();???????????????%隨機產生一個數
???????????????if?(x>0)&(x<1)
??????????????????X(ij)=0;??????????????%粒子位置矢量在0-1上選擇不配置碳捕集技術
???????????????elseif?(x>=1)&(x<2)
??????????????????X(ij)=1;??????????????%粒子位置矢量在1-2上選擇第1種碳捕集技術
???????????????elseif?(x>=2)&(x<3)
?????????????????X(ij)=2;???????????????%粒子位置矢量在2-3上選擇第2種碳捕集技術
???????????????end
???????????end
???????????for?j=1:D?????????????????????
???????????????ss=rand();
???????????????if?X(i2)==1
??????????????????if?ss>=0.5
?????????????????????X(i2)=0;
??????????????????else
?????????????????????X(i2)=2;
??????????????????end????????????
??????????????elseif?X(i6)==1
??????????????????if?ss>=0.5
?????????????????????X(i6)=0;
??????????????????else
?????????????????????X(i6)=2;
??????????????????end????
??????????????end
???????????end
???????????temp(i)=0;?????????????????????%約束條件清0
???????????for?j=1:D
???????????????if?X(ij)==0
???????????????????temp(i)=temp(i)+(C-1)*P(j);
???????????????elseif?X(ij)==1
???????????????????temp(i)=temp(i)+C*P(j)-A1*P(j);
???????????????elseif?X(ij)==2
???????????????????temp(i)=temp(i)+C*P(j)-A2*P(j);
???????????????end
???????????end
????????end
????end????????????????????????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????78??2014-06-02?10:43??PSO源程序\Unti
?????文件???????10252??2014-06-02?10:43??PSO源程序\test.m
?????目錄???????????0??2014-06-02?10:44??PSO源程序\
評論
共有 條評論