24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1901  |  回复: 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

新虫 (正式写手)

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

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的回帖

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的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 300求调剂 +9 橙a777 2026-04-15 9/450 2026-04-16 06:47 by fenglj492
[考研] 材料相关专业344求调剂双非工科学校或课题组 +21 hualkop 2026-04-12 23/1150 2026-04-15 22:02 by hualkop
[考研] 求调剂学校 +14 不会吃肉 2026-04-13 16/800 2026-04-15 21:59 by noqvsozv
[考研] 通信工程求调剂!!! +6 zlb770521 2026-04-14 6/300 2026-04-15 20:00 by 学员JpLReM
[考研] 307中医考研调剂 +4 于以采蘩 2026-04-14 4/200 2026-04-15 19:14 by AN流800
[考研] 药学求调剂 +11 RussHu 2026-04-12 13/650 2026-04-15 19:07 by zhuwenxu
[考研] 26药学专硕105500求调剂 +6 喽哈加油 2026-04-13 6/300 2026-04-14 16:40 by zhouxiaoyu
[考研] 考研求调剂 +6 ban班小七 2026-04-11 6/300 2026-04-14 14:06 by 哆啦A梦只是个梦
[考研] 材料复试求调剂 +24 xhhdjdjsjks 2026-04-09 24/1200 2026-04-13 15:49 by 幸免 ..
[考研] 277 数一104,学硕,求调剂 +21 瓶子PZ 2026-04-09 23/1150 2026-04-11 23:12 by labixiaoqiao
[考研] 331求调剂 +5 王国帅 2026-04-11 5/250 2026-04-11 22:56 by 溪涧流水
[考研] 调剂 +6 青灯不负 2026-04-09 6/300 2026-04-11 20:35 by dongdian1
[考研] 085400 328分 求调剂 +10 喂你一个大橙子 2026-04-09 14/700 2026-04-11 19:53 by lqspecial
[考研] 297求调剂 +9 Kwgyz 2026-04-09 9/450 2026-04-11 10:09 by zhq0425
[考研] 22408 327分求调剂 +4 韵风kon 2026-04-10 4/200 2026-04-11 09:51 by 猪会飞
[考研] 282,求调剂 +12 jggshjkkm 2026-04-09 14/700 2026-04-11 09:39 by 猪会飞
[考研] 309求调剂 +14 wdhw 2026-04-10 15/750 2026-04-10 21:06 by zhouxiaoyu
[考研] 298求调剂 +13 钉叮咚冬瓜 2026-04-09 13/650 2026-04-10 15:49 by jiajinhpu
[考研] 青岛科技大学材料学院,环境学院调剂补录4月10日以前都可以 +3 1青科大。 2026-04-09 5/250 2026-04-10 09:58 by 翩翩一书生
[考研] 348求调剂 +3 candyyyi 2026-04-09 3/150 2026-04-09 17:20 by 段伟艳
信息提示
请填处理意见