这段代码实现了熵权法模型的权重计算。下面是代码的解释: 函数定义:
) E( X+ ~' A# B/ k! i5 U- 函数名为shang,接受三个输入参数:x(决策矩阵),standard(是否已经处理化),flag(判断类型)。
- 返回权重向量w。
( m' M8 ~# O: w; Y1 _
变量初始化:
8 S: w; }( ]6 E5 d. K% h. u& {- 获取决策矩阵x的最小值a和最大值b。
- 获取决策矩阵的行数rows和列数cols。
- 如果函数调用时只提供两个参数,并且standard为0(表示尚未进行处理),则将flag设置为全1向量(表示所有指标都是高优指标)。2 o: I, l) y; {0 |0 L; f
标准化指标: % B* f4 o+ D& W
- 如果参数standard为0,表示决策矩阵尚未进行处理化。
- 使用循环将决策矩阵x的每个元素进行标准化处理。
" j# m8 z7 M) J* l$ w: L3 j- 如果flag(j)为1,表示该指标为高优指标,使用线性映射将值映射到0到1之间。
- 否则,表示该指标为低优指标,使用线性映射将值映射到1到0之间。
; {! `( G& D- F2 C
计算概率矩阵p:
1 Z5 V: m! p: K; c7 d# k9 B# O" E- 计算标准化矩阵x每列的和he。
- 使用循环计算概率矩阵p,即将标准化矩阵x的每个元素除以对应列的和he(j)。# L, k3 {* x5 p' D2 `! \; R# r" z- c
指标归一化:
9 i' E+ H+ \( M) X0 F7 d! j- 使用循环将概率矩阵p的每个元素进行指标归一化处理。9 x1 @1 m5 `& ~& J- T8 |$ S+ M. S
- 如果p(i,j)等于0,将z(i,j)设置为0。
- 否则,将z(i,j)设置为p(i,j)的自然对数log(p(i,j))。
% h# \# w) A: h7 ~6 x" Y: c- `$ R
计算e值: 6 ?* e5 e( N( v3 q/ }. B! q
- 初始化e为大小为1 x cols的零向量。
- 对概率矩阵p和归一化矩阵z进行逐元素乘积得到矩阵Q。
- 使用循环计算e值,即对Q的每列求和,乘以常数k。
$ Z5 q: J" d8 d6 z9 v8 z
计算权重w: " n' k5 b$ `" }4 d) D. b% _
- 计算e值的和he。
- 使用循环计算权重w,即将(1 - e(i))除以(cols - he)。该步骤将权重归一化,使得所有权重之和为1。3 c7 M( N9 M5 t2 ~( v4 x
该函数的作用是根据熵权法模型,计算决策矩阵中每个指标的权重。熵权法模型是一种多指标决策方法,通过标准化指标和概率计算,得到每个指标的权重,用于综合评价和决策分析。
0 d$ ~. X8 b0 k! }6 n$ Q' v) a M" I( p
& j. w' u. {) b% G( z* {# a6 }5 I$ ? |