24小时热门版块排行榜    

查看: 1890  |  回复: 4

dy1029

新虫 (正式写手)

[交流] 求助bp神经网络遗传算法出错。 已有1人参与

最近在学习神经网络遗传算法,参照网上的一些代码:
CODE:
% 清空环境变量

clc

clear


%% 网络结构建立
%节点个数

inputnum=1;

hiddennum=5;

outputnum=1;



%训练数据和预测数据

input_train=[1 2 3 4 5 6 7 8 9 10];

input_test=[21 27 29 31 34 36 39 41 49 50];

output_train=[11 12 13 14 15];

output_test=[54 56 59 61 66];



%选连样本输入输出数据归一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);



%构建网络

net=newff(inputn,outputn,hiddennum);



%% 遗传算法参数初始化

maxgen=10;                         %进化代数,即迭代次数

sizepop=10;                        %种群规模

pcross=0.3;                       %交叉概率选择,0和1之间

pmutation=0.1;                    %变异概率选择,0和1之间



%节点总数

numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;



lenchrom=ones(1,numsum);        

bound=[-3*ones(numsum,1) 3*ones(numsum,1)];    %数据范围



%------------------------------------------------------种群初始化--------------------------------------------------------

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);  %将种群信息定义为一个结构体

avgfitness=[];                      %每一代种群的平均适应度

bestfitness=[];                     %每一代种群的最佳适应度

bestchrom=[];                       %适应度最好的染色体

%初始化种群

for i=1:sizepop

    %随机产生一个种群

    individuals.chrom(i,:)=Code(lenchrom,bound);    %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)

    x=individuals.chrom(i,:);

    %计算适应度

    individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);   %染色体的适应度

end



%找最好的染色体

[bestfitness bestindex]=min(individuals.fitness);

bestchrom=individuals.chrom(bestindex,:);  %最好的染色体

avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度

% 记录每一代进化中最好的适应度和平均适应度

trace=[avgfitness bestfitness];



%% 迭代求解最佳初始阀值和权值

% 进化开始

for i=1:maxgen

    i

    % 选择

    individuals=Select(individuals,sizepop);

    avgfitness=sum(individuals.fitness)/sizepop;

    %交叉

    individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);

    % 变异

    individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);

   

    % 计算适应度

    for j=1:sizepop
x=individuals.chrom(j,:);
        x=individuals.chrom(j,:); %解码

        individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);   

    end

   

  %找到最小和最大适应度的染色体及它们在种群中的位置

    [newbestfitness,newbestindex]=min(individuals.fitness);

    [worestfitness,worestindex]=max(individuals.fitness);

    % 代替上一次进化中最好的染色体

    if bestfitness>newbestfitness

        bestfitness=newbestfitness;

        bestchrom=individuals.chrom(newbestindex,:);

    end

    individuals.chrom(worestindex,:)=bestchrom;

    individuals.fitness(worestindex)=bestfitness;

   

    avgfitness=sum(individuals.fitness)/sizepop;

   

    trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度



end

%% 遗传算法结果分析

figure(1)

[r c]=size(trace);

plot([1:r]',trace(:,2),'b--');

title(['适应度曲线  ' '终止代数=' num2str(maxgen)]);

xlabel('进化代数');ylabel('适应度');

legend('平均适应度','最佳适应度');

disp('适应度变量');

x=bestchrom;



%% 把最优初始阀值权值赋予网络预测

% %用遗传算法优化的BP网络进行值预测

w1=x(1:inputnum*hiddennum);

B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);

w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);

B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);



net.iw{1,1}=reshape(w1,hiddennum,inputnum);

net.lw{2,1}=reshape(w2,outputnum,hiddennum);

net.b{1}=reshape(B1,hiddennum,1);

net.b{2}=B2;



%% BP网络训练

%网络进化参数

net.trainParam.epochs=100;

net.trainParam.lr=0.1;

%net.trainParam.goal=0.00001;



%网络训练

[net,per2]=train(net,inputn,outputn);



%% BP网络预测

%数据归一化

inputn_test=mapminmax('apply',input_test,inputps);

an=sim(net,inputn_test);

