MATLAB基础(六)评价类算法
·常见的综合评定⽅法分为两类:
·(1)综合评定法:直接评分法(专家打分综合法)、总分法、加权综合评定法、AHP+模糊综合评判、模糊神经⽹络评价法、待定系数法及分类法.
·现代综合评价⽅法:层次分析法(Analytic Hierarchy Process,AHP)、数据包络分析法(Data Envelopment Analysis,DEA)、⼈⼯神经⽹络评价法(Artificial Neural Network,ANN)、灰⾊综合评价法、模糊综合评定法
·两种经典的综合评判决策:
·总分法:S=ΣSi.加权综合评定法:E=ΣaiSi
·(2)两两⽐较法:顺序法和优序法.
常见的评价类模型
·层次分析法
·模糊综合评价法
·神经⽹络算法
模糊综合评价算法
·1965年,美国著名⾃动控制专家查德(L.A. Zadeh)教授提出了模糊(fuzzy)的概念,并发表了第⼀篇⽤数学⽅法研究模糊现象的论⽂“模糊集合”(fuzzy set)。他提出⽤“模糊集合”作为表现模糊事物的数学模型。并在“模糊集合”上逐步建⽴运算、变换规律,开展有关的理论研究,就有可能构造出研究现实世界中的⼤量模糊的数学基础,能够对看来相当复杂的模糊系统进⾏定量的描述和处理的数学⽅法。
·在模糊集合中,给定范围内元素对它的⾪属关系不⼀定只有“是”或“否”两种情况,⽽是⽤介于0和1之间的实数来表⽰⾪属程度,还存在中间过渡状态。⽐如“⽼⼈”是个模糊概念,70岁的肯定属于⽼⼈,它的从属程度是 1,40岁的⼈肯定不算⽼⼈,它的从属程度为0,按照查德给出的公式,55岁属于“⽼”的程度为0.5,即“半⽼”,60岁属于“⽼”的程度0.8。查德认为,指明各个元素的⾪属集合,就等
于指定了⼀个集合。当⾪属于0和1之间值时,就是模糊集合,即论域上的元素符合概念的程度不是绝对的0或1(不是或是),⽽是介于0和1之间的⼀个实数。
BP神经⽹络1、BP⽹络构建
(1)⽣成BP⽹络
:由维的输⼊样本最⼩最⼤值构成的维矩阵。
:各层的神经元个数。
*通常情况输⼊层神经元个数与选取的指标相关,隐含层通常不超过输⼊层的2 倍:各层的神经元传递函数
*常⽤的传递函数
purelin:线性传递函数
tansig:正切S型传递函数
logsig:对数S型传递函数
训练⽤函数的名称。
(2)⽹络训练
(3)⽹络仿真
BP⽹络的训练函数
训练⽅法训练函数梯度下降法traingd 有动量的梯度下降法traingdm ⾃适应lr梯度下降法traingda ⾃适应lr动量梯度下降法traingdx 弹性梯度下降法trainrp
Fletcher-Reeves共轭梯度法traincgf
Ploak-Ribiere共轭梯度法traincgp
Powell-Beale共轭梯度法traincgb
量化共轭梯度法trainscg
拟⽜顿算法trainbfg
⼀步正割算法trainoss
Levenberg-Marquardt trainlm
BP⽹络训练参数
训练参数参数介绍训练函数
缺省为10)traingd、traingdm、traingda、
traingdx、trainrp、traincgf、
traincgp、traincgb、trainscg、
trainbfg、trainoss、trainlm
traingdx、trainrp、traincgf、
traincgp、traincgb、trainscg、
trainbfg、trainoss、trainlm
traingdx、trainrp、traincgf、
traincgp、traincgb、trainscg、
trainbfg、trainoss、trainlm
traingdx、trainrp、traincgf、
traincgp、traincgb、trainscg、
trainbfg、trainoss、trainlm
traingdx、trainrp、traincgf、
traincgp、traincgb、trainscg、
trainbfg、trainoss、trainlm
缺省为25)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
traingdx、trainrp、traincgf、
traincgp、traincgb、trainscg、
trainbfg、trainoss、动量因⼦(缺省0.9)traingdm、traingdx
matlab求导
trainbfg、trainoss
trainscg
(缺省值5.0e-5)
trainscg
为5.0e-7)
trainlm
<_reduc控制计算机内存/速度的参量,内存较⼤
设为1,否则设为2(缺省为1)
2、BP⽹络举例
举例1、
%traingd
clear;
clc;
P=[-1 -1 2 2 4;0 5 0 5 7];
T=[-1 -1 1 1 -1];
%利⽤minmax函数求输⼊样本范围
net = newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');
[net,tr]=train(net,P,T);
net.iw{1,1}%隐层权值
net.b{1}%隐层阈值
net.lw{2,1}%输出层权值
net.b{2}%输出层阈值
sim(net,P)
举例2、利⽤三层BP神经⽹络来完成⾮线性函数的逼近任务,其中隐层神经元个数为五个。
样本数据:
输⼊X输出D输⼊X输出D输⼊X输出D
-1.0000-0.9602-0.30000.13360.40000.3072 -0.9000-0.5770-0.2000-0.20130.50000.3960 -0.8000-0.0729-0.1000-0.43440.60000.3449 -0.70000.37710-0.50000.70000.1816 -0.60000.64050.1000-0.39300.8000-0.3120 -0.50000.66000.2000-0.16470.9000-0.2189 -0.40000.46090.3000-0.0988  1.0000-0.3201解:
看到期望输出的范围是,所以利⽤双极性Sigmoid函数作为转移函数。
程序如下:
clear;
clc;
X=-1:0.1:1;
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600
0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.
0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];
figure;
plot(X,D,'*'); %绘制原始数据分布图(附录:1-1)
net = newff([-1 1],[5 1],{'tansig','tansig'});
net = train(net,X,D);
O = sim(net,X);
figure;