|
这段代码实现了熵权法模型的权重计算。下面是代码的解释: 函数定义:
/ b2 w6 b: L: O& z' ]7 O* a- 函数名为shang,接受三个输入参数:x(决策矩阵),standard(是否已经处理化),flag(判断类型)。
- 返回权重向量w。
7 F1 d" @ n o T
变量初始化:
' W+ B5 R7 B1 L$ t: C" \/ r- L- 获取决策矩阵x的最小值a和最大值b。
- 获取决策矩阵的行数rows和列数cols。
- 如果函数调用时只提供两个参数,并且standard为0(表示尚未进行处理),则将flag设置为全1向量(表示所有指标都是高优指标)。6 r4 U, e3 P% c- |
标准化指标: 4 g1 ?, p0 H( }# t0 H
- 如果参数standard为0,表示决策矩阵尚未进行处理化。
- 使用循环将决策矩阵x的每个元素进行标准化处理。: Z/ G1 j+ P& I4 n3 ^ h' j
- 如果flag(j)为1,表示该指标为高优指标,使用线性映射将值映射到0到1之间。
- 否则,表示该指标为低优指标,使用线性映射将值映射到1到0之间。
# t! e) c. `+ v7 `3 C7 U
计算概率矩阵p: - ~8 s+ ^7 T/ f, B2 D
- 计算标准化矩阵x每列的和he。
- 使用循环计算概率矩阵p,即将标准化矩阵x的每个元素除以对应列的和he(j)。
# | ~3 t5 N; G) M; e8 c" I9 ^
指标归一化: 4 g! d; F/ z; ]. j8 E4 O! r
- 使用循环将概率矩阵p的每个元素进行指标归一化处理。( v( j( y% g7 _ i+ m. `' c$ b. E
- 如果p(i,j)等于0,将z(i,j)设置为0。
- 否则,将z(i,j)设置为p(i,j)的自然对数log(p(i,j))。
5 F9 ^* P1 l3 [/ y) |
计算e值:
: Q R' q+ z _" Z5 B6 u. o2 L+ T- 初始化e为大小为1 x cols的零向量。
- 对概率矩阵p和归一化矩阵z进行逐元素乘积得到矩阵Q。
- 使用循环计算e值,即对Q的每列求和,乘以常数k。& m1 Q# s$ l1 u1 `5 e' j( C, h* s
计算权重w: ' k2 @4 i! ^3 R* k. w! M
- 计算e值的和he。
- 使用循环计算权重w,即将(1 - e(i))除以(cols - he)。该步骤将权重归一化,使得所有权重之和为1。' P& b- s. x3 |; d/ {& I
该函数的作用是根据熵权法模型,计算决策矩阵中每个指标的权重。熵权法模型是一种多指标决策方法,通过标准化指标和概率计算,得到每个指标的权重,用于综合评价和决策分析。
' e" J* c; S+ d! z e0 T- ^4 I/ p) E! l3 B7 m7 B
% O R4 i4 b* S4 U0 H6 a |