|
这段代码实现了熵权法模型的权重计算。下面是代码的解释: 函数定义: 0 a2 X- o; K& b/ b! {! E
- 函数名为shang,接受三个输入参数:x(决策矩阵),standard(是否已经处理化),flag(判断类型)。
- 返回权重向量w。
# f, }. ^. P7 Q$ e: P5 B; a N# A: a
变量初始化: + p- N9 c: r) `% I9 A& Z# k( I& s5 M
- 获取决策矩阵x的最小值a和最大值b。
- 获取决策矩阵的行数rows和列数cols。
- 如果函数调用时只提供两个参数,并且standard为0(表示尚未进行处理),则将flag设置为全1向量(表示所有指标都是高优指标)。
( n. Y r) {7 T8 Z8 a! R
标准化指标: . l! Y i3 Y3 X. B3 d- M
- 如果参数standard为0,表示决策矩阵尚未进行处理化。
- 使用循环将决策矩阵x的每个元素进行标准化处理。
! I3 B8 v$ M% v1 E) Q: |8 |- ^- 如果flag(j)为1,表示该指标为高优指标,使用线性映射将值映射到0到1之间。
- 否则,表示该指标为低优指标,使用线性映射将值映射到1到0之间。+ r8 Z$ y3 y; i$ @7 a! ]9 c
计算概率矩阵p:
. g$ h. t D j$ x* \. k& ]- 计算标准化矩阵x每列的和he。
- 使用循环计算概率矩阵p,即将标准化矩阵x的每个元素除以对应列的和he(j)。
( q- ^$ m+ Y3 @& h H( _3 ~
指标归一化:
. `- ^1 V* C0 {0 s: X$ {8 @- 使用循环将概率矩阵p的每个元素进行指标归一化处理。
: Y5 {: u {0 F* a& M& ~+ [- 如果p(i,j)等于0,将z(i,j)设置为0。
- 否则,将z(i,j)设置为p(i,j)的自然对数log(p(i,j))。
. C8 y7 q2 k, j7 n$ @1 ?4 _2 ]
计算e值: 4 Y" u4 n- P7 W
- 初始化e为大小为1 x cols的零向量。
- 对概率矩阵p和归一化矩阵z进行逐元素乘积得到矩阵Q。
- 使用循环计算e值,即对Q的每列求和,乘以常数k。7 n1 u) @# [7 B A( h, `
计算权重w: ; ^0 ]" |6 v) M' O3 c% M, I- b, z
- 计算e值的和he。
- 使用循环计算权重w,即将(1 - e(i))除以(cols - he)。该步骤将权重归一化,使得所有权重之和为1。
9 s+ T+ U4 f( V
该函数的作用是根据熵权法模型,计算决策矩阵中每个指标的权重。熵权法模型是一种多指标决策方法,通过标准化指标和概率计算,得到每个指标的权重,用于综合评价和决策分析。
1 s1 u R+ J5 w) Y- i& R
T7 g. {+ c& M# j
$ }) H$ f: F; X# F! J |