BP网络预测趋势问题,训练均方误差到不了,是哪里有问题啊,迭代次数到了结果出来也是一直不变。

clc
clear
close all
tic

dd=load('7.txt');
A=min(dd); 
C=max(dd);
aa = zeros(1, 2100);
for i=1:length(dd)    
      aa(i)=(dd(i)-A)/(C-A);
end

dd=aa;
p=1;
n1 = zeros(1, 10);
x1 = zeros(1, 1);

for i=1:1:1600
    for j=p:10+p-1
        n1(i,j-p+1)=dd(j);
        x1(i,1)=dd(j+1);
    end
    p=p+1;
end

n2 = zeros(1, 10);
x2 = zeros(1, 1);
q=1;

for i=1:1:40
    for j=q:10+q-1
        n2(i,j-q+1)=dd(j+1600);
        x2(i,1)=dd(j+1600+1);
    end
    q=q+1;
end

xn_train=n1';
dn_train=x1';
xn_test=n2';
dn_test=x2';

NodeNum=15;
TypeNum=1;
p1=xn_train;
t1=dn_train;
Epochs=5000;
P=xn_test;
T=dn_test;

TF1='logsig';TF2='purelin';
net=newff(minmax(p1),[NodeNum TypeNum],{TF1 TF2},'trainlm');
net.trainParam.epochs=Epochs;
net.trainParam.goal=1e-8;
net.trainParam.min_grad=1e-20;
net.trainParam.max_fail = 20;
LP.lr=1;
net.trainParam.show=200;
net.trainParam.time=inf;
net=train(net,p1,t1);
toc

X=sim(net,P);
e=sum((dn_test-X).^2);
mape=sum(abs(dn_test-X))/40;

for i=1:length(X)    
      bb(i)=(C-A)*X(i)+A;
end
for i=1:length(x2)    
      cc(i)=(C-A)*x2(i)+A;
end


plot(1:length(n2),cc,'r+:',1:length(n2),bb,'bo:')
title('+为真实值,o为预测值')

你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。

您可以点击问题下方的【编辑】,进行补充修改问题。