伊冰 发表于 2007-6-19 13:06

MATLAB7.0遗传算法工具箱的函数调用与6.5有哪些不同?

我用的是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=;%初始化网络
%定义网络隐层为21个神经元,输出神经元为5,隐层传递函数为tansig,输出层传递函数为logsig,用函数trainlm训练网络
rsnet=newff(threshold,,{'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
=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=[ 631631.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 =f(sol)
    numv=size(sol,1);x=sol(1:numv);
    eval=sim(rsnet,x) %eval=后为神经网络模型输出 。
%建立fitness.m文件, 适应度函数的matlab代码
function =fitness(sol,options)
numv=size(sol,1)-1; x=sol(1:numv);
eval=f(x); eval=-eval;
%建立myga.m文件
%遗传函数有10个约束,分别为负荷量与燃料量在经济工况内的变化范围
bounds=ones(10,1)*
initPop=initializega(10,bounds,'fitness');
=ga(bounds,'fitness',[], initPop,, maxGenTerm,100,...
normGeomSelect,, ,, binaryMutation,)

[ 本帖最后由 ChaChing 于 2009-3-22 10:45 编辑 ]

eight 发表于 2007-6-19 13:09

原帖由 伊冰 于 2007-6-19 13:06 发表 http://www.chinavib.com/forum/images/common/back.gif
我用的是7.0版本的,遗传算法工具箱是自己添加的,在进行优化计算时,总是出现
??? Index exceeds matrix dimensions.
Error in ==> f at 5
    x=sol(1:numv);
Error in ==> fitness at 7
eval=f(x);
Err ...

看这个:常见的程序出错问题整理

伊冰 发表于 2007-6-19 16:35

谢谢

zynmg 发表于 2007-12-18 17:25

你好!

你的问题解决了吗?如果解决了,请告知好吗?我的程序也遇到了同样的问题?zynmg@163.com

sigma665 发表于 2007-12-18 17:32

回复 #5 zynmg 的帖子

请直接短消息联系楼主

liminghao 发表于 2007-12-19 10:58

我也遇到了同样的问题,求助!

billstf 发表于 2007-12-21 14:33

你的问题解决了吗?如果解决了,请告知好吗?我的程序也遇到了同样的问题?zynmg@163.com

eddy007 发表于 2007-12-23 19:16

最近追进遗传算法~~:lol

daidai0124 发表于 2009-3-21 10:57

顶一下,我也遇到了同样的问题,好像类似的问题网上很多,都没有成功的解决!希望高手进来好好分析分析, 邮箱:daidai0124@126.com
页: [1]
查看完整版本: MATLAB7.0遗传算法工具箱的函数调用与6.5有哪些不同?