发布网友 发布时间:2024-10-19 09:06
共1个回答
热心网友 时间:2024-10-19 09:11
给你个例子,只要把训练输入输出数据换成你自己的就可以了,不懂可以加1298792082
% 现给出一药品商店一年当中12个月的药品销售量(单位:箱)如下:
% 2056 2395 2600 2298 1634 1600 1873 1487 1900 1500 2046 1556
% 训练一个BP网络,用当前的所有数据预测下一个月的药品销售量。
% 我们用前三个月的销售量预测下一个月的销售量,
% 也就是用1-3月的销售量预测第4个月的销售量,
% 用2-4个月的销售量预测第5个月的销售量,
% 如此循环下去,直到用9-11月预测12月份的销售量。
% 这样训练BP神经网络后,就可以用10-12月的数据预测来年一月的销售量。
% 实现程序如下:
%% 原始数据
P =[2056 2395 2600;2395 2600 2298;2600 2298 1634;2298 1634 1600;...
1634 1600 1873;1600 1873 1478;1873 1478 1900;1478 1900 1500;...
1900 1500 2046;];
%% 目标数据
T = [2298 1634 1600 1873 1487 1900 1500 2046 1556];
%% 对原始数据和目标数据进行归一化处理
pmax = max(P);
pmax1 = max(pmax);
pmin = min(P);
pmin1 = min(pmin);
for i = 1 : 9
P1(i, :) = (P(i, :) - pmin1) / (pmax1 - pmin1);
T1(i) = (T(i) - pmin1) / (pmax1 - pmin1);
end
%% 建立BP网络
net = newff(P1', T1, [3 7], {'tansig' 'logsig'}, 'traingd');
%% 设置网络参数并进行训练
% for i = 1 : 9
net.trainParam.epochs = 15000;
net.trainParam.goal = 0.00001;
net.trainParam.lr = 0.1
net = train(net, P1(i,:)', T1(i));
% end
%% 将10-12月的数据输入网络进行预测来年一月的销售量(归一化后的数值)
y = sim(net, [1500 2046 1556]');
%% 反归一化求出来年一月份的销售量
y1 = y * (pmax1 - pmin1) + pmin1;
% 如果神经网络的训练函数使用trainlm,则仿真步骤会很少,但需要较大的系统内存。
% 经预测,来年一月的销售量(y1)为1.6845e+003箱(每次运行后的结果可能不同)