基于RBF神经网络的水泥强度预测模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
3
3
2
1
……
2
2
2
2
3
3
……
2
3
3
2
3
3
……
2
3
3
(2)用Rosetta软件属性约简,得出的主要因素 为表1-1
(3)八个主要因素
Loss Fe2o3 CaO KH
C3A 比表 标准 一天 面积 稠度 抗压 强度
(4)RBF网络建模:
①RBF网络结构和工作原理:(径向基函数网络的拓扑结构)
X1 y1
0.04
0.03
0.02
0.01
0
0
10
20
30
40
50
60
输出样本个数
基于k均值聚类方法的程序如下:
clc;
clear all;
clc;
t1=cputime;
load data.mat;%约简后的总体样本
ceshiyangben=[data(1:2:238,1),data(1:2:238,2),data(1:2:238,3),data(1:2:238,4),data(1:2:238,5),data(1:2:238,6),data(1:2:238,7),data(1:2:238,8)];
ceshiyangbenjieguo=[data(1:2:238,9)];
X2
yM XL
由图对应的公式为:
y k 表示输出层第k个节点的输出。 k 表示输出层第k个节点的阈值
为径向基函数
n
Yk k wjk xcj
j1
w j k 表示第j个隐层节点连接到输出层第k个节点的权值 隐层函数一般采用高斯函数确定:对于高斯函数,其中x是n 维输入向量;c i 是第i个函数的
2)数据中心动态调节方法(k均值聚类方法)
随机选取数据中心程序如下:
clc; clear all; t1=cputime; load data.mat;%约简后的总体样本 ceshiyangben=[data(1:2:238,1),data(1:2:238,2),data(1:2:238,3),data(1:2:238,4),data(1:2:238,5),data(1:2:238,6),d
2.方法及步骤
1.将收集到的与水泥28d强度相关的原始数据(水 泥度的 等属 )性 进包 行括 整:理l制os成s,esxioc2e,l比表表格面,积便,于一软天件抗处压理强。
2.用MATLAB软件中的FCM函数进行离散化处理 (原始数据不便于直接进行属性约简需先进行离 散化)。
3.利用Rosetta函数中的johnson’s algorithm进行属 性约简,提取出对水泥28d抗压强度有影响的主 要因素。
newU=[]; %生成一个新的隶属度矩阵newU;按照聚类中心的排序重新排序;
for idx=1:k;
a1=find(center==c1(idx));
newU1=U(a1,:);
newU=[newU;newU1 ];
end;
[a,b]=max(newU); % b 是离散化所得的结果,b’为将b转置后的结果
入中随机选取,或者选择前h个样本输入,但这h个初始数据中心必 须取不同值。
2)计算所有样本输入与聚类中心的距离
X j c ik,i 1 ,2 , ,h ,j 1 ,2 , ,N
3)对样本输入 X j ,按最小距离原则对其进行分类:
即当 iX j m iinX j c ik,i 1 ,2 , ,h时,X j 即
被当归为第i类,即。X j wi k
4)重新计算各类的新的聚类中心:
cik1N 1i xwikx,i1,2, ,h
5)如果cik1cik 转到步骤(2),否则
聚类结束,转到步骤(6)。 6)根据各聚类中心之间的距离确定个隐节点的扩
展常数。隐节点的扩展常数取 i kd i ,其中
% 计算各隐节点的扩展常数(宽度) AllDistances = dist(Centers',Centers); % 计算隐节点数据中心间的距离(矩阵) Maximum = max(max(AllDistances)); % 找出其中最大的一个距离 for i = 1:ClusterNum % 将对角线上的0 替换为较大的值 AllDistances(i,i) = Maximum+1;
中心; i 是第i个感知的变量(可以自由选择的参数),它决定了该基函数围绕中心点的宽度
Ri
x
exp
xci
2i2
由高斯函数可知只要确定隐节点的数据中心,高斯 函数的值就可以确定,而隐节点的数据中心确定后 隐节点的扩展常数就可以根据公式算出,最后各隐 节点的数据中心和扩展常数确定,输出权值就可以 通过训练得到。具体步骤如下: 1)算法初始化:选择h个不同的初始聚类中心,比如,从样本输
题目:基于RBF神经网络的水 泥强度预测模型
学生: 学号:
指导老师:
1.研究内容
首先收集水泥的一些属性,测定不同属 性的参数。然后根据RBF神经网络的进行 建模,预测水泥强度参数,判定是否合格。 最后验证所得到的预测模型是否可以实际 应用。(一般会收集对水泥28d抗压强度有 影响的属性,因为水泥的抗压强度在28d左 右会定型,如果满足28d抗压强度值将可以 进行实际应用)
3
2
2
……
3
3
1
2
2
2
……
2
2
3
2
2
3
……
2
3
2
2
2
2
……
2
2
2
3
2
2
……
2
2
3
2
2
2
……
3
2
1
3
3
2
……
3
2
3
2
2
2
……
2
2
3
3
3
3
……
3
3
1
2
1
1
……
1
1
2
3
3
1
……
2
2
3
1
1
3
……
2
2
2
3
3
3
……
3
3
2
2
2
2
……
2
2
2
2
1
2
……
3
2
3
2
2
3
……
2
2
3
2
3
2
……
1
2
1
3
3
1
……
2
1
2
3
3
3
……
2
TestSpreadsMat = repmat(Spreads,1,TestSamNum);
TestHiddenUnitOut = radbas(TestDistance./TestSpreadsMat);
TestNNOut = W2*TestHiddenUnitOut+B2;
plot(1:TestSamNum,TestSamOut,'r-+',1:TestSamNum,TestNNOut,'b-o'); title('属性约简后的预测值与实际值模型'); xlabel('输出样本个数'); ylabel('预测样本值与实际样本值'); figure;
end Spreads = Overlap*min(AllDistances)'; % 以隐节点间的最小距离作为扩展常数 % 计算各隐节点的输出权值 Distance = dist(Centers',SamIn); % 计算各样本输入离各数据中心的距离 SpreadsMat = repmat(Spreads,1,SamNum); HiddenUnitOut = radbas(Distance./SpreadsMat); % 计算隐节点输出阵 HiddenUnitOutEx = [HiddenUnitOut' ones(SamNum,1)]'; % 考虑偏移 W2Ex = SamOut*pinv(HiddenUnitOutEx); % 求广义输出权值 W2 = W2Ex(:,1:ClusterNum); % 输出权值 B2 = W2Ex(:,ClusterNum+1); % 偏移 % 测试 TestDistance = dist(Centers',TestSamIn);
b=b' ; % b'为将b转置后的结果
B=[B b];
end;
得出结果为离散化好的数据
Loss SiO2 Al2O3 Fe2O3 CaO MgO KH n p f-CaO C3S C2S C3A C4AF 比表面(cm2/g) 标准稠度(%) 细度(%) 一天抗压(Mpa) 三天抗压(Mpa) 一天抗折(Mpa) 三天抗折(Mpa) 二十八天抗压(Mpa)
f=abs(TestSamOut-TestNNOut)./TestSamOut;
plot(f); title('属性约简后的样本预测值的相对误差百分数'); xlabel('输出样本个数'); ylabel('预测样本的相对误差');
W2
B2
average1=abs(sum((TestNNOut-(sum(TestSamOut)./59))./TestSamOut))./59%平均相对误差绝对值
4.利用MATLAB中的RBF神经网络建模,得出预测 模型,并比较此模型的实际误差
3过程及实现
(1)fcm离散化程序:
load shuini28dkyqd.mat;load data.mat
B=[];
[N1,N2]=size(data);
for idy=1:N2;
a=data(:,idy) %原始数据
ata(2:2:119,7),data(2:2:119,8)]; yuceyangbenjieguo=[data(2:2:119,9)]; %归一化处理 x1 =ceshiyangben; [guiyihuaceshiyangben,PS] = mapminmax(x1);%进行行列转换做 x2 =ceshiyangbenjieguo; [guiyihuaceshiyangbenjieguo,PS] = mapminmax(x2);%进行行列转换做 x3 =yuceyangben; [guiyihuayuceyangben,PS] = mapminmax(x3);%进行行列转换做 x4 =yuceyangbenjieguo; [guiyihuayuceyangbenjieguo,PS] = mapminmax(x4);%进行行列转换做 SamNum = 119; % 训练样本数 TestSamNum = 59; % 测试样本数 InDim = 8; % 样本输入维数 ClusterNum = 10; % 隐节点数,即聚类样本数 Overlap = 1.0; % 隐节点重叠系数 % 根据目标函数获得样本输入输出 SamIn = ceshiyangben'; SamOut = ceshiyangbenjieguo'; TestSamIn = yuceyangben'; TestSamOut = yuceyangbenjieguo'; Centers = SamIn(:,1:ClusterNum);%所有行的前十个作为聚类中心
k=3; %离散区间为3;
[center,U,obj_fcn来自百度文库=fcm(a(:,1),k);
%将数据进行模糊C-均值聚类,n为数据untitled的列数, n=1,2,3,4,center为迭代后的聚类中心,U为所有数据点 对聚类中心的隶属度函数矩阵,obj_fcn为目标函数值;
c1=sort(center); %将得到的聚类中心排序;
d i 为第 i 个数据中心与其他最近的数据中心之间
的距离,即
di=
min i
cj
ci
k
,k称
重叠系数。
一旦各隐节点的数据中心和扩展常数确定
了,输出权值 ww1,w2, ,whT就可以
通过训练得到,最后就可以建立RBF网络 了
②建模: 本文用了两种建模方法:
1)数据中心从样本输入中选取(随机选取 中心)
约简处理后建模所得模型图像
预测样本值与实际样本值
64 63 62 61 60 59 58 57 56
0
属性约简后的预测值与实际值模型
Actual value Predictive value
10
20
30
40
50
60
输出样本个数
0.07
属性约简后的样本预测值的相对误差百分数
0.06
0.05
预测样本的相对误差
ata(1:2:238,7),data(1:2:238,8)]; ceshiyangbenjieguo=[data(1:2:238,9)]; yuceyangben=[data(2:2:119,1),data(2:2:119,2),data(2:2:119,3),data(2:2:119,4),data(2:2:119,5),data(2:2:119,6),d