⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init1.m

📁 求解离散问题的pso aco 算法
💻 M
字号:
i=0;
j=0;
k=0;
y=0;
e=0;
w=[];
v=0;
b=0;
sv=0;
ta=0.25;%%ACO中rmse的判定值,当小于该值时结束循环
tb=0.95;%%ACO中OCA得判定值,当大于该值结束循环
train=[];
dm=10000;
a=0;
k=0;
z=0;
feature=[];
rand20=zeros(20,15);%%ACO算法中随机的20组解
best5=zeros(5,15);%%20组解中最优的5组解
train=[];
d=zeros(690,2);%%存储样本的类别,第一列为实际值,第二列为估计值
rmse=zeros(20,10);%%第一列为离差值,第二列为粒子(蚂蚁)的编号,第三列为估计值与实际值都为1类的样本个数,第四列
%%列为实际值为第一类估计值为第二类的样本数,第五列为实际值为第二类估计值为第一类的样本数,第六列为实际值与估计值
%%都为第二类的样本数;第七、第八列分别为第一类和第二类数据的正确分类比例;第十列为整体正确分类OCA的值
pso_rmse=zeros(20,10);%%同上,每个粒子都有以上十项指标
pso=zeros(20,16);
pbest=zeros(20,15);
pbest_rmse=zeros(20,10);%%同上,每个粒子都有以上十项指标
gbest=zeros(1,15);
gbest_rmse=zeros(1,10);%%同上,每个粒子都有以上十项指标

%parameterd of PSO
wmax=0.9;
wmin=0.4;
vmax=6;
c1=2.0;
c2=2.0;
ps=20; %particles
tmax=500; %iterations

n=[];
t=[];
p=[];
p1=[];
v1=zeros(ps,15);
rmse=zeros(15,10);

iteration=50;
x=zeros(690,2);
feature=zeros(690,16); %data set add label of class
MM=zeros(6,2);
for i=1:6
    MM(i,2)=1e10;
end
for i=1:690
    if strcmp(textdata(i,1),'a')
        feature(i,1)=1;
    end
    if strcmp(textdata(i,1),'b')
        feature(i,1)=2;
    end
    if strcmp(textdata(i,1),'?')
        feature(i,1)=floor((feature(i-1,1)+feature(i+1,1))/2); % an integer
    end
    if strcmp(textdata(i,4),'u')
        feature(i,4)=1;
    end
    if strcmp(textdata(i,4),'y')
        feature(i,4)=0.66;
    end
    if strcmp(textdata(i,4),'l')
        feature(i,4)=0.33;
    end
    if strcmp(textdata(i,4),'t')
        feature(i,4)=0;
    end
    if strcmp(textdata(i,4),'?')
        feature(i,4)=(feature(i-1,3)+feature(i+1,3))/2;
    end
    if strcmp(textdata(i,5),'g')
        feature(i,5)=1;
    end
    if strcmp(textdata(i,5),'p')
        feature(i,5)=0.5;
    end
    if strcmp(textdata(i,5),'gg')
        feature(i,5)=0;
    end
    if strcmp(textdata(i,5),'?')
        feature(i,5)=(feature(i-1,5)+feature(i+1,5))/2;
    end
    if strcmp(textdata(i,6),'c')
        feature(i,6)=1;
    end
     if strcmp(textdata(i,6),'d')
        feature(i,6)=0.93;
     end
    if strcmp(textdata(i,6),'cc')
        feature(i,6)=0.86;
    end
     if strcmp(textdata(i,6),'i')
        feature(i,6)=0.79;
     end
    if strcmp(textdata(i,6),'j')
        feature(i,6)=0.72;
    end
     if strcmp(textdata(i,6),'k')
        feature(i,6)=0.64;
     end
     if strcmp(textdata(i,6),'m')
        feature(i,6)=0.56;
     end
     if strcmp(textdata(i,6),'r')
        feature(i,6)=0.48;
     end
     if strcmp(textdata(i,6),'q')
        feature(i,6)=0.40;
     end
     if strcmp(textdata(i,6),'w')
        feature(i,6)=0.32;
     end
     if strcmp(textdata(i,6),'x')
        feature(i,6)=0.24;
     end
     if strcmp(textdata(i,6),'e')
        feature(i,6)=0.16;
     end
     if strcmp(textdata(i,6),'aa')
        feature(i,6)=0.08;
     end
     if strcmp(textdata(i,6),'ff')
        feature(i,6)=0;
     end
     if strcmp(textdata(i,6),'?')
        feature(i,6)=(feature(i-1,6)+feature(i+1,6))/2;
     end
     if strcmp(textdata(i,7),'v')
        feature(i,7)=1;
     end
     if strcmp(textdata(i,7),'h')
        feature(i,7)=0.875;
     end
     if strcmp(textdata(i,7),'bb')
        feature(i,7)=0.75;
     end
     if strcmp(textdata(i,7),'j')
        feature(i,7)=0.625;
     end
     if strcmp(textdata(i,7),'n')
        feature(i,7)=0.5;
     end
     if strcmp(textdata(i,7),'z')
        feature(i,7)=0.375;
     end
     if strcmp(textdata(i,7),'dd')
        feature(i,7)=0.25;
     end
     if strcmp(textdata(i,7),'ff')
        feature(i,7)=0.125;
     end
     if strcmp(textdata(i,7),'o')
        feature(i,7)=0;
     end
     if strcmp(textdata(i,7),'?')
        feature(i,7)=(feature(i-1,7)+feature(i+1,7))/2;
     end
     if strcmp(textdata(i,9),'t')
        feature(i,9)=1;
     end
     if strcmp(textdata(i,9),'f')
        feature(i,9)=0;
     end
     if strcmp(textdata(i,9),'?')
        feature(i,9)=(feature(i-1,9)+feature(i+1,9))/2;
     end
     if strcmp(textdata(i,10),'t')
        feature(i,10)=1;
     end
     if strcmp(textdata(i,10),'f')
        feature(i,10)=0;
     end
     if strcmp(textdata(i,10),'?')
        feature(i,10)=(feature(i-1,10)+feature(i+1,10))/2;
     end
       if strcmp(textdata(i,12),'t')
        feature(i,12)=1;
     end
     if strcmp(textdata(i,12),'f')
        feature(i,12)=0;
     end
     if strcmp(textdata(i,12),'?')
        feature(i,12)=(feature(i-1,12)+feature(i+1,12))/2;
     end
       if strcmp(textdata(i,13),'g')
        feature(i,13)=1;
     end
     if strcmp(textdata(i,13),'p')
        feature(i,13)=0.5;
     end
     if strcmp(textdata(i,13),'s')
        feature(i,13)=0;
     end
     if strcmp(textdata(i,13),'?')
        feature(i,13)=(feature(i-1,13)+feature(i+1,13))/2;
     end
      if strcmp(textdata(i,16),'+') % label of class
        feature(i,16)=1;
     end
     if strcmp(textdata(i,16),'-')
        feature(i,16)=0;
     end
     if strcmp(textdata(i,16),'?')
        feature(i,16)=floor((feature(i-1,16)+feature(i+1,16))/2); % an integer
     end
end

for i=1:690
    if data(i,1)>MM(1,1)
        MM(1,1)=data(i,1);
    end
    if data(i,1)<MM(1,2)
        MM(1,2)=data(i,1);
    end
    if data(i,2)>MM(2,1)
        MM(2,1)=data(i,2);
    end
    if data(i,2)<MM(2,2)
        MM(2,2)=data(i,2);
    end
    if data(i,7)>MM(3,1)
        MM(3,1)=data(i,7);
    end
    if data(i,7)<MM(3,2)
        MM(3,2)=data(i,7);
    end
    if data(i,10)>MM(4,1)
        MM(4,1)=data(i,10);
    end
    if data(i,10)<MM(4,2)
        MM(4,2)=data(i,10);
    end
    if data(i,13)>MM(5,1)
        MM(5,1)=data(i,13);
    end
    if data(i,13)<MM(5,2)
        MM(5,2)=data(i,13);
    end
    if data(i,14)>MM(6,1)
        MM(6,1)=data(i,14);
    end
    if data(i,14)<MM(6,2)
        MM(6,2)=data(i,14);
    end
end
    
for i=1:690
    feature(i,2)=(data(i,1)-MM(1,2))/(MM(1,1)+MM(1,2));
    feature(i,3)=(data(i,2)-MM(2,2))/(MM(2,1)+MM(2,2));
    feature(i,8)=(data(i,7)-MM(3,2))/(MM(3,1)+MM(3,2));
    feature(i,11)=(data(i,10)-MM(4,2))/(MM(4,1)+MM(4,2));
    feature(i,14)=(data(i,13)-MM(5,2))/(MM(5,1)+MM(5,2));
    feature(i,15)=(data(i,14)-MM(6,2))/(MM(6,1)+MM(6,2));
end

for i=1:ps
        pbest_rmse(i,1)=100;
        pbest_rmse(i,10)=0;
        gbest_rmse(1,1)=100;
        gbest_rmse(1,10)=0;
end

for i=1:ps
    pso_rmse(i,1)=100;
    pso_rmse(i,2)=i;
    pso_rmse(i,10)=0;
end


for i=1:690
    if feature(i,1)==1
        train(1)=i;
        break;
    end
end
for i=1:690
    if feature(i,1)==2
        train(2)=i;
        break;
    end
end
for i=1:690
    for j=1:15
    if feature(i,j)>1e10
        feature(i,j)=(feature(i,j-1)+feature(i,j+1))/2
    end
    end
end


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -