MATLAB中,在得到神经网络函数后,如何用遗传算法求得该函数的最小值?
MATLAB2009a命令流:
ST=[5.22 4.02 11.88 1350.00 412.31
5.80 7.96 38.07 3602.00 376.83
0.81 8.31 17.73 1476.00 830.06
5.85 5.27 41.19 444.00 975.70
4.05 1.58 43.32 3122.00 1493.32
0.62 6.54 46.86 1558.00 745.65
1.78 4.58 28.98 966.00 751.00
3.50 7.47 6.96 1616.00 343.51
6.13 3.25 15.69 386.00 1000.00
6.18 7.22 56.76 528.00 935.95
1.01 5.21 11.07 3770.00 591.61
6.21 3.67 51.51 3826.00 2137.76
6.13 2.13 34.26 2300.00 849.12
3.11 1.58 61.74 238.00 1144.55
5.12 4.88 6.63 938.00 611.56
0.91 8.15 28.50 1412.00 777.82
2.70 8.07 8.34 3286.00 624.50
5.86 7.20 59.67 60.00 1300.00
5.07 2.53 2.22 172.00 1216.55
6.14 7.23 48.45 676.00 822.19
4.20 2.74 51.00 2596.00 937.55
0.23 7.31 54.09 2928.00 550.45
5.44 1.82 6.99 2592.00 987.93
5.98 6.46 25.92 1804.00 170.00
4.35 7.69 17.55 2188.00 245.76 ];
for m = 1:25
STAR(m,1:5)=ST(m,1:5);
end
%%对25组数据进行RBF拟合
p1=STAR(:,1:4);%训练样本的输入单元
t1=STAR(:,5);%训练样本的输出单元
P=p1';T=t1';%转置
[p,pp] = mapminmax(P);%数据归一化
[t,tt] = mapminmax(T);%数据归一化
spread=1;
goal=1e-5;
df=1;
mn=40;
net=newrb(p,t,goal,spread,mn,df);
%%%%%%%%%%%%%%%%%遗传算法
fit = @(x) sim(net,x);
options = gaoptimset('Generations',100,'PopulationSize',20,...
'CrossoverFraction', 0.8, 'ParetoFraction', 0.5);
[x fval] = ga(fit,4, [], [], [], [], [-1;-1;-1;-1], [1;1;1;1]);
x;
在最后遗传算法时总是说:
??? Error using ==> network.sim at 178
Inputs are incorrectly sized for network.
Matrix must have 4 rows.
以及一大堆错误了
求大侠们帮帮忙
|