|
这段代码实现了熵权法模型的权重计算。下面是代码的解释: 函数定义:
T3 r6 u" r8 j' g" o8 a- 函数名为shang,接受三个输入参数:x(决策矩阵),standard(是否已经处理化),flag(判断类型)。
- 返回权重向量w。
! }, U$ {8 H9 u" v* _
变量初始化:
: U |8 U8 `& S3 u- O/ N; t+ u8 x( u8 `$ [- 获取决策矩阵x的最小值a和最大值b。
- 获取决策矩阵的行数rows和列数cols。
- 如果函数调用时只提供两个参数,并且standard为0(表示尚未进行处理),则将flag设置为全1向量(表示所有指标都是高优指标)。
8 i; D+ M3 q6 {6 g: ?! ~- }' p
标准化指标: : U0 X% R% c# f, V) w" D
- 如果参数standard为0,表示决策矩阵尚未进行处理化。
- 使用循环将决策矩阵x的每个元素进行标准化处理。, h- \/ |7 k1 s9 f9 Q F
- 如果flag(j)为1,表示该指标为高优指标,使用线性映射将值映射到0到1之间。
- 否则,表示该指标为低优指标,使用线性映射将值映射到1到0之间。. \9 x5 q% ^2 |8 H ~8 h3 v
计算概率矩阵p:
+ M& w' T. h5 F8 T( V& ]! t/ q: w- 计算标准化矩阵x每列的和he。
- 使用循环计算概率矩阵p,即将标准化矩阵x的每个元素除以对应列的和he(j)。
; L* e" R* ?8 p/ p2 s- I
指标归一化:
2 Z0 [2 L/ p6 j- 使用循环将概率矩阵p的每个元素进行指标归一化处理。/ m# J/ u( l* T" [/ X) [6 [
- 如果p(i,j)等于0,将z(i,j)设置为0。
- 否则,将z(i,j)设置为p(i,j)的自然对数log(p(i,j))。
3 l' t c, w2 o# _; r/ x/ N
计算e值:
+ m1 b. d$ G5 ~- ?9 |0 z8 ]- 初始化e为大小为1 x cols的零向量。
- 对概率矩阵p和归一化矩阵z进行逐元素乘积得到矩阵Q。
- 使用循环计算e值,即对Q的每列求和,乘以常数k。& }: _) V8 }" P, V. T% w
计算权重w: % j; W" a1 X( M7 Q' B- W$ n1 N9 J
- 计算e值的和he。
- 使用循环计算权重w,即将(1 - e(i))除以(cols - he)。该步骤将权重归一化,使得所有权重之和为1。. l* e& H( U1 O/ K
该函数的作用是根据熵权法模型,计算决策矩阵中每个指标的权重。熵权法模型是一种多指标决策方法,通过标准化指标和概率计算,得到每个指标的权重,用于综合评价和决策分析。
3 d; L6 ~1 ^3 X) l, ^9 P5 s$ B' q: Z) z& w$ g
' \$ a7 \8 c' v6 V9 k5 ?
|