双隐藏层BP网络的matlab仿真,求遗传算法优化含有两个隐含层的BP神经网络的matlab程序...

该博客主要讨论如何解决在MATLAB中运用遗传算法优化含有两个隐含层的BP神经网络时遇到的代码错误。作者提供了一段代码并指出在运行时出现错误,具体是在`Objfun`函数调用`Bpfun`时。博客内容包括遗传算法的流程(创建种群、适应度分配、选择、重组、变异等),以及目标函数的计算。寻求高级MATLAB用户的帮助来定位并修复错误。
摘要由CSDN通过智能技术生成

怎样用遗传算法优化含有两个隐含层的BP神经网络的matlab程序啊,这个代码是错的,可不知道错在哪,求高手帮忙解答,非常感谢!

FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)];           %区域描述器

Chrom=crtbp(NIND,PRECI*N);                      %创建任意离散随机 种群

%% 优化

gen=0;                                 %代计数器

X=bs2rv(Chrom,FieldD);                 %计算初始种群的十进制转换

ObjV=Objfun(X,P,T,hiddennum1,hiddennum2,P_text,T_text);        %计算目标函数值   hiddennum1,hiddennum2:第一、第二隐含层

while gen

fprintf('%d\n',gen)

FitnV=ranking(ObjV);                              %分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP);              %选择

SelCh=recombin('xovsp',SelCh,px);                  %重组

SelCh=mut(SelCh,pm);                               %变异

X=bs2rv(SelCh,FieldD);               %子代个体的十进制转换

ObjVSel=Objfun(X,P,T,hiddennum1,hiddennum2,P_text,T_text);             %计算子代的目标函数值

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群

X=bs2rv(Chrom,FieldD);

gen=gen+1;                                             %代计数器增加

%获取每代的最优解及其序号,Y为最优解,I为个体的序号

[Y,I]=min(ObjV);

trace(1:N,gen)=X(I,:);                       %记下每代的最优值

trace(end,gen)=Y;                               %记下每代的最优值

end

function Obj=Objfun(X,P,T,hiddennum1,hiddennum2,P_text,T_text)

%% 用来分别求解种群中各个个体的目标值

%% 输入

% X:所有个体的初始权值和阈值

% P:训练样本输入

% T:训练样本输出

% hiddennum1:隐含层1神经元数

% hiddennum2:隐含层2神经元数

% P_text:测试样本输入

% T_text:测试样本期望输出

%% 输出

% Obj:所有个体的预测样本的预测误差的范数

[M,N]=size(X);

Obj=zeros(M,1);

for i=1:M

Obj(i)=Bpfun(X(i,:),P,T,hiddennum1,hiddennum2,P_text,T_text);

end

这两段代码运行时会出现如下错误Error in ==> Objfun at 16

Obj(i)=Bpfun(X(i,:),P,T,hiddennum1,hiddennum2,P_text,T_text);

Error in ==> GABPMain at 39

ObjV=Objfun(X,P,T,hiddennum1,hiddennum2,P_text,T_text);        %计算目标函数值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值