马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我用的是7.0版本的,遗传算法工具箱是自己添加的,在进行优化计算时,总是出现
??? Index exceeds matrix dimensions.
Error in ==> f at 5
x=sol(1:numv);
Error in ==> fitness at 7
eval=f(x);
Error in ==> initializega at 41
eval(estr);
Error in ==> myga at 5
initPop=initializega(10,bounds,'fitness');
的错误提示,不知道到底是哪错了
我的源程序是
%建立rs.m文件,对燃烧进行神经网络建模
clear; clc;
%P为网络输入值,每行代表前五个数代表负荷的时间序列,后五个数代表燃料量的时间序列
P=[
0.6957 0.9638 0 0.6087 0.8551 0.6014 0.7319 1.0000;
0.0769 1.0000 0.2154 0 0.1558 0.0212 0.1481 0.0865;
0.9540 0 0.1970 1.0000 0.9573 0.8013 0.9573 0.9409;
0.9701 0.7803 0.0106 1.0000 0.9740 0 0.9624 0.9615;
0.6196 0.2174 0 0.2609 0.2609 0.5761 0.8913 1.0000;
0.5862 0.2241 0 0.1207 0.9655 0.4828 1.0000 1.0000;
0.1101 1.0000 0.5755 0.0094 0.2767 0.0943 0.1918 0.2075;
0.9398 0 0.2708 0.9329 0.8981 0.8912 0.9861 1.0000;
0.9735 0.8827 0 0.8761 0.9624 0.9867 0.9425 0.9403;
0.4259 0.1667 0.4630 0.3148 0 0.9074 0.8333 1.0000];
%T为网络的目标值,代表NOx排放量的时间序列
T=[ 0.1000 0.2500 1.0000 0.5000 0.3000 0 0.6500 0.5250;
0.3455 0.5273 0 0.5455 0.5273 0.3455 1.0000 0.5636;
0.8169 0.5634 0.4507 0.8028 0 0.5775 1.0000 0.8310;
0.3766 0.4805 1.0000 0.4545 0.0260 0 0.8831 0.4545;
0 1.0000 0.4082 0.7755 0.5102 0.7959 0.5102 0.4490];
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1]; %初始化网络
%定义网络隐层为21个神经元,输出神经元为5,隐层传递函数为tansig,输出层传递函数为logsig,用函数trainlm训练网络
rsnet=newff(threshold,[21,5],{'tansig','logsig'},'trainlm');
inputWeights=rsnet.IW{1,1} % 当前输入层权值和阈值
inputbias=rsnet.b{1}
layerWeights=rsnet.LW{2,1} % 当前网络层权值和阈值
layerbias=rsnet.b{2}
rsnet.trainParam.epochs=1000; %最大训练次数为1000次
rsnet.trainParam.goal=0.01; %最大误差为0.01
LP.lr=0.1; %学习率0.1
[rsnet,tr]=train(rsnet,P,T); %训练网络
%测试值P_test,每行代表前五个数代表负荷的时间序列,后五个数代表燃料量的时间序列
P_test=[248.8 287.1; 251.4 251.5; 296.7 256.7; 296.4 298.5; 265.3 265.4;
112.3 116.1; 103.5 106.5; 140.9 139.4; 132.5 135.3; 120.8 119.1];
Y=sim(rsnet,P_test); %仿真
%对网络输出值进行归一处理,originT的每一行前五个数代表给煤量的目标值,后五个数代表NOx排放量的目标值
originT=[ 631 631.2; 648 647; 657 654.8; 658 655; 644 642];
for i=1:1:size(Y,2)
Y(:,i)=Y(:,i)*(max(originT(:,i))-min(originT(:,i)))+min(originT(:,i));
end
Y %输出归一后的输出值,即预测的NOx排放量的时间序列
%建立f.m文件
%计算神经网络模型输出的matlab代码
function [eval]=f(sol)
numv=size(sol,1); x=sol(1:numv);
eval=sim(rsnet,x) %eval=后为神经网络模型输出 。
%建立fitness.m文件, 适应度函数的matlab代码
function [sol,eval]=fitness(sol,options)
numv=size(sol,1)-1; x=sol(1:numv);
eval=f(x); eval=-eval;
%建立myga.m文件
%遗传函数有10个约束,分别为负荷量与燃料量在经济工况内的变化范围
bounds=ones(10,1)*[0 1]
initPop=initializega(10,bounds,'fitness');
[p,endPop,bestSols]=ga(bounds,'fitness',[], initPop,[1e-600], maxGenTerm,100,...
normGeomSelect,[0.08], [simpleXover],[0.4], binaryMutation,[0.1])
[ 本帖最后由 ChaChing 于 2009-3-22 10:45 编辑 ] |