我用书童上传的遗传算法优化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没怎么接触过,现在又快要提交论文了,所以很着急,还请各位多多帮忙,万分感激!!
遗传算法优化BP权值和阈值的问题,非常感谢,论文提交在即,真的
来源:互联网 发布日期:2011-10-01 17:44:29 浏览:6004次
导读:遗传算法优化BP权值和阈值的问题,非常感谢,论文提交在即,真的很急! ,MATLAB技术论坛...
相关内容
AiLab云推荐
最新资讯
本月热点
热门排行
-
科学家成功研发可弯曲的非硅柔性芯片,成本不到 1 美元
阅读量:5959
-
FuriosaAI推出高能效AI芯片:性能与英伟达L40S接近,功耗低40%!
阅读量:5488
-
瑞士团队打造超小脑机接口,意识转文本准确率高达 91%
阅读量:4817
-
马斯克的新愿景对准盲人,Neuralink下一代脑机接口已获批
阅读量:4552
-
清华洪波教授:脑机接口实现语音解码输出应该在三年左右
阅读量:4330
-
为了获诺奖,AI不仅要懂物理学,还要懂哲学?
阅读量:3749