test_simu=mapminmax('reverse',an,outputps);

error=test_simu-output_test;  

[ Last edited by jjdg on 2018-7-28 at 00:40 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dy1029

新虫 (正式写手)

运行matlab后,出现:
错误使用 network/train (line 340)
Inputs and targets have different numbers of samples.

出错 fun (line 66)
net=train(net,inputn,outputn);

出错 main2 (line 92)
    individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);   %染色体
    的适应度

三个问题,求助哪里有问题
2楼2018-07-27 13:08:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dy1029

新虫 (正式写手)

利用遗传算法计算出神经网络的最佳权值,是输入输出数据维数出现问题吗?
还是适应度函数fun有问题?
3楼2018-07-27 13:09:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gemz10186

至尊木虫 (知名作家)

★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
jjdg: 金币+1, 感谢参与 2018-07-28 00:41:11
输入输出维数不一致

发自小木虫IOS客户端
在小木虫顶帖是中华民族的美德
4楼2018-07-27 15:21:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dy1029

新虫 (正式写手)

错误使用 network/subsasgn>network_subsasgn (line 550)
net.b{2} must be a 1-by-1 matrix.

出错 network/subsasgn (line 10)
net = network_subsasgn(net,subscripts,v,netname);

出错 GA-bp (line 117)
net.b{2}=B2;
5楼2018-07-28 00:32:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dy1029 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 本人考085602 化学工程 专硕 +21 不知道叫什么! 2026-03-15 23/1150 2026-03-22 00:12 by BruceLiu320
[考研] 311求调剂 +13 冬十三 2026-03-15 14/700 2026-03-21 22:10 by peike
[考研] 一志愿南大,0703化学,分数336,求调剂 +3 收到VS 2026-03-21 3/150 2026-03-21 18:42 by 学员8dgXkO
[考研] 279求调剂 +5 红衣隐官 2026-03-21 5/250 2026-03-21 14:59 by lature00
[考研] 一志愿山大07化学 332分 四六级已过 本科山东双非 求调剂! +3 不想理你 2026-03-16 3/150 2026-03-21 03:59 by JourneyLucky
[考研] 265求调剂 +3 Jack?k?y 2026-03-17 3/150 2026-03-21 03:17 by JourneyLucky
[考研] 332求调剂 +4 ydfyh 2026-03-17 4/200 2026-03-21 02:20 by JourneyLucky
[考研] 一志愿华中科技大学,080502,354分求调剂 +5 守候夕阳CF 2026-03-18 5/250 2026-03-21 01:06 by JourneyLucky
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +3 晨昏线与星海 2026-03-18 3/150 2026-03-21 00:46 by JourneyLucky
[考研] 一志愿西南交大,求调剂 +5 材化逐梦人 2026-03-18 5/250 2026-03-21 00:26 by JourneyLucky
[考研] 294求调剂材料与化工专硕 +15 陌の森林 2026-03-18 15/750 2026-03-20 23:28 by JourneyLucky
[考研] 085600材料与化工 +8 安全上岸! 2026-03-16 8/400 2026-03-20 22:13 by luoyongfeng
[考研] 一志愿苏州大学材料求调剂,总分315(英一) +5 sbdksD 2026-03-19 5/250 2026-03-20 22:10 by luoyongfeng
[考研] 求调剂 +3 @taotao 2026-03-20 3/150 2026-03-20 19:35 by JourneyLucky
[考研] 261求B区调剂,科研经历丰富 +3 牛奶很忙 2026-03-20 4/200 2026-03-20 19:34 by JourneyLucky
[考研] 一志愿南理工085701环境302求调剂院校 +3 葵梓卫队 2026-03-20 3/150 2026-03-20 19:28 by zhukairuo
[考研] 生物学调剂招人!!! +3 山海天岚 2026-03-17 4/200 2026-03-19 21:34 by 怎么释怀
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[硕博家园] 湖北工业大学 生命科学与健康学院-课题组招收2026级食品/生物方向硕士 +3 1喜春8 2026-03-17 5/250 2026-03-17 17:18 by ber川cool子
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
信息提示
请填处理意见