|
这段代码实现了熵权法模型的权重计算。下面是代码的解释: 函数定义:
+ W G Q' m8 V g2 @9 w/ Q8 C1 X- 函数名为shang,接受三个输入参数:x(决策矩阵),standard(是否已经处理化),flag(判断类型)。
- 返回权重向量w。0 }# g( X' s2 ?4 u- K
变量初始化: 9 [, A& K P) j: F x, {2 a7 P5 H
- 获取决策矩阵x的最小值a和最大值b。
- 获取决策矩阵的行数rows和列数cols。
- 如果函数调用时只提供两个参数,并且standard为0(表示尚未进行处理),则将flag设置为全1向量(表示所有指标都是高优指标)。
# H0 m0 o. ?/ X
标准化指标: . [' O" f2 O# \+ }# h& C: n
- 如果参数standard为0,表示决策矩阵尚未进行处理化。
- 使用循环将决策矩阵x的每个元素进行标准化处理。
6 c4 m6 R s& v3 u' U/ N8 A& m& _- 如果flag(j)为1,表示该指标为高优指标,使用线性映射将值映射到0到1之间。
- 否则,表示该指标为低优指标,使用线性映射将值映射到1到0之间。7 W- W4 C; D7 v6 r! u
计算概率矩阵p:
8 e& R% D. V# {! Z+ u# j- 计算标准化矩阵x每列的和he。
- 使用循环计算概率矩阵p,即将标准化矩阵x的每个元素除以对应列的和he(j)。) y/ N! ?- d- b( ?3 N) G
指标归一化: $ _) C: Q5 o- p( Z0 y) W1 Z1 E
- 使用循环将概率矩阵p的每个元素进行指标归一化处理。; X2 T2 G1 b, o0 O) e* X! M
- 如果p(i,j)等于0,将z(i,j)设置为0。
- 否则,将z(i,j)设置为p(i,j)的自然对数log(p(i,j))。" C: P$ n0 v! o4 m& z9 C- b/ S7 {
计算e值: : |) i1 T. ~" O
- 初始化e为大小为1 x cols的零向量。
- 对概率矩阵p和归一化矩阵z进行逐元素乘积得到矩阵Q。
- 使用循环计算e值,即对Q的每列求和,乘以常数k。
: P3 [+ r$ W! W; l) }1 v, @! K
计算权重w:
i) Y7 z S+ B9 X, s- 计算e值的和he。
- 使用循环计算权重w,即将(1 - e(i))除以(cols - he)。该步骤将权重归一化,使得所有权重之和为1。( [# j3 U: p6 n5 I: @( b
该函数的作用是根据熵权法模型,计算决策矩阵中每个指标的权重。熵权法模型是一种多指标决策方法,通过标准化指标和概率计算,得到每个指标的权重,用于综合评价和决策分析。
0 P# W+ N9 Y, y3 `8 c, w; ], Q/ I2 A8 K! b; O7 q
5 X H: K7 ~2 C& d/ ^ k0 P
|