展会信息港展会大全

遗传算法优化BP权值和阈值的问题,非常感谢,论文提交在即,真的
来源:互联网   发布日期:2011-10-01 17:44:29   浏览:5367次  

导读:遗传算法优化BP权值和阈值的问题,非常感谢,论文提交在即,真的很急! ,MATLAB技术论坛...

我用书童上传的遗传算法优化BP权值和阈值的程序(很抱歉,因为我发不了链接,所以在下面把程序发上来了,抱歉),将数据换为我自己的数据,但是有些地方不太明白该如何替换。我是用遗传算法优化BP神经网络来对90多个水源地的监测数据进行水质评价,评价选取了10个输入指标(溶解氧,高锰酸盐指数等10个),输出为 1,2,3,4,5 共5类水质(即输出为5)。


如下为书童的程序,我不太明白的地方用红色标出来了。



%% 清除环境变量
clear all
clc
warning off
nntwarn off
%% 声明全局变量
global p     % 训练集输入数据
global t     % 训练集输出数据
global R     % 输入神经元个数
global S2    % 输出神经元个数
global S1    % 隐层神经元个数
global S     % 编码长度
S1=25;        请问这个是怎么得出来的呢?

%% 导入数据
% 训练数据
day=[0.9363 -0.9698 -0.9907 -0.9562 -0.9507 0.9363 -0.9164 0.9045 0.8918;
-0.9358 -0.9751 0.9821 -0.9544 -0.9469 0.9426 0.9182 0.8967 -0.8841;
0.9516 -0.9781 -0.9744 -0.9525 0.9509 0.9368 0.9082 -0.8903 -0.8665;
-0.9480 -0.9795 -0.9796 -0.9507 0.9509 0.9300 -0.9075 -0.8902 -0.8671;
-0.9433 -0.9923 -0.9812 -0.9596 -0.9406 -0.9230 0.9071 -0.8864 -0.8547;
-0.9424 1.0000 -0.9800 -0.9514 0.9349 -0.9089 0.9206 -0.8780 -0.8414;
0.9355 -0.9878 -0.9737 -0.9499 0.9337 0.9084 -0.9072 -0.8745 -0.8332];
% 数据归一化
[dayn,minday,maxday]=premnmx(day);
% 输入和输出样本
p=dayn(:,1:8);      请问dayn是个什么函数啊? 里面的1,8,2,9分别代表什么?
t=dayn(:,2:9);

% 测试数据
k=[0.9435 0.9796 -0.9706 -0.9552 -0.9298 -0.9130 -0.9003 0.8708 0.8234;
    -0.9358 -0.9751 0.9821 -0.9544 -0.9469 0.9426 0.9182 0.8967 -0.8841;
0.9516 -0.9781 -0.9744 -0.9525 0.9509 0.9368 0.9082 -0.8903 -0.8665;
-0.9480 -0.9795 -0.9796 -0.9507 0.9509 0.9300 -0.9075 -0.8902 -0.8671;
-0.9433 -0.9923 -0.9812 -0.9596 -0.9406 -0.9230 0.9071 -0.8864 -0.8547;
-0.9424 1.0000 -0.9800 -0.9514 0.9349 -0.9089 0.9206 -0.8780 -0.8414;
     -0.9496 -0.9778 -0.9693 -0.9536 -0.9352 -0.9111 -0.9076 0.8797 -0.8227];

我是用遗传优化bp来进行水质评价,就是把地表水环境质量标准中的5个级别的标准用做训练,但是就没有测试数据了,可否用各标准的中位值用作测试数据, 如果没有测试数据怎么改呢?

% 数据归一化
kn=tramnmx(k,minday,maxday);
%% BP神经网络

% 网络创建
net=newff(minmax(p),[S1,7],{'tansig','purelin'},'trainlm');    这里的7是指?

% 设置训练参数
net.trainParam.show=10;
net.trainParam.epochs=2000;
net.trainParam.goal=1.0e-28;
net.trainParam.lr=0.3;
% 网络训练
[net,tr]=train(net,p,t);
% 仿真测试
s_bp=sim(net,kn);    % BP神经网络的仿真结果
%% GA-BP神经网络

R=size(p,1);
S2=size(t,1);
S=R*S1+S1*S2+S1+S2;
aa=ones(S,1)*[-1,1];
popu=50;  % 种群规模
initPpp=initializega(popu,aa,'gabpEval');  % 初始化种群
gen=100;  % 遗传代数
% 调用GAOT工具箱,其中目标函数定义为gabpEval
[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...
'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
% 绘均方误差变化曲线
figure(1)
plot(trace(:,1),1./trace(:,3),'r-');
hold on
plot(trace(:,1),1./trace(:,2),'b-');
xlabel('Generation');
ylabel('Sum-Squared Error');
% 绘制适应度函数变化
figure(2)
plot(trace(:,1),trace(:,3),'r-');
hold on
plot(trace(:,1),trace(:,2),'b-');
xlabel('Generation');
ylabel('Fittness');
% 计算最优的权值和阈值
[W1,B1,W2,B2,val]=gadecod(x);
net.IW{1,1}=W1;
net.LW{2,1}=W2;
net.b{1}=B1;
net.b{2}=B2;
% 利用新的权值和阈值进行训练
net=train(net,p,t);
% 仿真测试
s_ga=sim(net,kn);     %遗传优化后的仿真结果





还有一个问题就是:我用水质标准的五组数据来进行训练,得到训练后的模型,然后用这个模型直接来评价90多个水源地的水质监测数据,没有问题吧?

大致的问题都在上面标明了,请大侠们指点一下,因为我用来做毕业设计,但是matlab没怎么接触过,现在又快要提交论文了,所以很着急,还请各位多多帮忙,万分感激!!

赞助本站

人工智能实验室
相关内容
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港