📄 ant_pls.m
字号:
% 主程序,用蚁群-偏最小二乘算法,实现变量筛选
%作者:吴雨前
%联系:yqwu1983@yahoo.com.cn
clc
clear
% Ant Colony Algorithm -PLA For variable selection
%
% X N X P
% Y N X 1
%X=[];
%Y=[];
X=[-2.53149 -0.41256 -6.77561 -1.01659 -0.64374 0.89441 -0.41266 0.68460 -0.90310 0.68990
-1.21776 -0.65189 -6.40118 -0.41634 -0.11887 0.25217 0.32731 -0.28840 -0.80573 -0.05820
-0.74542 -0.24601 -6.59393 0.54129 -0.47573 0.71970 -0.30636 0.44332 -0.01651 -0.32426
0.25095 -0.78851 -6.11089 0.21810 0.23954 -0.23516 0.93342 -1.01741 -0.56790 -0.74220
0.29569 0.70866 -5.19883 1.02243 -3.64192 0.50571 -0.49753 0.91110 0.64913 -0.88996
6.82799 0.36621 -4.69141 -1.43225 2.38645 -3.60612 -0.33665 -0.18797 0.97841 1.71315
1.48817 0.49672 -4.61274 1.06960 -3.07155 -0.55702 0.30572 -0.35100 0.23614 -1.37069
-2.49320 -1.17858 1.16616 -0.19692 3.31043 -0.30217 0.20636 0.00686 0.19997 0.55371
-2.18857 -0.65093 1.30776 0.39765 3.15866 -0.49188 -0.51148 0.31691 0.42967 0.47876
-0.42621 -0.74840 1.90942 0.47937 4.18196 -1.57382 0.29776 1.35266 -0.68697 0.98578
-0.93404 -0.95380 0.58946 -0.96728 2.12174 4.27361 -0.23938 -0.73108 0.75832 0.57055
-1.23377 -0.17068 2.82617 0.42938 -0.46165 -0.66537 -0.23771 0.52962 0.75549 0.11571
3.91433 0.44287 3.57892 -0.27585 0.09022 3.59127 0.45372 0.44177 -0.81174 0.88457
1.02244 -0.10615 2.94169 1.15330 -0.77087 1.24919 0.69636 0.44324 1.88238 -0.23881
3.05449 0.34061 3.09991 0.03058 -0.49419 4.04999 -0.43206 -0.27459 -0.51105 -0.02843
1.28839 0.28232 3.98786 1.36906 0.79406 -1.24866 -0.54278 -0.14673 -1.10906 -0.56701
-3.37873 3.82846 1.02518 0.33085 -1.86641 -0.61436 0.20761 -0.65713 -0.08527 3.56941
-0.05980 -3.08174 5.96538 -0.38281 -7.80811 -2.05111 -0.17008 -0.44587 -0.26229 1.51322
-1.51599 0.56901 3.31901 -1.84318 -1.02288 -0.91279 0.85845 0.69580 0.43677 -1.43314
1.24051 1.43806 4.61560 -0.47728 0.06867 -1.64430 0.01906 0.23455 -1.26274 -2.19770
-2.18151 1.17880 2.25204 -1.33946 0.02619 -0.42329 -0.64065 -0.69798 0.63073 -2.64911
-0.47648 -0.66247 1.80004 1.30635 3.99801 -1.21000 0.02156 -1.26228 0.06537 -0.57524
];
Y=[3.210000
3.170000
3.960000
3.330000
4.770000
4.700000
4.660000
3.260000
4.090000
4.130000
3.250000
4.470000
4.440000
4.720000
4.550000
4.920000
4.620000
4.350000
3.850000
4.920000
4.280000
4.100000
];
%初始化
M=size(X,2);
%蚂蚁数量
maxant=2000;
%PLS主成份数
A=2;
%选择变量数目
K=8;
%原始变量权重
W=ones(1,M)/100;
%信息素挥发速率
luo=0.0;
%常数项
deltaW=0.1;
%全局R^2
CRS=zeros(maxant,1);
%最优R^2
BestRS=0;
%全局选择的变量
CSV=zeros(maxant,K);
%最优选择变量
BestSV=zeros(1,K);
for antnum=1:maxant
%选择概率初始化
p=zeros(1,M);
p=W./sum(W);
%初始化选择变量
SV=zeros(1,K);
i=1;
while i<=K
R=rand;
psum=0;
for j=1:M
psum=psum+p(1,j);
if(psum>R)
if(find(SV~=j))
SV(1,i)=j;
i=i+1;
break;
end
end
end
end
[RS]=wuantplsvsf(X,Y,SV,A);
CRS(antnum,1)=RS;
CSV(antnum,:)=SV;
if(RS>BestRS)
BestRS=RS;
BestSV=SV;
end
L=(10e4-1)/(10^(5*RS)-1);
W=(1-luo)*W + deltaW/L;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -