📄 yichuansufa.m
字号:
tic
p1=0.1; %复制概率
p2=0.8; %初始交叉概率
p3=0.1; %初始变异概率
quanyangben=[841.49
826.89
831.91
850.8
866.25
870.65
859.4
857.76
836.46
837.8
888.26
860.65
881.65
878.53
872.71
867.87
855.94
882.78
882.52
868.8
873.25
889.16
864.57
858.26
875.1
872.77
872.79
874.19
868.03
868.68
856.74
864.69
841.3
856.7
873.61
866.74
838.44
830.11
826.01
813.27
797.25
801.14
818.31
789.65
789.09
814.03
826.2
838.38
837.68
831.04
809.13
802.49
812.59
813.72
833.96
820.45
817.64
818.75
804.15
829.71
845.73
839.64
830.7
823.74
816.39
799.27
806.59
784.86
749.13
695
715.47
729.2
742.33
759.3
779.38
793.46
779.81
797.46
793.32
784.57
817.8
825.42
794.63
805.63
801.07
786.51
790.59
825.23
813.9
827.15
830.37
805.01
794.65
800.47
828.65
843.87
815.6
812.72
815.18
793.06
790.29
823.36
828.11
806.34
811.63
832.25
809.86
801.05
830
812.1
816.8
820.58
818.21
798.06
817.83
839.15
845.2
850.69
838.88
836.98
851.11
817.06
790.21
799.27
833.16
836.26
843.95
822.15
829.43
844.04
843.29
861.96
871.36
837.23
840.3
827.82
845.12
834.11
849
857.79
865.3
848.02
837.54
877.76
877.78
869.32
871.68
835.68
824.55
816.48
841.97
848.34
850.97
851.75
849.84
835.48
775.8
825.55
849.49
847.28
794.79
800.98
813.36
811.9
875.47
870.37
822.36
852.78
869.77
853.26
832.51
863.76
872.89
885.52
893.61
889.38
856.98
859.92
886.34
908.53
930.93
917.51
885.71
879.33
864.59
885.1
905.9
909.56
873.9
873.07
866.43
850.34
869.99
864.38
881.66
857.3
862.66
859.78
869.65
886.36
876.11
855.07
826.41
884.69
860.33
857.09
883.43
883.02
877.5
866.77
860.19
856.64
857.04
862.48
870.71
869.96
869.22];
chi=size(quanyangben,1);
for i=1:chi
if mod(i,7)==1
B1(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
if mod(i,7)==2
B2(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
if mod(i,7)==3
B3(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
if mod(i,7)==4
B4(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
if mod(i,7)==5
B5(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
if mod(i,7)==6
B6(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
if mod(i,7)==0
B7(fix((i-1)/7)+1,:)=quanyangben(i,:);
end
end
xingqi=[B1 B2 B3 B4 B5 B6 B7];
%下面把数据归一化,原来的元素x换成y=(x-min)*(0.9-0.1)/(max-min)+0.1,以使值在[0.1,0.9]之间,最后再把y换回
guiyihua=(xingqi-min(min(xingqi)).*ones(chi/7,7)).*(0.9-0.1)./(max(max(xingqi))-min(min(xingqi)))+0.1;
%下面取bb111每一行的第一个数相当于星期一,mm个一组作为一个样本,共取c个样本,%,(一个样本有6个分量,数是已经规一化的数据,在[0.1,0.9]之间).
c=6; %用于训练的样本个数
%下面设置神经网络的参数
mm=6; %输入节点数
nn=1; %输出节点数
k1=4; %隐层节点数
c22=7; %检验样本个数
a0=1; % a0表示用guiyihua的哪一列,即星期几
for j=1:c+6
xunlianyangben(:,j)=guiyihua(j:j+c-1,a0);
end
xunlianyangben; %存放训练样本,存放训练样本mm行c+6列,一列为一个样本,前6列作为训练时用,检验网络时,,
for i0=1:c22
jianyanyangben(:,i0)=guiyihua(c+1+i0-1:c+1+i0-1+c-1,a0);
end
jianyanyangben; %存放检验样本,对应以 p 的1-6列作为训练样本的检验样本是p20的第一列,即bb111的7-12行,目标输出第13行,
%检验第二个样本即p20的第二列时, 用p 的2-7列作为训练样本,依次类推。
%下面取初始权值和阈值在[a1,b1]之间,区间长为b1-a1,并把所有权值和阈值放到一行成为一条染色体
%下面产生这样的染色体pp个,放入一个pp行(mm*k1+k1*nn)列的矩阵ww
wo=(k1+nn+mm*k1+k1*nn); %wo=24
x0=0; %隐层节点的增加个数
k11=k1+x0; %加上增量后的隐层节点数
x00=x0*(mm+x0+x0); %每增加一个隐层节点,染色体长度会增加x00个数,mm是增加的输入到隐层权值,x0是增加的隐层到输出的权值,x0是增加的隐层阈值
getichangdu=wo+x00; %增加隐层节点后的染色体长度
pp=30;%染色体数目
zuojie=0.001;
youjie=0.999;
jiechang=youjie-zuojie;
ll=0; %记录运行代数
M=10;;%最大遗传代数
TL=[];%用于变异的禁忌表,
du=100;%用于变异的禁忌表长度
NS=200;%用于变异的一个邻域中的元素个数
%下面训练神经网络
for i0=2:2 %i0的循环是控制检验第几个样本的
daishu=[];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -